From 3c4291d3c0cee252375d687de39d9e48aa9ed87b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 10:33:38 -0700 Subject: [PATCH 01/34] feat: add node-running-content-map page, add to sidebars --- .../node-running/node-running-content-map.mdx | 30 +++++++++++++++++++ website/sidebars.js | 4 +++ 2 files changed, 34 insertions(+) create mode 100644 arbitrum-docs/node-running/node-running-content-map.mdx diff --git a/arbitrum-docs/node-running/node-running-content-map.mdx b/arbitrum-docs/node-running/node-running-content-map.mdx new file mode 100644 index 0000000000..311becc09e --- /dev/null +++ b/arbitrum-docs/node-running/node-running-content-map.mdx @@ -0,0 +1,30 @@ +--- +id: node-running-content-map +title: Run an Arbitrum node +sidebar_label: Run an Arbitrum node +--- + +import Card from '@site/src/components/Cards/Card'; + +# Run an Arbitrum node + +Learn how to run an Arbitrum node. + +
+ + +
diff --git a/website/sidebars.js b/website/sidebars.js index 92483af4a7..b1ec41e543 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -616,6 +616,10 @@ const sidebars = { type: 'category', label: 'Run an Arbitrum node', collapsed: true, + link: { + type: 'doc', + id: 'node-running/node-running-content-map', + }, items: [ { type: 'doc', From fd3c7978e5e8bcc7ac0c92d612e92526925da3cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 11:39:31 -0700 Subject: [PATCH 02/34] feat: improve stylesheet for cards --- website/src/components/Cards/Card.module.css | 57 ++++++++++---------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/website/src/components/Cards/Card.module.css b/website/src/components/Cards/Card.module.css index ca7aa6a7e6..d1ac3900bf 100644 --- a/website/src/components/Cards/Card.module.css +++ b/website/src/components/Cards/Card.module.css @@ -1,30 +1,29 @@ .card { - background-color: rgba(255,255,255,0.1); - border-radius: 8px; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); - padding: 20px; - min-height: 200px; - display: flex; - flex-direction: column; - justify-content: space-between; - text-align: center; - transition: transform 0.3s ease; - } - - .card:hover { - transform: translateY(-5px); - } - - .cardTitle { - font-size: 1.5rem; - margin-bottom: 10px; - } - - .cardLink { - text-decoration: none; - color: #007bff; - font-weight: bold; - margin-top: auto; /* Push the link to the bottom */ - display: inline-block; - } - \ No newline at end of file + background-color: rgba(255, 255, 255, 0.1); + border-radius: 8px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + padding: 20px; + min-height: 150px; + display: flex; + flex-direction: column; + justify-content: space-between; + text-align: center; + transition: transform 0.3s ease; +} + +.card:hover { + transform: translateY(-5px); +} + +.cardTitle { + font-size: 1.5rem; + margin-bottom: 10px; +} + +.cardH3 { + color: rgba(23, 32, 42, 100); +} + +.cardP { + color: rgba(23, 32, 42, 0.7); +} From 7ff0b5651a797d3ed31ed72581a7f120ccb14f8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 11:40:14 -0700 Subject: [PATCH 03/34] feat: apply style sheet to Card component --- website/src/components/Cards/Card.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/website/src/components/Cards/Card.js b/website/src/components/Cards/Card.js index 1581db66f7..c6939ea875 100644 --- a/website/src/components/Cards/Card.js +++ b/website/src/components/Cards/Card.js @@ -7,13 +7,12 @@ function Card({ title, description, to, href }) { const linkProps = isExternal ? { href } : { to }; return ( -
-

{title}

-

{description}

- - Learn more → - -
+ +
+

{title}

+

{description}

+
+ ); } From aeb158cb47bb0d31b37667f53a9856e53e55a129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 12:16:09 -0700 Subject: [PATCH 04/34] feat: color scheme for dark mode --- website/src/components/Cards/Card.module.css | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/website/src/components/Cards/Card.module.css b/website/src/components/Cards/Card.module.css index d1ac3900bf..b83182a2f6 100644 --- a/website/src/components/Cards/Card.module.css +++ b/website/src/components/Cards/Card.module.css @@ -11,6 +11,15 @@ transition: transform 0.3s ease; } +[data-theme='dark'] .card { + color: #ffffff; +} + +[data-theme='dark'] .cardH3, +[data-theme='dark'] .cardP { + color: #ffffff; +} + .card:hover { transform: translateY(-5px); } From 8eebfcf28bebc43cbc9be238ca2eb057785c4699 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 16:06:04 -0700 Subject: [PATCH 05/34] feat: add additional pages to map --- .../node-running/node-running-content-map.mdx | 41 +++++++++++++++++-- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/arbitrum-docs/node-running/node-running-content-map.mdx b/arbitrum-docs/node-running/node-running-content-map.mdx index 311becc09e..aca6074e9e 100644 --- a/arbitrum-docs/node-running/node-running-content-map.mdx +++ b/arbitrum-docs/node-running/node-running-content-map.mdx @@ -19,12 +19,47 @@ Learn how to run an Arbitrum node. > + + + + + + + From d59a2a4bbd85607ce7dc08f4177b3bcc97c24006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 17:27:49 -0700 Subject: [PATCH 06/34] fix: ensure relative links open a new tab --- website/src/components/Cards/Card.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/src/components/Cards/Card.js b/website/src/components/Cards/Card.js index c6939ea875..7a48205f6a 100644 --- a/website/src/components/Cards/Card.js +++ b/website/src/components/Cards/Card.js @@ -2,9 +2,9 @@ import React from 'react'; import Link from '@docusaurus/Link'; import styles from './Card.module.css'; -function Card({ title, description, to, href }) { +function Card({ title, description, to, href, target }) { const isExternal = href !== undefined; - const linkProps = isExternal ? { href } : { to }; + const linkProps = isExternal ? { href, target } : { to, target }; return ( From 22a3095b82e243c1972906343ac25c118deb0cc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 17:28:36 -0700 Subject: [PATCH 07/34] fix: use relative links for each card --- .../node-running/node-running-content-map.mdx | 62 ++++++++++++------- 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/arbitrum-docs/node-running/node-running-content-map.mdx b/arbitrum-docs/node-running/node-running-content-map.mdx index aca6074e9e..2389e38be3 100644 --- a/arbitrum-docs/node-running/node-running-content-map.mdx +++ b/arbitrum-docs/node-running/node-running-content-map.mdx @@ -9,7 +9,6 @@ import Card from '@site/src/components/Cards/Card'; # Run an Arbitrum node Learn how to run an Arbitrum node. -
- + - + - - - - -
From 58a633808eef71d1ceedf739c229995b180aa12f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 17:29:16 -0700 Subject: [PATCH 08/34] feat: rename "quickstart" > "node-types" with title: "What node should I run". This naming matches the page content better --- website/sidebars.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/sidebars.js b/website/sidebars.js index b1ec41e543..2e5e00747f 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -628,8 +628,8 @@ const sidebars = { }, { type: 'doc', - id: 'run-arbitrum-node/quickstart', - label: 'Quickstart', + id: 'run-arbitrum-node/node-types', + label: 'What node should I run?', }, { type: 'doc', From 2074d40d486ea7d8ca9f9bb127d4c0fc88ff1515 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 17:31:02 -0700 Subject: [PATCH 09/34] fix: rename quickstart file to "node-types" with relevant metadata --- .../{02-quickstart.md => 02-node-types.md} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename arbitrum-docs/run-arbitrum-node/{02-quickstart.md => 02-node-types.md} (96%) diff --git a/arbitrum-docs/run-arbitrum-node/02-quickstart.md b/arbitrum-docs/run-arbitrum-node/02-node-types.md similarity index 96% rename from arbitrum-docs/run-arbitrum-node/02-quickstart.md rename to arbitrum-docs/run-arbitrum-node/02-node-types.md index d270e03f65..b73cec8871 100644 --- a/arbitrum-docs/run-arbitrum-node/02-quickstart.md +++ b/arbitrum-docs/run-arbitrum-node/02-node-types.md @@ -1,10 +1,10 @@ --- -title: 'Quickstart: Run a node' +title: 'What node should I run?' description: Learn more about what type of ARb node one needs to run. author-objective: Build a quickstart that helps readers understand why they might want to run a specific type of an Arbitrum node. reader-audience: Moderately-technical readers who are familiar with command lines, but not Ethereum / Arbitrum infrastructure -reader-task: Run a node with minimal effort and maximum understanding -content_type: quickstart +reader-task: Learn about the different types of Arbitrum nodes and understand the benefits and trade-offs of each type. +content_type: overview --- import PublicPreviewBannerPartial from '../partials/_public-preview-banner-partial.mdx'; From 25d3560961600e1a1c5236ba6fa4be6ad9eb6c6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 17:50:08 -0700 Subject: [PATCH 10/34] fix: ensure the stylus overview page opens relative URLs in a new tab --- arbitrum-docs/stylus/stylus-overview.md | 30 +++++++++++++++++-------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/arbitrum-docs/stylus/stylus-overview.md b/arbitrum-docs/stylus/stylus-overview.md index add8516640..e1fe72b0c3 100644 --- a/arbitrum-docs/stylus/stylus-overview.md +++ b/arbitrum-docs/stylus/stylus-overview.md @@ -20,61 +20,73 @@ Let's learn how to write contracts with Stylus! From 129e87f9f27bbeb3f52d39db282b4feb0062915f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 17:50:59 -0700 Subject: [PATCH 11/34] fix: reduce cards height --- website/src/components/Cards/Card.module.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/src/components/Cards/Card.module.css b/website/src/components/Cards/Card.module.css index b83182a2f6..25aca2652f 100644 --- a/website/src/components/Cards/Card.module.css +++ b/website/src/components/Cards/Card.module.css @@ -3,7 +3,7 @@ border-radius: 8px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); padding: 20px; - min-height: 150px; + min-height: 50px; display: flex; flex-direction: column; justify-content: space-between; From 2fa639fb1594d49c12b6b8948f814028b82ecf49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 18:06:38 -0700 Subject: [PATCH 12/34] feat: add feed relay pages to map page --- .../node-running/node-running-content-map.mdx | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/arbitrum-docs/node-running/node-running-content-map.mdx b/arbitrum-docs/node-running/node-running-content-map.mdx index 2389e38be3..2c41dc6e5c 100644 --- a/arbitrum-docs/node-running/node-running-content-map.mdx +++ b/arbitrum-docs/node-running/node-running-content-map.mdx @@ -34,12 +34,24 @@ Learn how to run an Arbitrum node. href="/run-arbitrum-node/run-local-dev-node" target="_blank" /> + + + + From b9d55b8a43a183e7a4005feba7892ec91dd64f27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 18:12:36 -0700 Subject: [PATCH 13/34] fix: rename "stylus-overview" to "stylus-content-map" + add to sidebar --- .../stylus/{stylus-overview.md => stylus-content-map.mdx} | 2 +- website/sidebars.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename arbitrum-docs/stylus/{stylus-overview.md => stylus-content-map.mdx} (99%) diff --git a/arbitrum-docs/stylus/stylus-overview.md b/arbitrum-docs/stylus/stylus-content-map.mdx similarity index 99% rename from arbitrum-docs/stylus/stylus-overview.md rename to arbitrum-docs/stylus/stylus-content-map.mdx index e1fe72b0c3..7ff1449ffe 100644 --- a/arbitrum-docs/stylus/stylus-overview.md +++ b/arbitrum-docs/stylus/stylus-content-map.mdx @@ -1,5 +1,5 @@ --- -id: stylus-overview +id: stylus-content-map title: Write Stylus Contracts sidebar_label: Write Stylus contracts --- diff --git a/website/sidebars.js b/website/sidebars.js index 2e5e00747f..bca7611ec2 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -462,7 +462,7 @@ const sidebars = { collapsed: true, link: { type: 'doc', - id: 'stylus/stylus-overview', + id: 'stylus/stylus-content-map', }, items: [ { From 188432b34e727ba80b15ccdcd6565c2b4bb1b809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 18:20:30 -0700 Subject: [PATCH 14/34] feat: add troubleshooting and FAQ to mapping page --- .../node-running/node-running-content-map.mdx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/arbitrum-docs/node-running/node-running-content-map.mdx b/arbitrum-docs/node-running/node-running-content-map.mdx index 2c41dc6e5c..16abcb0c4a 100644 --- a/arbitrum-docs/node-running/node-running-content-map.mdx +++ b/arbitrum-docs/node-running/node-running-content-map.mdx @@ -100,4 +100,16 @@ Learn how to run an Arbitrum node. href="/run-arbitrum-node/arbos-releases/overview" target="_blank" /> + + From f61b86175eab60b562a0710dbad9e9bf7059972d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 18:54:37 -0700 Subject: [PATCH 15/34] feat: add submap page for sequencer-related content --- .../node-running/node-running-content-map.mdx | 24 +++--------- .../node-running/sequencer-content-map.mdx | 38 +++++++++++++++++++ website/sidebars.js | 4 ++ 3 files changed, 48 insertions(+), 18 deletions(-) create mode 100644 arbitrum-docs/node-running/sequencer-content-map.mdx diff --git a/arbitrum-docs/node-running/node-running-content-map.mdx b/arbitrum-docs/node-running/node-running-content-map.mdx index 16abcb0c4a..4345686b5d 100644 --- a/arbitrum-docs/node-running/node-running-content-map.mdx +++ b/arbitrum-docs/node-running/node-running-content-map.mdx @@ -64,6 +64,12 @@ Learn how to run an Arbitrum node. href="/run-arbitrum-node/more-types/run-classic-node" target="_blank" /> + - - - + + + + + diff --git a/website/sidebars.js b/website/sidebars.js index bca7611ec2..27968e439e 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -713,6 +713,10 @@ const sidebars = { type: 'category', label: 'Sequencer', collapsed: true, + link: { + type: 'doc', + id: 'node-running/sequencer-content-map', + }, items: [ { type: 'doc', From 6b8372b94122f5cafb06f77df34e6bf511f790e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 10 Oct 2024 19:15:25 -0700 Subject: [PATCH 16/34] fix: broken link to former "node quickstart" --- vercel.json | 1624 ++++++++--------- .../src/components/HomepageFeatures/index.tsx | 2 +- 2 files changed, 813 insertions(+), 813 deletions(-) diff --git a/vercel.json b/vercel.json index d6d28c32db..f52a6268bd 100644 --- a/vercel.json +++ b/vercel.json @@ -1,814 +1,814 @@ { - "redirects": [ - { - "source": "/(bold/bold-gentle-introduction/?)", - "destination": "/how-arbitrum-works/bold/gentle-introduction", - "permanent": false - }, - { - "source": "/(bold/concepts/public-preview-expectations/?)", - "destination": "/how-arbitrum-works/bold/public-preview-expectations", - "permanent": false - }, - { - "source": "/(proving/challenge-manager/?)", - "destination": "/how-arbitrum-works/fraud-proofs/challenge-manager", - "permanent": false - }, - { - "source": "/(proving/osp-assumptions/?)", - "destination": "/how-arbitrum-works/fraud-proofs/osp-assumptions", - "permanent": false - }, - { - "source": "/(proving/wasm-to-wavm/?)", - "destination": "/how-arbitrum-works/fraud-proofs/wasm-wavm", - "permanent": false - }, - { - "source": "/(proving/wavm-custom-opcodes/?)", - "destination": "/how-arbitrum-works/fraud-proofs/wavm-custom-opcodes", - "permanent": false - }, - { - "source": "/(proving/wavm-floats/?)", - "destination": "/how-arbitrum-works/fraud-proofs/wavm-floats", - "permanent": false - }, - { - "source": "/(proving/wavm-modules/?)", - "destination": "/how-arbitrum-works/fraud-proofs/wavm-modules", - "permanent": false - }, - { - "source": "/(arbos/geth/?)", - "destination": "/how-arbitrum-works/arbos/geth", - "permanent": false - }, - { - "source": "/(arbos/?)", - "destination": "/how-arbitrum-works/arbos/introduction", - "permanent": false - }, - { - "source": "/(arbos/l2-to-l1-messaging/?)", - "destination": "/how-arbitrum-works/arbos/l2-l1-messaging", - "permanent": false - }, - { - "source": "/(arbos/l1-to-l2-messaging/?)", - "destination": "/how-arbitrum-works/arbos/l1-l2-messaging", - "permanent": false - }, - { - "source": "/(assertion-tree/?)", - "destination": "/how-arbitrum-works/assertion-tree", - "permanent": false - }, - { - "source": "/(inside-arbitrum-nitro/?)", - "destination": "/how-arbitrum-works/inside-arbitrum-nitro", - "permanent": false - }, - { - "source": "/(arbos/l1-pricing/?)", - "destination": "/how-arbitrum-works/l1-gas-pricing", - "permanent": false - }, - { - "source": "/(arbos/gas/?)", - "destination": "/how-arbitrum-works/gas-fees", - "permanent": false - }, - { - "source": "/(inside-anytrust/?)", - "destination": "/how-arbitrum-works/inside-anytrust", - "permanent": false - }, - { - "source": "/(why-nitro/?)", - "destination": "/how-arbitrum-works/why-nitro", - "permanent": false - }, - { - "source": "/(tx-lifecycle/?)", - "destination": "/how-arbitrum-works/tx-lifecycle", - "permanent": false - }, - { - "source": "/(node-running/troubleshooting-running-nodes/?)", - "destination": "/run-arbitrum-node/troubleshooting", - "permanent": false - }, - { - "source": "/(node-running/how-tos/migrate-state-and-history-from-classic/?)", - "destination": "/run-arbitrum-node/nitro/02-migrate-state-and-history-from-classic", - "permanent": false - }, - { - "source": "/(node-running/how-tos/build-nitro-locally/?)", - "destination": "/run-arbitrum-node/nitro/build-nitro-locally", - "permanent": false - }, - { - "source": "/(node-running/how-tos/running-a-sequencer-coordinator-manager/?)", - "destination": "/run-arbitrum-node/sequencer/run-sequencer-coordination-manager", - "permanent": false - }, - { - "source": "/(node-running/how-tos/read-sequencer-feed/?)", - "destination": "/run-arbitrum-node/sequencer/read-sequencer-feed", - "permanent": false - }, - { - "source": "/(node-running/how-tos/running-a-feed-relay/?)", - "destination": "/run-arbitrum-node/sequencer/run-feed-relay", - "permanent": false - }, - { - "source": "/(node-running/how-tos/data-availability-committee/configure-the-dac-in-your-chain/?)", - "destination": "/run-arbitrum-node/data-availability-committees/configure-dac", - "permanent": false - }, - { - "source": "/(node-running/how-tos/data-availability-committee/deploy-a-mirror-das/?)", - "destination": "/run-arbitrum-node/data-availability-committees/deploy-mirror-das", - "permanent": false - }, - { - "source": "/(node-running/how-tos/data-availability-committee/deploy-a-das/?)", - "destination": "/run-arbitrum-node/data-availability-committees/deploy-das", - "permanent": false - }, - { - "source": "/(node-running/how-tos/data-availability-committee/introduction/?)", - "destination": "/run-arbitrum-node/data-availability-committees/get-started", - "permanent": false - }, - { - "source": "/(node-running/how-tos/running-a-classic-node/?)", - "destination": "/run-arbitrum-node/more-types/run-classic-node", - "permanent": false - }, - { - "source": "/(node-running/how-tos/running-a-validator/?)", - "destination": "/run-arbitrum-node/more-types/run-validator-node", - "permanent": false - }, - { - "source": "/(node-running/how-tos/running-an-archive-node/?)", - "destination": "/run-arbitrum-node/more-types/run-archive-node", - "permanent": false - }, - { - "source": "/(node-running/reference/arbos-software-releases/arbos20/?)", - "destination": "/run-arbitrum-node/arbos-releases/arbos20", - "permanent": false - }, - { - "source": "/(node-running/reference/arbos-software-releases/arbos11/?)", - "destination": "/run-arbitrum-node/arbos-releases/arbos11", - "permanent": false - }, - { - "source": "/(node-running/reference/arbos-software-releases/overview/?)", - "destination": "/run-arbitrum-node/arbos-releases/overview", - "permanent": false - }, - { - "source": "/(node-running/reference/ethereum-beacon-rpc-providers/?)", - "destination": "/run-arbitrum-node/l1-ethereum-beacon-chain-rpc-providers", - "permanent": false - }, - { - "source": "/(node-running/how-tos/local-dev-node/?)", - "destination": "/run-arbitrum-node/run-local-dev-node", - "permanent": false - }, - { - "source": "/(node-running/how-tos/running-a-full-node/?)", - "destination": "/run-arbitrum-node/run-full-node", - "permanent": false - }, - { - "source": "/(node-running/quickstart-running-a-node/?)", - "destination": "/run-arbitrum-node/quickstart", - "permanent": false - }, - { - "source": "/(node-running/gentle-introduction-run-node/?)", - "destination": "/run-arbitrum-node/overview", - "permanent": false - }, - { - "source": "/(bridge-tokens/concepts/usdc-concept/?)", - "destination": "/arbitrum-bridge/usdc-arbitrum-one", - "permanent": false - }, - { - "source": "/(for-users/troubleshooting-users/?)", - "destination": "/arbitrum-bridge/troubleshooting", - "permanent": false - }, - { - "source": "/(getting-started-users/?)", - "destination": "/arbitrum-bridge/quickstart", - "permanent": false - }, - { - "source": "/(mainnet-risks/?)", - "destination": "/build-decentralized-apps/reference/mainnet-risks", - "permanent": false - }, - { - "source": "/(for-devs/dev-tools-and-resources/debugging-tools/?)", - "destination": "/build-decentralized-apps/reference/debugging-tools", - "permanent": false - }, - { - "source": "/(for-devs/dev-tools-and-resources/monitoring-tools-block-explorers/?)", - "destination": "/build-decentralized-apps/reference/monitoring-tools-block-explorers", - "permanent": false - }, - { - "source": "/(for-devs/dev-tools-and-resources/web3-libraries-tools/?)", - "destination": "/build-decentralized-apps/reference/web3-libraries-tools", - "permanent": false - }, - { - "source": "/(for-devs/dev-tools-and-resources/development-frameworks/?)", - "destination": "/build-decentralized-apps/reference/development-frameworks", - "permanent": false - }, - { - "source": "/(for-devs/chain-params/?)", - "destination": "/build-decentralized-apps/reference/chain-params", - "permanent": false - }, - { - "source": "/(for-devs/useful-addresses/?)", - "destination": "/build-decentralized-apps/reference/useful-addresses", - "permanent": false - }, - { - "source": "/(node-running/node-providers/?)", - "destination": "/build-decentralized-apps/reference/node-providers", - "permanent": false - }, - { - "source": "/(for-devs/concepts/token-bridge/token-bridge-erc20/?)", - "destination": "/build-decentralized-apps/token-bridging/token-bridge-erc20", - "permanent": false - }, - { - "source": "/(for-devs/concepts/token-bridge/token-bridge-ether/?)", - "destination": "/build-decentralized-apps/token-bridging/token-bridge-ether", - "permanent": false - }, - { - "source": "/(devs-how-tos/bridge-tokens/how-to-bridge-tokens-custom-gateway/?)", - "destination": "/build-decentralized-apps/token-bridging/how-to-bridge-tokens-custom-gateway", - "permanent": false - }, - { - "source": "/(devs-how-tos/bridge-tokens/how-to-bridge-tokens-generic-custom/?)", - "destination": "/build-decentralized-apps/token-bridging/how-to-bridge-tokens-generic-custom", - "permanent": false - }, - { - "source": "/(devs-how-tos/bridge-tokens/how-to-bridge-tokens-standard/?)", - "destination": "/build-decentralized-apps/token-bridging/how-to-bridge-tokens-standard", - "permanent": false - }, - { - "source": "/(devs-how-tos/bridge-tokens/how-to-bridge-tokens-overview/?)", - "destination": "/build-decentralized-apps/token-bridging/get-started", - "permanent": false - }, - { - "source": "/(for-devs/concepts/token-bridge/token-bridge-overview/?)", - "destination": "/build-decentralized-apps/token-bridging/overview", - "permanent": false - }, - { - "source": "/(for-devs/dev-tools-and-resources/nodeinterface/?)", - "destination": "/build-decentralized-apps/nodeinterface/reference", - "permanent": false - }, - { - "source": "/(for-devs/concepts/nodeinterface/?)", - "destination": "/build-decentralized-apps/nodeinterface/overview", - "permanent": false - }, - { - "source": "/(for-devs/dev-tools-and-resources/precompiles/?)", - "destination": "/build-decentralized-apps/precompiles/reference", - "permanent": false - }, - { - "source": "/(for-devs/concepts/precompiles/?)", - "destination": "/build-decentralized-apps/precompiles/overview", - "permanent": false - }, - { - "source": "/(for-devs/dev-tools-and-resources/oracles/?)", - "destination": "/build-decentralized-apps/oracles/reference", - "permanent": false - }, - { - "source": "/(devs-how-tos/how-to-use-oracles/?)", - "destination": "/build-decentralized-apps/oracles/how-to-use-oracles", - "permanent": false - }, - { - "source": "/(for-devs/concepts/oracles/?)", - "destination": "/build-decentralized-apps/oracles/overview", - "permanent": false - }, - { - "source": "/(for-devs/concepts/differences-between-arbitrum-ethereum/solidity-support/?)", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/solidity-support", - "permanent": false - }, - { - "source": "/(for-devs/concepts/differences-between-arbitrum-ethereum/rpc-methods/?)", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/rpc-methods", - "permanent": false - }, - { - "source": "/(for-devs/concepts/differences-between-arbitrum-ethereum/block-numbers-and-time/?)", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/block-numbers-and-time", - "permanent": false - }, - { - "source": "/(for-devs/concepts/differences-between-arbitrum-ethereum/overview/?)", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", - "permanent": false - }, - { - "source": "/(for-devs/cross-chain-messsaging/?)", - "destination": "/build-decentralized-apps/cross-chain-messaging", - "permanent": false - }, - { - "source": "/(for-devs/concepts/public-chains/?)", - "destination": "/build-decentralized-apps/public-chains", - "permanent": false - }, - { - "source": "/(devs-how-tos/how-to-estimate-gas/?)", - "destination": "/build-decentralized-apps/how-to-estimate-gas", - "permanent": false - }, - { - "source": "/(for-devs/quickstart-solidity-hardhat/?)", - "destination": "/build-decentralized-apps/quickstart-solidity-hardhat", - "permanent": false - }, - { - "source": "/(node-running/reference/software-releases/?)", - "destination": "/run-arbitrum-node/arbos-releases/overview", - "permanent": false - }, - { - "source": "/(intro/?)", - "destination": "/welcome/arbitrum-gentle-introduction", - "permanent": false - }, - { - "source": "/(for-devs/gentle-introduction-dapps/?)", - "destination": "/welcome/arbitrum-gentle-introduction", - "permanent": false - }, - { - "source": "/", - "destination": "/welcome/get-started", - "permanent": false - }, - { - "source": "/(arb-specific-things/?)", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", - "permanent": false - }, - { - "source": "/(stylus/?)", - "destination": "/stylus/stylus-gentle-introduction", - "permanent": false - }, - { - "source": "/stylus/(rust-sdk-guide/?)", - "destination": "/stylus/reference/rust-sdk-guide", - "permanent": false - }, - { - "source": "/docs/(mainnet/?)", - "destination": "/build-decentralized-apps/reference/mainnet-risks", - "permanent": false - }, - { - "source": "/docs/(mainnet-beta/?)", - "destination": "/build-decentralized-apps/reference/mainnet-risks", - "permanent": false - }, - { - "source": "/migration/dapp-migration", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", - "permanent": false - }, - { - "source": "/migration/dapp_migration", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", - "permanent": false - }, - { - "source": "/migration/state-migration", - "destination": "/run-arbitrum-node/nitro/migrate-state-and-history-from-classic", - "permanent": false - }, - { - "source": "/docs/public_chains", - "destination": "/for-devs/concepts/public-chains", - "permanent": false - }, - { - "source": "/docs/inside_arbitrum", - "destination": "/how-arbitrum-works/inside-arbitrum-nitro", - "permanent": false - }, - { - "source": "/docs/l1_l2_messages", - "destination": "/how-arbitrum-works/arbos/l1-l2-messaging", - "permanent": false - }, - { - "source": "/docs/bridging_assets", - "destination": "/build-decentralized-apps/token-bridging/token-bridge-erc20", - "permanent": false - }, - { - "source": "/asset-bridging", - "destination": "/build-decentralized-apps/token-bridging/token-bridge-erc20", - "permanent": false - }, - { - "source": "/devs-how-tos/bridge-tokens/how-to-bridge-tokens-custom-generic", - "destination": "/build-decentralized-apps/token-bridging/how-to-bridge-tokens-generic-custom", - "permanent": false - }, - { - "source": "/docs/glossary", - "destination": "/intro/glossary", - "permanent": false - }, - { - "source": "/docs/anytrust", - "destination": "/how-arbitrum-works/inside-anytrust", - "permanent": false - }, - { - "source": "/docs/node_providers", - "destination": "/build-decentralized-apps/reference/node-providers", - "permanent": false - }, - { - "source": "/docs/useful_addresses", - "destination": "/build-decentralized-apps/reference/useful-addresses", - "permanent": false - }, - { - "source": "/docs/running_node", - "destination": "/run-arbitrum-node/run-full-node", - "permanent": false - }, - { - "source": "/docs/running_nitro_node", - "destination": "/run-arbitrum-node/run-full-node", - "permanent": false - }, - { - "source": "/docs/running_goerli_nitro_node", - "destination": "/run-arbitrum-node/run-full-node", - "permanent": false - }, - { - "source": "/docs/running_rinkeby_nitro_node", - "destination": "/run-arbitrum-node/run-full-node", - "permanent": false - }, - { - "source": "/docs/public_testnet", - "destination": "/for-devs/concepts/public-chains", - "permanent": false - }, - { - "source": "/docs/public_nitro_testnet", - "destination": "/for-devs/concepts/public-chains", - "permanent": false - }, - { - "source": "/docs/public_nitro_devnet", - "destination": "/for-devs/concepts/public-chains", - "permanent": false - }, - { - "source": "/docs/developer_quickstart", - "destination": "/welcome/get-started", - "permanent": false - }, - { - "source": "/docs/installation", - "destination": "/run-arbitrum-node/run-full-node", - "permanent": false - }, - { - "source": "/docs/rollup_basics", - "destination": "/intro", - "permanent": false - }, - { - "source": "/docs/tutorials", - "destination": "/for-devs/quickstart-solidity-hardhat", - "permanent": false - }, - { - "source": "/docs/security_considerations", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", - "permanent": false - }, - { - "source": "/docs/frontend_integration", - "destination": "/for-devs/quickstart-solidity-hardhat", - "permanent": false - }, - { - "source": "/docs/contract_deployment", - "destination": "/for-devs/quickstart-solidity-hardhat", - "permanent": false - }, - { - "source": "/getting-started-devs", - "destination": "/for-devs/quickstart-solidity-hardhat", - "permanent": false - }, - { - "source": "/docs/arbsys", - "destination": "/build-decentralized-apps/precompiles/reference#arbsys", - "permanent": false - }, - { - "source": "/arbos/precompiles", - "destination": "/build-decentralized-apps/precompiles/reference", - "permanent": false - }, - { - "source": "/arbos/common-precompiles", - "destination": "/build-decentralized-apps/precompiles/reference", - "permanent": false - }, - { - "source": "/docs/finality", - "destination": "/how-arbitrum-works/tx-lifecycle", - "permanent": false - }, - { - "source": "/docs/withdrawals", - "destination": "/how-arbitrum-works/tx-lifecycle", - "permanent": false - }, - { - "source": "/docs/differences_overview", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", - "permanent": false - }, - { - "source": "/docs/special_features", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", - "permanent": false - }, - { - "source": "/docs/solidity_support", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/solidity-support", - "permanent": false - }, - { - "source": "/docs/time_in_arbitrum", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/block-numbers-and-time", - "permanent": false - }, - { - "source": "/arbitrum-ethereum-differences", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", - "permanent": false - }, - { - "source": "/solidity-support", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/solidity-support", - "permanent": false - }, - { - "source": "/time", - "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/block-numbers-and-time", - "permanent": false - }, - { - "source": "/docs/censorship_resistance", - "destination": "/how-arbitrum-works/sequencer", - "permanent": false - }, - { - "source": "/docs/arbgas", - "destination": "/how-arbitrum-works/gas-fees", - "permanent": false - }, - { - "source": "/docs/arbos", - "destination": "/how-arbitrum-works/arbos/introduction", - "permanent": false - }, - { - "source": "/docs/tx_lifecycle", - "destination": "/how-arbitrum-works/tx-lifecycle", - "permanent": false - }, - { - "source": "/docs/rollup_protocol", - "destination": "/how-arbitrum-works/assertion-tree", - "permanent": false - }, - { - "source": "/docs/avm_design", - "destination": "/how-arbitrum-works/inside-arbitrum-nitro", - "permanent": false - }, - { - "source": "/docs/dispute_resolution", - "destination": "/how-arbitrum-works/fraud-proofs/challenge-manager", - "permanent": false - }, - { - "source": "/docs/arbos_formats", - "destination": "/how-arbitrum-works/arbos/introduction", - "permanent": false - }, - { - "source": "/docs/avm_specification", - "destination": "/how-arbitrum-works/fraud-proofs/wavm-custom-opcodes", - "permanent": false - }, - { - "source": "/faqs/anytrust-vs-rollup", - "destination": "/faqs/protocol-faqs#q-rollup-vs-anytrust", - "permanent": false - }, - { - "source": "/faqs/how-fees", - "destination": "/faqs/gas-faqs", - "permanent": false - }, - { - "source": "/faqs/what-if-dispute", - "destination": "/faqs/protocol-faqs#q-dispute-reorg", - "permanent": false - }, - { - "source": "/faqs/seq-or-val", - "destination": "/faqs/protocol-faqs#q-seq-vs-val", - "permanent": false - }, - { - "source": "/faqs/beta-status", - "destination": "/build-decentralized-apps/reference/mainnet-risks", - "permanent": false - }, - { - "source": "/faqs/the-merge", - "destination": "/welcome/get-started", - "permanent": false - }, - { - "source": "/faqs/faqs-index", - "destination": "/learn-more/faq", - "permanent": false - }, - { - "source": "/faqs/gas-faqs", - "destination": "/learn-more/faq", - "permanent": false - }, - { - "source": "/faqs/nodes-faqs", - "destination": "/node-running/faq", - "permanent": false - }, - { - "source": "/faqs/x-chain-faqs", - "destination": "/learn-more/faq", - "permanent": false - }, - { - "source": "/faqs/protocol-faqs", - "destination": "/learn-more/faq", - "permanent": false - }, - { - "source": "/faqs/tooling-faqs", - "destination": "/for-devs/troubleshooting-building", - "permanent": false - }, - { - "source": "/faqs/misc-faqs", - "destination": "/learn-more/faq", - "permanent": false - }, - { - "source": "/public-chains", - "destination": "/for-devs/concepts/public-chains", - "permanent": false - }, - { - "source": "/useful-addresses", - "destination": "/build-decentralized-apps/reference/useful-addresses", - "permanent": false - }, - { - "source": "/for-devs/dev-tools-and-resources/overview", - "destination": "/build-decentralized-apps/reference/node-providers", - "permanent": false - }, - { - "source": "/for-devs/dev-tools-and-resources/overview", - "destination": "/build-decentralized-apps/reference/node-providers", - "permanent": false - }, - { - "source": "/node-running/running-a-classic-node", - "destination": "/run-arbitrum-node/more-types/run-classic-node", - "permanent": false - }, - { - "source": "/node-running/running-an-archive-node", - "destination": "/run-arbitrum-node/more-types/run-archive-node", - "permanent": false - }, - { - "source": "/node-running/local-dev-node", - "destination": "/run-arbitrum-node/run-local-dev-node", - "permanent": false - }, - { - "source": "/node-running/running-a-feed-relay", - "destination": "/run-arbitrum-node/sequencer/run-feed-relay", - "permanent": false - }, - { - "source": "/node-running/running-a-validator", - "destination": "/run-arbitrum-node/more-types/run-validator-node", - "permanent": false - }, - { - "source": "/node-running/read-sequencer-feed", - "destination": "/run-arbitrum-node/sequencer/read-sequencer-feed", - "permanent": false - }, - { - "source": "/node-running/build-nitro-locally", - "destination": "/run-arbitrum-node/nitro/build-nitro-locally", - "permanent": false - }, - { - "source": "/node-running/running-a-node", - "destination": "/run-arbitrum-node/run-full-node", - "permanent": false - }, - { - "source": "/das/daserver-instructions", - "destination": "/run-arbitrum-node/data-availability-committees/get-started", - "permanent": false - }, - { - "source": "/node-running/how-tos/running-a-daserver", - "destination": "/run-arbitrum-node/data-availability-committees/get-started", - "permanent": false - }, - { - "source": "/(launch-orbit-chain/reference/command-line-options/?)", - "destination": "/node-running/how-tos/running-an-orbit-node", - "permanent": false - }, - { - "source": "/(launch-orbit-chain/concepts/anytrust-orbit-chain-keyset-generation/?)", - "destination": "/run-arbitrum-node/data-availability-committees/configure-dac", - "permanent": false - }, - { - "source": "/(stylus/how-tos/local-stylus-dev-node/?)", - "destination": "/run-arbitrum-node/run-local-dev-node", - "permanent": false - }, - { - "source": "/(run-arbitrum-node/arbos-releases/arbos31/?)", - "destination": "/run-arbitrum-node/arbos-releases/arbos32", - "permanent": false - } - ] + "redirects": [ + { + "source": "/(bold/bold-gentle-introduction/?)", + "destination": "/how-arbitrum-works/bold/gentle-introduction", + "permanent": false + }, + { + "source": "/(bold/concepts/public-preview-expectations/?)", + "destination": "/how-arbitrum-works/bold/public-preview-expectations", + "permanent": false + }, + { + "source": "/(proving/challenge-manager/?)", + "destination": "/how-arbitrum-works/fraud-proofs/challenge-manager", + "permanent": false + }, + { + "source": "/(proving/osp-assumptions/?)", + "destination": "/how-arbitrum-works/fraud-proofs/osp-assumptions", + "permanent": false + }, + { + "source": "/(proving/wasm-to-wavm/?)", + "destination": "/how-arbitrum-works/fraud-proofs/wasm-wavm", + "permanent": false + }, + { + "source": "/(proving/wavm-custom-opcodes/?)", + "destination": "/how-arbitrum-works/fraud-proofs/wavm-custom-opcodes", + "permanent": false + }, + { + "source": "/(proving/wavm-floats/?)", + "destination": "/how-arbitrum-works/fraud-proofs/wavm-floats", + "permanent": false + }, + { + "source": "/(proving/wavm-modules/?)", + "destination": "/how-arbitrum-works/fraud-proofs/wavm-modules", + "permanent": false + }, + { + "source": "/(arbos/geth/?)", + "destination": "/how-arbitrum-works/arbos/geth", + "permanent": false + }, + { + "source": "/(arbos/?)", + "destination": "/how-arbitrum-works/arbos/introduction", + "permanent": false + }, + { + "source": "/(arbos/l2-to-l1-messaging/?)", + "destination": "/how-arbitrum-works/arbos/l2-l1-messaging", + "permanent": false + }, + { + "source": "/(arbos/l1-to-l2-messaging/?)", + "destination": "/how-arbitrum-works/arbos/l1-l2-messaging", + "permanent": false + }, + { + "source": "/(assertion-tree/?)", + "destination": "/how-arbitrum-works/assertion-tree", + "permanent": false + }, + { + "source": "/(inside-arbitrum-nitro/?)", + "destination": "/how-arbitrum-works/inside-arbitrum-nitro", + "permanent": false + }, + { + "source": "/(arbos/l1-pricing/?)", + "destination": "/how-arbitrum-works/l1-gas-pricing", + "permanent": false + }, + { + "source": "/(arbos/gas/?)", + "destination": "/how-arbitrum-works/gas-fees", + "permanent": false + }, + { + "source": "/(inside-anytrust/?)", + "destination": "/how-arbitrum-works/inside-anytrust", + "permanent": false + }, + { + "source": "/(why-nitro/?)", + "destination": "/how-arbitrum-works/why-nitro", + "permanent": false + }, + { + "source": "/(tx-lifecycle/?)", + "destination": "/how-arbitrum-works/tx-lifecycle", + "permanent": false + }, + { + "source": "/(node-running/troubleshooting-running-nodes/?)", + "destination": "/run-arbitrum-node/troubleshooting", + "permanent": false + }, + { + "source": "/(node-running/how-tos/migrate-state-and-history-from-classic/?)", + "destination": "/run-arbitrum-node/nitro/02-migrate-state-and-history-from-classic", + "permanent": false + }, + { + "source": "/(node-running/how-tos/build-nitro-locally/?)", + "destination": "/run-arbitrum-node/nitro/build-nitro-locally", + "permanent": false + }, + { + "source": "/(node-running/how-tos/running-a-sequencer-coordinator-manager/?)", + "destination": "/run-arbitrum-node/sequencer/run-sequencer-coordination-manager", + "permanent": false + }, + { + "source": "/(node-running/how-tos/read-sequencer-feed/?)", + "destination": "/run-arbitrum-node/sequencer/read-sequencer-feed", + "permanent": false + }, + { + "source": "/(node-running/how-tos/running-a-feed-relay/?)", + "destination": "/run-arbitrum-node/sequencer/run-feed-relay", + "permanent": false + }, + { + "source": "/(node-running/how-tos/data-availability-committee/configure-the-dac-in-your-chain/?)", + "destination": "/run-arbitrum-node/data-availability-committees/configure-dac", + "permanent": false + }, + { + "source": "/(node-running/how-tos/data-availability-committee/deploy-a-mirror-das/?)", + "destination": "/run-arbitrum-node/data-availability-committees/deploy-mirror-das", + "permanent": false + }, + { + "source": "/(node-running/how-tos/data-availability-committee/deploy-a-das/?)", + "destination": "/run-arbitrum-node/data-availability-committees/deploy-das", + "permanent": false + }, + { + "source": "/(node-running/how-tos/data-availability-committee/introduction/?)", + "destination": "/run-arbitrum-node/data-availability-committees/get-started", + "permanent": false + }, + { + "source": "/(node-running/how-tos/running-a-classic-node/?)", + "destination": "/run-arbitrum-node/more-types/run-classic-node", + "permanent": false + }, + { + "source": "/(node-running/how-tos/running-a-validator/?)", + "destination": "/run-arbitrum-node/more-types/run-validator-node", + "permanent": false + }, + { + "source": "/(node-running/how-tos/running-an-archive-node/?)", + "destination": "/run-arbitrum-node/more-types/run-archive-node", + "permanent": false + }, + { + "source": "/(node-running/reference/arbos-software-releases/arbos20/?)", + "destination": "/run-arbitrum-node/arbos-releases/arbos20", + "permanent": false + }, + { + "source": "/(node-running/reference/arbos-software-releases/arbos11/?)", + "destination": "/run-arbitrum-node/arbos-releases/arbos11", + "permanent": false + }, + { + "source": "/(node-running/reference/arbos-software-releases/overview/?)", + "destination": "/run-arbitrum-node/arbos-releases/overview", + "permanent": false + }, + { + "source": "/(node-running/reference/ethereum-beacon-rpc-providers/?)", + "destination": "/run-arbitrum-node/l1-ethereum-beacon-chain-rpc-providers", + "permanent": false + }, + { + "source": "/(node-running/how-tos/local-dev-node/?)", + "destination": "/run-arbitrum-node/run-local-dev-node", + "permanent": false + }, + { + "source": "/(node-running/how-tos/running-a-full-node/?)", + "destination": "/run-arbitrum-node/run-full-node", + "permanent": false + }, + { + "source": "/(node-running/node-types/?)", + "destination": "/run-arbitrum-node/node-types", + "permanent": false + }, + { + "source": "/(node-running/gentle-introduction-run-node/?)", + "destination": "/run-arbitrum-node/overview", + "permanent": false + }, + { + "source": "/(bridge-tokens/concepts/usdc-concept/?)", + "destination": "/arbitrum-bridge/usdc-arbitrum-one", + "permanent": false + }, + { + "source": "/(for-users/troubleshooting-users/?)", + "destination": "/arbitrum-bridge/troubleshooting", + "permanent": false + }, + { + "source": "/(getting-started-users/?)", + "destination": "/arbitrum-bridge/quickstart", + "permanent": false + }, + { + "source": "/(mainnet-risks/?)", + "destination": "/build-decentralized-apps/reference/mainnet-risks", + "permanent": false + }, + { + "source": "/(for-devs/dev-tools-and-resources/debugging-tools/?)", + "destination": "/build-decentralized-apps/reference/debugging-tools", + "permanent": false + }, + { + "source": "/(for-devs/dev-tools-and-resources/monitoring-tools-block-explorers/?)", + "destination": "/build-decentralized-apps/reference/monitoring-tools-block-explorers", + "permanent": false + }, + { + "source": "/(for-devs/dev-tools-and-resources/web3-libraries-tools/?)", + "destination": "/build-decentralized-apps/reference/web3-libraries-tools", + "permanent": false + }, + { + "source": "/(for-devs/dev-tools-and-resources/development-frameworks/?)", + "destination": "/build-decentralized-apps/reference/development-frameworks", + "permanent": false + }, + { + "source": "/(for-devs/chain-params/?)", + "destination": "/build-decentralized-apps/reference/chain-params", + "permanent": false + }, + { + "source": "/(for-devs/useful-addresses/?)", + "destination": "/build-decentralized-apps/reference/useful-addresses", + "permanent": false + }, + { + "source": "/(node-running/node-providers/?)", + "destination": "/build-decentralized-apps/reference/node-providers", + "permanent": false + }, + { + "source": "/(for-devs/concepts/token-bridge/token-bridge-erc20/?)", + "destination": "/build-decentralized-apps/token-bridging/token-bridge-erc20", + "permanent": false + }, + { + "source": "/(for-devs/concepts/token-bridge/token-bridge-ether/?)", + "destination": "/build-decentralized-apps/token-bridging/token-bridge-ether", + "permanent": false + }, + { + "source": "/(devs-how-tos/bridge-tokens/how-to-bridge-tokens-custom-gateway/?)", + "destination": "/build-decentralized-apps/token-bridging/how-to-bridge-tokens-custom-gateway", + "permanent": false + }, + { + "source": "/(devs-how-tos/bridge-tokens/how-to-bridge-tokens-generic-custom/?)", + "destination": "/build-decentralized-apps/token-bridging/how-to-bridge-tokens-generic-custom", + "permanent": false + }, + { + "source": "/(devs-how-tos/bridge-tokens/how-to-bridge-tokens-standard/?)", + "destination": "/build-decentralized-apps/token-bridging/how-to-bridge-tokens-standard", + "permanent": false + }, + { + "source": "/(devs-how-tos/bridge-tokens/how-to-bridge-tokens-overview/?)", + "destination": "/build-decentralized-apps/token-bridging/get-started", + "permanent": false + }, + { + "source": "/(for-devs/concepts/token-bridge/token-bridge-overview/?)", + "destination": "/build-decentralized-apps/token-bridging/overview", + "permanent": false + }, + { + "source": "/(for-devs/dev-tools-and-resources/nodeinterface/?)", + "destination": "/build-decentralized-apps/nodeinterface/reference", + "permanent": false + }, + { + "source": "/(for-devs/concepts/nodeinterface/?)", + "destination": "/build-decentralized-apps/nodeinterface/overview", + "permanent": false + }, + { + "source": "/(for-devs/dev-tools-and-resources/precompiles/?)", + "destination": "/build-decentralized-apps/precompiles/reference", + "permanent": false + }, + { + "source": "/(for-devs/concepts/precompiles/?)", + "destination": "/build-decentralized-apps/precompiles/overview", + "permanent": false + }, + { + "source": "/(for-devs/dev-tools-and-resources/oracles/?)", + "destination": "/build-decentralized-apps/oracles/reference", + "permanent": false + }, + { + "source": "/(devs-how-tos/how-to-use-oracles/?)", + "destination": "/build-decentralized-apps/oracles/how-to-use-oracles", + "permanent": false + }, + { + "source": "/(for-devs/concepts/oracles/?)", + "destination": "/build-decentralized-apps/oracles/overview", + "permanent": false + }, + { + "source": "/(for-devs/concepts/differences-between-arbitrum-ethereum/solidity-support/?)", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/solidity-support", + "permanent": false + }, + { + "source": "/(for-devs/concepts/differences-between-arbitrum-ethereum/rpc-methods/?)", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/rpc-methods", + "permanent": false + }, + { + "source": "/(for-devs/concepts/differences-between-arbitrum-ethereum/block-numbers-and-time/?)", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/block-numbers-and-time", + "permanent": false + }, + { + "source": "/(for-devs/concepts/differences-between-arbitrum-ethereum/overview/?)", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", + "permanent": false + }, + { + "source": "/(for-devs/cross-chain-messsaging/?)", + "destination": "/build-decentralized-apps/cross-chain-messaging", + "permanent": false + }, + { + "source": "/(for-devs/concepts/public-chains/?)", + "destination": "/build-decentralized-apps/public-chains", + "permanent": false + }, + { + "source": "/(devs-how-tos/how-to-estimate-gas/?)", + "destination": "/build-decentralized-apps/how-to-estimate-gas", + "permanent": false + }, + { + "source": "/(for-devs/quickstart-solidity-hardhat/?)", + "destination": "/build-decentralized-apps/quickstart-solidity-hardhat", + "permanent": false + }, + { + "source": "/(node-running/reference/software-releases/?)", + "destination": "/run-arbitrum-node/arbos-releases/overview", + "permanent": false + }, + { + "source": "/(intro/?)", + "destination": "/welcome/arbitrum-gentle-introduction", + "permanent": false + }, + { + "source": "/(for-devs/gentle-introduction-dapps/?)", + "destination": "/welcome/arbitrum-gentle-introduction", + "permanent": false + }, + { + "source": "/", + "destination": "/welcome/get-started", + "permanent": false + }, + { + "source": "/(arb-specific-things/?)", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", + "permanent": false + }, + { + "source": "/(stylus/?)", + "destination": "/stylus/stylus-gentle-introduction", + "permanent": false + }, + { + "source": "/stylus/(rust-sdk-guide/?)", + "destination": "/stylus/reference/rust-sdk-guide", + "permanent": false + }, + { + "source": "/docs/(mainnet/?)", + "destination": "/build-decentralized-apps/reference/mainnet-risks", + "permanent": false + }, + { + "source": "/docs/(mainnet-beta/?)", + "destination": "/build-decentralized-apps/reference/mainnet-risks", + "permanent": false + }, + { + "source": "/migration/dapp-migration", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", + "permanent": false + }, + { + "source": "/migration/dapp_migration", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", + "permanent": false + }, + { + "source": "/migration/state-migration", + "destination": "/run-arbitrum-node/nitro/migrate-state-and-history-from-classic", + "permanent": false + }, + { + "source": "/docs/public_chains", + "destination": "/for-devs/concepts/public-chains", + "permanent": false + }, + { + "source": "/docs/inside_arbitrum", + "destination": "/how-arbitrum-works/inside-arbitrum-nitro", + "permanent": false + }, + { + "source": "/docs/l1_l2_messages", + "destination": "/how-arbitrum-works/arbos/l1-l2-messaging", + "permanent": false + }, + { + "source": "/docs/bridging_assets", + "destination": "/build-decentralized-apps/token-bridging/token-bridge-erc20", + "permanent": false + }, + { + "source": "/asset-bridging", + "destination": "/build-decentralized-apps/token-bridging/token-bridge-erc20", + "permanent": false + }, + { + "source": "/devs-how-tos/bridge-tokens/how-to-bridge-tokens-custom-generic", + "destination": "/build-decentralized-apps/token-bridging/how-to-bridge-tokens-generic-custom", + "permanent": false + }, + { + "source": "/docs/glossary", + "destination": "/intro/glossary", + "permanent": false + }, + { + "source": "/docs/anytrust", + "destination": "/how-arbitrum-works/inside-anytrust", + "permanent": false + }, + { + "source": "/docs/node_providers", + "destination": "/build-decentralized-apps/reference/node-providers", + "permanent": false + }, + { + "source": "/docs/useful_addresses", + "destination": "/build-decentralized-apps/reference/useful-addresses", + "permanent": false + }, + { + "source": "/docs/running_node", + "destination": "/run-arbitrum-node/run-full-node", + "permanent": false + }, + { + "source": "/docs/running_nitro_node", + "destination": "/run-arbitrum-node/run-full-node", + "permanent": false + }, + { + "source": "/docs/running_goerli_nitro_node", + "destination": "/run-arbitrum-node/run-full-node", + "permanent": false + }, + { + "source": "/docs/running_rinkeby_nitro_node", + "destination": "/run-arbitrum-node/run-full-node", + "permanent": false + }, + { + "source": "/docs/public_testnet", + "destination": "/for-devs/concepts/public-chains", + "permanent": false + }, + { + "source": "/docs/public_nitro_testnet", + "destination": "/for-devs/concepts/public-chains", + "permanent": false + }, + { + "source": "/docs/public_nitro_devnet", + "destination": "/for-devs/concepts/public-chains", + "permanent": false + }, + { + "source": "/docs/developer_quickstart", + "destination": "/welcome/get-started", + "permanent": false + }, + { + "source": "/docs/installation", + "destination": "/run-arbitrum-node/run-full-node", + "permanent": false + }, + { + "source": "/docs/rollup_basics", + "destination": "/intro", + "permanent": false + }, + { + "source": "/docs/tutorials", + "destination": "/for-devs/quickstart-solidity-hardhat", + "permanent": false + }, + { + "source": "/docs/security_considerations", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", + "permanent": false + }, + { + "source": "/docs/frontend_integration", + "destination": "/for-devs/quickstart-solidity-hardhat", + "permanent": false + }, + { + "source": "/docs/contract_deployment", + "destination": "/for-devs/quickstart-solidity-hardhat", + "permanent": false + }, + { + "source": "/getting-started-devs", + "destination": "/for-devs/quickstart-solidity-hardhat", + "permanent": false + }, + { + "source": "/docs/arbsys", + "destination": "/build-decentralized-apps/precompiles/reference#arbsys", + "permanent": false + }, + { + "source": "/arbos/precompiles", + "destination": "/build-decentralized-apps/precompiles/reference", + "permanent": false + }, + { + "source": "/arbos/common-precompiles", + "destination": "/build-decentralized-apps/precompiles/reference", + "permanent": false + }, + { + "source": "/docs/finality", + "destination": "/how-arbitrum-works/tx-lifecycle", + "permanent": false + }, + { + "source": "/docs/withdrawals", + "destination": "/how-arbitrum-works/tx-lifecycle", + "permanent": false + }, + { + "source": "/docs/differences_overview", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", + "permanent": false + }, + { + "source": "/docs/special_features", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", + "permanent": false + }, + { + "source": "/docs/solidity_support", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/solidity-support", + "permanent": false + }, + { + "source": "/docs/time_in_arbitrum", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/block-numbers-and-time", + "permanent": false + }, + { + "source": "/arbitrum-ethereum-differences", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/comparison-overview", + "permanent": false + }, + { + "source": "/solidity-support", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/solidity-support", + "permanent": false + }, + { + "source": "/time", + "destination": "/build-decentralized-apps/arbitrum-vs-ethereum/block-numbers-and-time", + "permanent": false + }, + { + "source": "/docs/censorship_resistance", + "destination": "/how-arbitrum-works/sequencer", + "permanent": false + }, + { + "source": "/docs/arbgas", + "destination": "/how-arbitrum-works/gas-fees", + "permanent": false + }, + { + "source": "/docs/arbos", + "destination": "/how-arbitrum-works/arbos/introduction", + "permanent": false + }, + { + "source": "/docs/tx_lifecycle", + "destination": "/how-arbitrum-works/tx-lifecycle", + "permanent": false + }, + { + "source": "/docs/rollup_protocol", + "destination": "/how-arbitrum-works/assertion-tree", + "permanent": false + }, + { + "source": "/docs/avm_design", + "destination": "/how-arbitrum-works/inside-arbitrum-nitro", + "permanent": false + }, + { + "source": "/docs/dispute_resolution", + "destination": "/how-arbitrum-works/fraud-proofs/challenge-manager", + "permanent": false + }, + { + "source": "/docs/arbos_formats", + "destination": "/how-arbitrum-works/arbos/introduction", + "permanent": false + }, + { + "source": "/docs/avm_specification", + "destination": "/how-arbitrum-works/fraud-proofs/wavm-custom-opcodes", + "permanent": false + }, + { + "source": "/faqs/anytrust-vs-rollup", + "destination": "/faqs/protocol-faqs#q-rollup-vs-anytrust", + "permanent": false + }, + { + "source": "/faqs/how-fees", + "destination": "/faqs/gas-faqs", + "permanent": false + }, + { + "source": "/faqs/what-if-dispute", + "destination": "/faqs/protocol-faqs#q-dispute-reorg", + "permanent": false + }, + { + "source": "/faqs/seq-or-val", + "destination": "/faqs/protocol-faqs#q-seq-vs-val", + "permanent": false + }, + { + "source": "/faqs/beta-status", + "destination": "/build-decentralized-apps/reference/mainnet-risks", + "permanent": false + }, + { + "source": "/faqs/the-merge", + "destination": "/welcome/get-started", + "permanent": false + }, + { + "source": "/faqs/faqs-index", + "destination": "/learn-more/faq", + "permanent": false + }, + { + "source": "/faqs/gas-faqs", + "destination": "/learn-more/faq", + "permanent": false + }, + { + "source": "/faqs/nodes-faqs", + "destination": "/node-running/faq", + "permanent": false + }, + { + "source": "/faqs/x-chain-faqs", + "destination": "/learn-more/faq", + "permanent": false + }, + { + "source": "/faqs/protocol-faqs", + "destination": "/learn-more/faq", + "permanent": false + }, + { + "source": "/faqs/tooling-faqs", + "destination": "/for-devs/troubleshooting-building", + "permanent": false + }, + { + "source": "/faqs/misc-faqs", + "destination": "/learn-more/faq", + "permanent": false + }, + { + "source": "/public-chains", + "destination": "/for-devs/concepts/public-chains", + "permanent": false + }, + { + "source": "/useful-addresses", + "destination": "/build-decentralized-apps/reference/useful-addresses", + "permanent": false + }, + { + "source": "/for-devs/dev-tools-and-resources/overview", + "destination": "/build-decentralized-apps/reference/node-providers", + "permanent": false + }, + { + "source": "/for-devs/dev-tools-and-resources/overview", + "destination": "/build-decentralized-apps/reference/node-providers", + "permanent": false + }, + { + "source": "/node-running/running-a-classic-node", + "destination": "/run-arbitrum-node/more-types/run-classic-node", + "permanent": false + }, + { + "source": "/node-running/running-an-archive-node", + "destination": "/run-arbitrum-node/more-types/run-archive-node", + "permanent": false + }, + { + "source": "/node-running/local-dev-node", + "destination": "/run-arbitrum-node/run-local-dev-node", + "permanent": false + }, + { + "source": "/node-running/running-a-feed-relay", + "destination": "/run-arbitrum-node/sequencer/run-feed-relay", + "permanent": false + }, + { + "source": "/node-running/running-a-validator", + "destination": "/run-arbitrum-node/more-types/run-validator-node", + "permanent": false + }, + { + "source": "/node-running/read-sequencer-feed", + "destination": "/run-arbitrum-node/sequencer/read-sequencer-feed", + "permanent": false + }, + { + "source": "/node-running/build-nitro-locally", + "destination": "/run-arbitrum-node/nitro/build-nitro-locally", + "permanent": false + }, + { + "source": "/node-running/running-a-node", + "destination": "/run-arbitrum-node/run-full-node", + "permanent": false + }, + { + "source": "/das/daserver-instructions", + "destination": "/run-arbitrum-node/data-availability-committees/get-started", + "permanent": false + }, + { + "source": "/node-running/how-tos/running-a-daserver", + "destination": "/run-arbitrum-node/data-availability-committees/get-started", + "permanent": false + }, + { + "source": "/(launch-orbit-chain/reference/command-line-options/?)", + "destination": "/node-running/how-tos/running-an-orbit-node", + "permanent": false + }, + { + "source": "/(launch-orbit-chain/concepts/anytrust-orbit-chain-keyset-generation/?)", + "destination": "/run-arbitrum-node/data-availability-committees/configure-dac", + "permanent": false + }, + { + "source": "/(stylus/how-tos/local-stylus-dev-node/?)", + "destination": "/run-arbitrum-node/run-local-dev-node", + "permanent": false + }, + { + "source": "/(run-arbitrum-node/arbos-releases/arbos31/?)", + "destination": "/run-arbitrum-node/arbos-releases/arbos32", + "permanent": false + } + ] } diff --git a/website/src/components/HomepageFeatures/index.tsx b/website/src/components/HomepageFeatures/index.tsx index d44ce5d383..2846e6dfcd 100644 --- a/website/src/components/HomepageFeatures/index.tsx +++ b/website/src/components/HomepageFeatures/index.tsx @@ -27,7 +27,7 @@ const FeatureList: FeatureItem[] = [ { title: 'Quickstart: Run a node', Svg: require('@site/static/img/node.svg').default, - href: '/run-arbitrum-node/quickstart', + href: '/run-arbitrum-node/node-types', description: 'Learn how to run a node to interact with any Arbitrum network.', }, { From f3e09afed2dfbe89ab1d5b7a7ccbe63cd56af500 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 31 Oct 2024 14:58:47 -0700 Subject: [PATCH 17/34] feat: delete unneeded "overview" page --- .../{02-node-types.md => 01-node-types.md} | 0 arbitrum-docs/run-arbitrum-node/01-overview.md | 18 ------------------ ...03-run-full-node.md => 02-run-full-node.md} | 0 ...al-dev-node.md => 03-run-local-dev-node.md} | 0 ...-l1-ethereum-beacon-chain-rpc-providers.md} | 0 ...roubleshooting.md => 05-troubleshooting.md} | 0 6 files changed, 18 deletions(-) rename arbitrum-docs/run-arbitrum-node/{02-node-types.md => 01-node-types.md} (100%) delete mode 100644 arbitrum-docs/run-arbitrum-node/01-overview.md rename arbitrum-docs/run-arbitrum-node/{03-run-full-node.md => 02-run-full-node.md} (100%) rename arbitrum-docs/run-arbitrum-node/{04-run-local-dev-node.md => 03-run-local-dev-node.md} (100%) rename arbitrum-docs/run-arbitrum-node/{05-l1-ethereum-beacon-chain-rpc-providers.md => 04-l1-ethereum-beacon-chain-rpc-providers.md} (100%) rename arbitrum-docs/run-arbitrum-node/{06-troubleshooting.md => 05-troubleshooting.md} (100%) diff --git a/arbitrum-docs/run-arbitrum-node/02-node-types.md b/arbitrum-docs/run-arbitrum-node/01-node-types.md similarity index 100% rename from arbitrum-docs/run-arbitrum-node/02-node-types.md rename to arbitrum-docs/run-arbitrum-node/01-node-types.md diff --git a/arbitrum-docs/run-arbitrum-node/01-overview.md b/arbitrum-docs/run-arbitrum-node/01-overview.md deleted file mode 100644 index 6288e0f83d..0000000000 --- a/arbitrum-docs/run-arbitrum-node/01-overview.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: 'Arbitrum nodes overview' -description: "Arbitrum is a suite of Ethereum L2 scaling solutions supported by a decentralized network of nodes. This guide introduces you to Arbitrum's node types and how they work together to scale Ethereum." -author: mahsamoosavi ---- - -In order to be able to _interact with_ or _build applications on_ any of the Arbitrum chains, you need access to the corresponding Arbitrum node. Options are: - -- You can use third party node providers (see the list [here](/build-decentralized-apps/reference/01-node-providers.md)) to get RPC access to fully-managed nodes -- You can run your own Arbitrum node, especially if you want to always know the state of the Arbitrum chain - -Here, you can find resources that help you run different types of Arbitrum nodes: - -- Step-by-step instructions for running different Arbitrum nodes, including [full Nitro node](/run-arbitrum-node/03-run-full-node.md), [full Classic node](/run-arbitrum-node/more-types/03-run-classic-node.md), [local dev node](/run-arbitrum-node/04-run-local-dev-node.md), [feed relay](/run-arbitrum-node/sequencer/01-run-feed-relay.md), and [validator](/run-arbitrum-node/more-types/02-run-validator-node.md) -- Step-by-step instructions for how to [read the sequencer feed](/run-arbitrum-node/sequencer/02-read-sequencer-feed.md), [build the Nitro locally](/run-arbitrum-node/nitro/01-build-nitro-locally.md) and [run the sequencer coordinator manager UI tool](/run-arbitrum-node/sequencer/03-run-sequencer-coordination-manager.md) -- Step-by-step instructions for [how to configure a Data Availability Committee](/run-arbitrum-node/data-availability-committees/01-get-started.md) -- [Troubleshooting page](/run-arbitrum-node/06-troubleshooting.md) -- [Frequently asked questions](/node-running/faq.md) diff --git a/arbitrum-docs/run-arbitrum-node/03-run-full-node.md b/arbitrum-docs/run-arbitrum-node/02-run-full-node.md similarity index 100% rename from arbitrum-docs/run-arbitrum-node/03-run-full-node.md rename to arbitrum-docs/run-arbitrum-node/02-run-full-node.md diff --git a/arbitrum-docs/run-arbitrum-node/04-run-local-dev-node.md b/arbitrum-docs/run-arbitrum-node/03-run-local-dev-node.md similarity index 100% rename from arbitrum-docs/run-arbitrum-node/04-run-local-dev-node.md rename to arbitrum-docs/run-arbitrum-node/03-run-local-dev-node.md diff --git a/arbitrum-docs/run-arbitrum-node/05-l1-ethereum-beacon-chain-rpc-providers.md b/arbitrum-docs/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.md similarity index 100% rename from arbitrum-docs/run-arbitrum-node/05-l1-ethereum-beacon-chain-rpc-providers.md rename to arbitrum-docs/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.md diff --git a/arbitrum-docs/run-arbitrum-node/06-troubleshooting.md b/arbitrum-docs/run-arbitrum-node/05-troubleshooting.md similarity index 100% rename from arbitrum-docs/run-arbitrum-node/06-troubleshooting.md rename to arbitrum-docs/run-arbitrum-node/05-troubleshooting.md From 360c8a5c8c637254a26fb754f6ce19cead507281 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 31 Oct 2024 15:00:12 -0700 Subject: [PATCH 18/34] This is a combination of 3 commits. --- .../run-arbitrum-node/01-node-types.md | 60 ---- .../run-arbitrum-node/02-run-full-node.md | 121 -------- .../03-run-local-dev-node.md | 154 ---------- ...-l1-ethereum-beacon-chain-rpc-providers.md | 40 --- .../run-arbitrum-node/05-troubleshooting.md | 285 ------------------ website/sidebars.js | 7 +- 6 files changed, 1 insertion(+), 666 deletions(-) delete mode 100644 arbitrum-docs/run-arbitrum-node/01-node-types.md delete mode 100644 arbitrum-docs/run-arbitrum-node/02-run-full-node.md delete mode 100644 arbitrum-docs/run-arbitrum-node/03-run-local-dev-node.md delete mode 100644 arbitrum-docs/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.md delete mode 100644 arbitrum-docs/run-arbitrum-node/05-troubleshooting.md diff --git a/arbitrum-docs/run-arbitrum-node/01-node-types.md b/arbitrum-docs/run-arbitrum-node/01-node-types.md deleted file mode 100644 index b73cec8871..0000000000 --- a/arbitrum-docs/run-arbitrum-node/01-node-types.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: 'What node should I run?' -description: Learn more about what type of ARb node one needs to run. -author-objective: Build a quickstart that helps readers understand why they might want to run a specific type of an Arbitrum node. -reader-audience: Moderately-technical readers who are familiar with command lines, but not Ethereum / Arbitrum infrastructure -reader-task: Learn about the different types of Arbitrum nodes and understand the benefits and trade-offs of each type. -content_type: overview ---- - -import PublicPreviewBannerPartial from '../partials/_public-preview-banner-partial.mdx'; - - - -:::info - -There is no protocol level incentive to run an Arbitum full node. If you’re interested in accessing an Arbitrum chain, but you don’t want to set up your own node, see our [RPC endpoints and providers](/build-decentralized-apps/reference/01-node-providers.md) to get RPC access to fully-managed nodes hosted by a third party provider. - -::: - -:::caution API security disclaimer - -When exposing API endpoints to the Internet or any untrusted/hostile network, the following risks may arise: - -- Increased risk of crashes due to OOM: - Exposing endpoints raises the risk of Out-of-Memory (OOM) crashes. -- Increased risk of not keeping up with chain progression: - Resource starvation (IO or CPU) may occur, leading to an inability to keep up with chain progression. - -We strongly advise against exposing API endpoints publicly. Users considering such exposure should exercise caution and implement the right measures to enhance resilience. -::: - -When it comes to interacting with the Arbitrum network, users have the option to run either a full node or an archive node. There are distinct advantages to running an Arbitrum full node. In this quickstart, we will explore the reasons why a user may prefer to run a full node instead of an archive node. By understanding the benefits and trade-offs of each type of node, users can make an informed decision based on their specific requirements and objectives. - -### Considerations for running an Arbitrum full node - -- Transaction validation and security: Running a full node allows users to independently validate transactions and verify the state of the Arbitrum blockchain. Users can have full confidence in the authenticity and integrity of the transactions they interact with. -- Reduced trust requirements: By running a full node, users can interact with the Arbitrum network without relying on third-party services or infrastructure. This reduces the need to trust external entities and mitigates the risk of potential centralized failures or vulnerabilities. -- Lower resource requirements: Compared to archive nodes, full nodes generally require fewer resources such as storage and computational power. This makes them more accessible to users with limited hardware capabilities or those operating on resource-constrained environments. - -For detailed instructions on how to run an Arbitrum full node, see [here](/run-arbitrum-node/03-run-full-node.md). - -### Considerations for running an Arbitrum archive node - -While full nodes offer numerous advantages, there are situations where running an archive node may be more appropriate. Archive nodes store the complete history of the Arbitrum network, making them suitable for users who require extensive historical data access or advanced analytical purposes. However, it's important to note that archive nodes are more resource-intensive, requiring significant storage capacity and computational power. - -For detailed instructions on how to run an Arbitrum archive node, see [here](/run-arbitrum-node/more-types/01-run-archive-node.md). - -### Considerations for running an Arbitrum classic node - -The significance of running an Arbitrum classic node is mainly applicable to individuals with specific needs for an archive node and access to classic-related commands. More details can be found [here](/run-arbitrum-node/more-types/01-run-archive-node.md). - -For detailed instructions on how to run an Arbitrum classic node, see [here](/run-arbitrum-node/more-types/03-run-classic-node.md). - -### Considerations for running a feed relay - -If you are running a single node, there is no requirement to set up a feed relay. However, if you have multiple nodes, it is highly recommended to have a single feed relay per datacenter. This setup offers several advantages such as reducing ingress fees and enhancing stability within the network. - -In the near future, feed endpoints will mandate compression using a custom dictionary. Therefore, if you plan to connect to a feed using anything other than a standard node, it is strongly advised to run a local feed relay. This will ensure that you have access to an uncompressed feed by default, maintaining optimal performance and compatibility. - -For detailed instructions on how to run a feed relay, see [here](/run-arbitrum-node/sequencer/01-run-feed-relay.md). diff --git a/arbitrum-docs/run-arbitrum-node/02-run-full-node.md b/arbitrum-docs/run-arbitrum-node/02-run-full-node.md deleted file mode 100644 index d254dcd179..0000000000 --- a/arbitrum-docs/run-arbitrum-node/02-run-full-node.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -title: 'How to run a full node (Nitro)' -description: Learn how to run an Arbitrum node on your local machine. -sidebar_position: 1 -content_type: how-to ---- - -:::info - -There is no protocol-level incentive to run an Arbitum full node. If you’re interested in accessing an Arbitrum chain but don’t want to set up your own node, see our [Node Providers](/build-decentralized-apps/reference/01-node-providers.md) to get RPC access to fully managed nodes hosted by a third-party provider. - -::: - -### Minimum hardware configuration - -Minimum hardware configuration required to set up a Nitro full node (not archival): - -- **RAM**: 16 GB -- **CPU**: 4 core CPU - - Single core performance is important. If the node is falling behind and a single core is 100% busy, it is recommended to update to a faster processor -- **Storage (last updated on April 2024)**: - - Arbitrum One: 560GB for a pruned node, growing at ~200GB per month (NVMe SSD drives are recommended) - - Arbitrum Nova: 400GB for a pruned node, growing at ~1.6TB per month (NVMe SSD drives are recommended) - -:::info - -These minimum requirements for RAM and CPU are recommended for nodes that process a small amount of RPC requests. For nodes that require processing multiple simultaneous requests, both RAM and number of CPU cores will need to be scaled with the amount of traffic being served. - -::: - -:::info - -The minimum storage requirements will change over time as the Nitro chain grows. Using more than the minimum requirements to run a robust full node is recommended. - -::: - -### Prerequisites - -:::caution Only use released versions - -Even though there are alpha and beta versions of the Arbitrum Nitro software, only release versions should be used when running your node. Running alpha or beta versions is not supported and might lead to unexpected behaviors. - -::: - -- Latest Docker Image: @latestNitroNodeImage@ -- Database snapshot (required for Arbitrum One, optional for other chains) - - Use the parameter `--init.latest `, accepted values: "archive" | "pruned" | "genesis". - - When running more than one node, it's easier to manually download the different parts of the snapshot, join them into a single archive, and host it locally for your nodes. You can then use `--init.url="file:///path/to/snapshot/in/container/snapshot-file.tar"` to use it. (For how to manually download the snapshot parts, please see [Downloading the snapshot manually](/run-arbitrum-node/nitro/03-nitro-database-snapshots.md#downloading-the-snapshot-manually)) - - This parameter is **required** when initializing an Arbitrum One node because the chain has _classic_ blocks. For the other chains, this parameter is optional. - - This parameter is ignored if the database already exists. - - Find more info in [Nitro database snapshots](/run-arbitrum-node/nitro/03-nitro-database-snapshots.md) - - You can find more snapshots on our [snapshot explorer](https://snapshot-explorer.arbitrum.io/) - -### Required parameters - -- L1 RPC URL - - Use the parameter `--parent-chain.connection.url=` for execution layer. - - If the chain is running [ArbOS 20](/run-arbitrum-node/arbos-releases/arbos20.md), additionally use the parameter `--parent-chain.blob-client.beacon-url=` for consensus layer. You can find a list of beacon chain RPC providers [here](/run-arbitrum-node/05-l1-ethereum-beacon-chain-rpc-providers.md). - - It must provide a standard layer 1 node RPC endpoint that you run yourself or from a node provider. - - Note: historical blob data is required for chains running [ArbOS 20](/run-arbitrum-node/arbos-releases/arbos20.md) to properly sync up if they are new or have been offline for more than 18 days. This means the consensus layer RPC endpoint you use may also need to provide historical blob data. Please see [Special notes on ArbOS 20: Atlas support for EIP-4844](/run-arbitrum-node/arbos-releases/arbos20.md#special-notes-on-arbos-20-atlas-support-for-eip-4844) for more details. - - Note: this parameter was called `--l1.url` in versions prior to `v2.1.0` - - Note: 8545 is usually the default port for the execution layer. For the Beacon endpoint port, you should connect to the correct port set on your parent chain's consensus client. -- L2 chain ID or name - - Use the parameter `--chain.id=` to set the L2 chain from its chain id. See [RPC endpoints and providers](/build-decentralized-apps/reference/01-node-providers.md#rpc-endpoints) for a list of Arbitrum chains and their respective L2 chain IDs. - - Alternatively, you can use the parameter `--chain.name=` to set the L2 chain from its name (options are: `arb1`, `nova` and `sepolia-rollup`) - - Note: this parameter was called --l2.chain-id and only accepted chain IDs in versions before `v2.1.0` - -### Important ports - -- RPC: `8547` -- Sequencer Feed: `9642` -- WebSocket: `8548` - - WS port `8548` needs extra args to be opened. Please use these flags: - - --ws.port=8548 - - --ws.addr=0.0.0.0 - - --ws.origins=\* - -### Putting it all together - -- When running the Docker image, an external volume should be mounted to persist the database across restarts. The mount point inside the docker image should be `/home/user/.arbitrum` -- Here is an example of how to run nitro-node: - - - Note that it is important that `/some/local/dir/arbitrum` already exists; otherwise, the directory might be created with `root` as owner, and the docker container won't be able to write to it - - ```shell - docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 @latestNitroNodeImage@ --parent-chain.connection.url https://l1-node:8545 --chain.id= --http.api=net,web3,eth --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* - ``` - - - Note that if you are running an L1 node on localhost, you may need to add `--network host` right after `docker run` to use docker host-based networking - - - When shutting down the Docker image, it is important to allow a graceful shutdown to save the current state to disk. Here is an example of how to do a graceful shutdown of all docker images currently running - - ```shell - docker stop --time=300 $(docker ps -aq) - ``` - -### Note on permissions - -- The Docker image is configured to run as non-root UID 1000. This means if you are running in Linux or OSX and you are getting permission errors when trying to run the docker image, run this command to allow all users to update the persistent folders - ```shell - mkdir /data/arbitrum - chmod -fR 777 /data/arbitrum - ``` - -### Watchtower mode - -- By default, the full node will run in Watchtower mode. This means that the node watches the on-chain assertions, and if it disagrees with them, it will log an error containing the string `found incorrect assertion in watchtower mode`. -- Watchtower mode adds a small amount of execution and memory overhead. You can deactivate this mode using the parameter `--node.staker.enable=false`. - -### Pruning - -- Pruning a full node refers to removing older, unnecessary data from the local copy of the blockchain that the node maintains to save disk space and slightly improve the node's efficiency. Pruning will remove all states from blocks older than the latest 128. -- You can activate pruning by using the parameter `--init.prune` and using "full" or "validator" as the value (depending on the type of node you are running). Remember that this process will happen upon starting the node and will not serve RPC requests while pruning. - -### Optional parameters - -Below, we listed the most commonly used parameters when running a node. You can also use the flag `--help` for a comprehensive list of the available parameters. - -import OptionalOrbitCompatibleCLIFlagsPartial from '../partials/_optional-orbit-compatible-cli-flags-partial.mdx'; - - diff --git a/arbitrum-docs/run-arbitrum-node/03-run-local-dev-node.md b/arbitrum-docs/run-arbitrum-node/03-run-local-dev-node.md deleted file mode 100644 index 1be6182d54..0000000000 --- a/arbitrum-docs/run-arbitrum-node/03-run-local-dev-node.md +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: 'How to run a local dev node' -description: Learn how to run an Arbitrum local dev node on your local machine. -author: jose-franco -sme: jose-franco -sidebar_position: 6 -content_type: how-to ---- - -A local Arbitrum Nitro dev node can help you deploy and test smart contracts in a fully controlled environment. This how-to walks you through the process of deploying and running a full development environment on your local machine that includes a Nitro dev node, a dev-mode geth L1, and multiple instances with different roles. - -Note that the node is now Stylus-enabled by default, and the setup instructions remain the same as for running a Stylus dev node. - -## Step 1. Install prerequisites - -You'll need [docker](https://docs.docker.com/get-docker/) and [docker compose](https://docs.docker.com/compose/) to run your node. Follow the instructions in their site to install them. - -## Step 2. Clone the [nitro-testnode](https://github.com/OffchainLabs/nitro-testnode) repo - -

You'll need the `release` branch.

- -```bash - `git clone -b release --recurse-submodules https://github.com/OffchainLabs/nitro-testnode.git && cd nitro-testnode` -``` - -## Step 3. Run your node - -```bash -./test-node.bash --init -``` - -## Step 4. Successive runs - -To relaunch the node after the first installation, run the following command. - -```bash -./test-node.bash -``` - -:::info Clear local data - -Note that running with the --init flag will clear all chain data and redeploy! - -::: - -## Rollup contract addresses and chain configuration - -You can obtain the rollup chain configuration by running the following command. The chain configuration also includes the addresses of the core contracts. - -```bash -docker exec nitro-testnode-sequencer-1 cat /config/l2_chain_info.json -``` - -You can find other available configuration files by running: - -```bash -docker exec nitro-testnode-sequencer-1 ls /config -``` - -## Token bridge - -An L1-L2 token bridge can be deployed by using the parameter `--tokenbridge`. The list of contracts can be found by running: - -```bash -docker compose run --entrypoint sh tokenbridge -c "cat l1l2_network.json" -``` - -## Running an L3 chain - -An L3 chain can be deployed on top of the L2 chain, by using the parameter `--l3node`. Its chain configuration can be found by running: - -```bash -docker exec nitro-testnode-sequencer-1 cat /config/l3_chain_info.json -``` - -When deploying an L3 chain, the following parameters are also available: - -`--l3-fee-token`: Uses a custom gas token for the L3 (symbol $APP), deployed on L2 at address `0x9b7c0fcc305ca36412f87fd6bd08c194909a7d4e` -`--l3-token-bridge`: Deploys an L2-L3 token bridge. The list of contracts can be found by running `docker compose run --entrypoint sh tokenbridge -c "cat l2l3_network.json"`. - -## Additional arguments - -You can find a list of additional arguments to use with `test-node.bash` by using `--help`. - -```bash -./test-node.bash --help -``` - -## Helper scripts - -The repository includes a set of helper scripts for basic actions like funding accounts or bridging funds. You can see a list of the available scripts by running: - -```bash -./test-node.bash script --help -``` - -If you want to see information of a particular script, you can add the name of the script to the help command. - -```bash -./test-node.bash script send-l1 --help -``` - -Here's an example of how to run the script that funds an address on L2. Replace `0x11223344556677889900` with the address you want to fund. - -```bash -./test-node.bash script send-l2 --to address_0x11223344556677889900 --ethamount 5 -``` - -## Blockscout - -Nitro comes with a local [Blockscout](https://www.blockscout.com/) block explorer. To access it, add the param `--blockscout` when running your node. - -```bash -./test-node.bash --blockscout -``` - -The block explorer will be available at `http://localhost:4000` - -## Default endpoints and addresses - -Node RPC endpoints are available at: - -| Node | Chain id | RPC endpoint | -| --------------------- | -------- | ------------------------------------------------- | -| L1 geth devnet | 1337 | `http://localhost:8545` | -| L2 nitro devnet | 412346 | `http://localhost:8547` and `ws://localhost:8548` | -| L3 nitro (if enabled) | 333333 | `http://localhost:3347` | - -Some important addresses: - -| Role | Public address | Private key | -| ------------------------------------------------ | -------------------------------------------- | -------------------------------------------------------------------- | -| Sequencer | `0xe2148eE53c0755215Df69b2616E552154EdC584f` | `0xcb5790da63720727af975f42c79f69918580209889225fa7128c92402a6d3a65` | -| Validator | `0x6A568afe0f82d34759347bb36F14A6bB171d2CBe` | `0x182fecf15bdf909556a0f617a63e05ab22f1493d25a9f1e27c228266c772a890` | -| L2 rollup owner | `0x5E1497dD1f08C87b2d8FE23e9AAB6c1De833D927` | `0xdc04c5399f82306ec4b4d654a342f40e2e0620fe39950d967e1e574b32d4dd36` | -| L3 rollup owner (if enabled) | `0x863c904166E801527125D8672442D736194A3362` | `0xecdf21cb41c65afb51f91df408b7656e2c8739a5877f2814add0afd780cc210e` | -| L3 sequencer (if enabled) | `0x3E6134aAD4C4d422FF2A4391Dc315c4DDf98D1a5` | `0x90f899754eb42949567d3576224bf533a20857bf0a60318507b75fcb3edc6f5f` | -| Dev account (prefunded with ETH in all networks) | `0x3f1Eae7D46d88F08fc2F8ed27FCb2AB183EB2d0E` | `0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659` | - -You can fund other addresses by using the scripts `send-l1` and `send-l2` as explained [here](#helper-scripts). - -:::caution Private keys publicly known - -Do not use any of these addresses in a production environment. - -::: - -## Optional parameters - -Here, We show a list of the parameters that might be useful when running a local devnode. You can also use the flag `./test-node.bash --help` to get them. - -import OptionalDevNodeCLIFlagsPartial from '../partials/_local-devnet-flags.md'; - - diff --git a/arbitrum-docs/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.md b/arbitrum-docs/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.md deleted file mode 100644 index 348ef7d102..0000000000 --- a/arbitrum-docs/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: 'L1 Ethereum beacon chain RPC providers' -author: dlee ---- - -import PublicPreviewBannerPartial from '../partials/_public-preview-banner-partial.mdx'; - - - -:::info Note -This reference document provides an overview of Ethereum beacon chain RPC providers for Arbitrum validators to use for accessing blob data following Ethereum's Dencun upgrade in March 2024. The list curated here is **not comprehensive and in no way does Offchain Labs endorse or benefit from your use of any of these providers.** -::: - -Following [Ethereum's Dencun upgrade in March 2024](https://eips.ethereum.org/EIPS/eip-7569), Layer 2 blockchains like Arbitrum will be able to roll up and post batches of transaction data on Ethereum in the form of a new transaction format called a Blob. This Blob data will be part of the beacon chain and is fully downloadable by all consensus nodes. This means that data stored in blobs are inaccessible by the EVM, unlike Calldata. - -### What does this mean for node operators? - -To run a node for an L2 Arbitrum chain (i.e. Arbitrum One, Arbitrum Nova, and L2 Orbit chains), your node will need access to blob data to sync up to the latest state of your Arbitrum L2 chain. Blob data on Ethereum is stored on the beacon chain and is inaccessible to the EVM, hence why dedicated RPC endpoints for the beacon chain will be required after the Dencun upgrade. You can find more details on node requirements in the [Run a full node guide](/run-arbitrum-node/03-run-full-node.md). - -Furthermore, new node operators joining a network or node operators who come online following an extended period of offline time will require access to _historical_ blob data to sync up to the latest state of their Arbitrum chain. - -Offchain Labs has plans to reduce a Nitro validator's reliance on historical blob data and will share updates on this effort in the future. - -### List of Ethereum beacon chain RPC providers - -| Provider | Mainnet Beacon chain APIs? | Mainnet Historical blob data? | Holesky Beacon chain APIs? | Sepolia Beacon chain APIs? | -| --------------------------------------------------------------------------- | -------------------------- | ----------------------------- | -------------------------- | -------------------------- | -| [Ankr](https://www.ankr.com/docs/rpc-service/chains/chains-api/eth-beacon/) | ✅ | ✅ | | | -| [Chainbase](https://chainbase.com/) | ✅ | | | | -| [Chainstack](https://docs.chainstack.com/reference/beacon-chain) | ✅ | ✅ | | ✅ | -| [Conduit](https://conduit.xyz/)\* | ✅ | ✅ | | | -| [BlastAPI](https://blastapi.io/public-api/ethereum) | | | ✅ | | -| [Nirvana Labs](https://nirvanalabs.io) | ✅ | ✅ | | | -| [NodeReal](https://nodereal.io/) | ✅ | | | | -| [QuickNode](https://www.quicknode.com/docs/ethereum) | ✅ | ✅ | ✅ | ✅ | -| [dRPC](https://drpc.org/chainlist/eth-beacon-chain) | ✅ | ✅ | ✅ | ✅ | - -Please reach out to these teams individually if you need assistance with setting up your validator with any of the above providers. - -**\*Case-by-case basis, please contact them directly for help** diff --git a/arbitrum-docs/run-arbitrum-node/05-troubleshooting.md b/arbitrum-docs/run-arbitrum-node/05-troubleshooting.md deleted file mode 100644 index 0556d1e9d6..0000000000 --- a/arbitrum-docs/run-arbitrum-node/05-troubleshooting.md +++ /dev/null @@ -1,285 +0,0 @@ ---- -title: 'Troubleshooting: Run a node' -author: symbolpunk ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Troubleshooting: Run a node - -The guidance displayed on this page will change based on your selected configuration: - -import MultidimensionalContentControlsPartial from '../partials/_multidimensional-content-controls-partial.mdx'; - - - -:::tip Thank you! - -At the end of this troubleshooting guide, you'll find a "Generate troubleshooting report" button. Clicking this button will generate a report that includes your selected configuration. You can include this report when asking for help. - -**Using this page to generate a troubleshooting report is helpful** because it gathers the information that we need in order to resolve your issue. - -::: - -### Step 1: Try the troubleshooting checklist - -If you're running into unexpected outputs or errors, the following checklist may help you independently resolve your issue. - -
-
-
-
- - -
-
- -

The guidance displayed on this page will change based on your selected configuration.

-
-
-
-
- - -
-
- - - - - - - -

- The How to run a full node (Nitro){' '} - may address your issue. -

-
- -

- - How to run a full node (Classic, pre-Nitro) - {' '} - may address your issue. -

-
- -

- The How to run a full node (Nitro){' '} - may address your issue. -

-
- -

- The How to run a full node (Nitro){' '} - may address your issue. -

-
- -

- The{' '} - How to run a local dev node{' '} - may address your issue. -

-
-
-
- -

- - How to run an archive node - {' '} - may address your issue. -

-
- -

- How to run a validator{' '} - may address your issue. -

-
-
-
-
-
-
- - -
-
- -

- Answers to frequently asked questions can be found in{' '} - Frequently asked questions: Run a node. -

-
-
-
-
- -### Step 2: Look for your scenario - -Common troubleshooting scenarios and solutions are detailed below. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ScenarioSolution
- You see Unindex transactions. - - This is expected behavior. You'll see this when your node removes old txlookup{' '} - indices. This is emitted from the base Geth node, so you'd see the same output from a - mainnet Geth node. -
- You see Head state missing, repairing. - - This is usually because your node shut down ungracefully. In most cases it will recover in - few minutes, but if it not, you may have to re-sync your node. Remember to shut down your - node gracefully with the following command:{' '} - docker stop —time=300 $(docker ps -aq). -
- You see failed to read inbox messages - - This is usually because either A) your L1 RPC is unreachable or B) your L1 node hasn't - finished syncing and an old L1 node's state that doesn't have our inbox contracts deployed - is being used. Check your L1 RPC sync status and connection status, or consider using - another L1 RPC to isolate the issue. -
Your local machine is running out of memory - Nitro (and Geth) can consume a lot of memory depending on request load. It's possible that - your machine may run out of memory when receiving tons of requests. -
- Your Arbitrum node can’t connect to your L1 node on localhost:8545 - - This is often because of a Docker port configuration issue. See - https://stackoverflow.com/questions/43884981/unable-to-connect-localhost-in-docker. -
- You specified your snapshot file path via the --init.url parameter, but the - snapshot file isn't found. - - This is usually because the snapshot file isn't mounted to your Docker container. Mount it - and change the file path to your Docker container’s mount point. -
- You get 403 errors from the feed URL. - - This often happens when Cloudflare attempts to block botnets and other malicious actors, but - accidentally ends up blocking node runners. -
- You see{' '} - - failed to get blobs: expected at least 6 blobs for slot `[slot_number]` but only got 0 - - - This often happens when you connect to a beacon chain endpoint while the blob you are - querying is expired. To resolve this error, connect to a beacon endpoint which supports - historical blob data (see{' '} - - List of Ethereum beacon chain RPC providers - - ). -
- - - -### Step 3: Generate a troubleshooting report - -1. Complete the above troubleshooting checklist. -2. Fill in the below form. -3. Click `Generate troubleshooting report`. -4. Copy and paste the **generated report text** when asking for support on [Discord](https://discord.gg/ZpZuw7p) or any other support channel. - -
- -import { GenerateTroubleshootingReportWidget } from '@site/src/components/GenerateTroubleshootingReportWidget.js'; - - - -
-

- Node startup command (make sure to remove any sensitive information like, i.e., private keys) -

- -

Unexpected output

- - Tip: Paste the ~100 lines of output before and including the - unexpected output you're asking about. You can use the following command to get the logs:{' '} - - docker logs --tail 100 YOUR_CONTAINER_ID - - - Generate troubleshooting report - -
- Complete the checklist above before generating... -
-
- - diff --git a/website/sidebars.js b/website/sidebars.js index 4812807147..412f63eed4 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -643,15 +643,10 @@ const sidebars = { id: 'node-running/node-running-content-map', }, items: [ - { - type: 'doc', - id: 'run-arbitrum-node/overview', - label: 'Overview', - }, { type: 'doc', id: 'run-arbitrum-node/node-types', - label: 'What node should I run?', + label: 'Overview', }, { type: 'doc', From 08f5f879faf21ac06281431241c20af5c8612fe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Thu, 31 Oct 2024 15:27:00 -0700 Subject: [PATCH 19/34] fix: revert file naming --- .../run-arbitrum-node/02-node-types.md | 62 ++++ .../run-arbitrum-node/03-run-full-node.md | 121 ++++++++ .../04-run-local-dev-node.md | 154 ++++++++++ ...-l1-ethereum-beacon-chain-rpc-providers.md | 40 +++ .../run-arbitrum-node/06-troubleshooting.md | 285 ++++++++++++++++++ 5 files changed, 662 insertions(+) create mode 100644 arbitrum-docs/run-arbitrum-node/02-node-types.md create mode 100644 arbitrum-docs/run-arbitrum-node/03-run-full-node.md create mode 100644 arbitrum-docs/run-arbitrum-node/04-run-local-dev-node.md create mode 100644 arbitrum-docs/run-arbitrum-node/05-l1-ethereum-beacon-chain-rpc-providers.md create mode 100644 arbitrum-docs/run-arbitrum-node/06-troubleshooting.md diff --git a/arbitrum-docs/run-arbitrum-node/02-node-types.md b/arbitrum-docs/run-arbitrum-node/02-node-types.md new file mode 100644 index 0000000000..eac08de72c --- /dev/null +++ b/arbitrum-docs/run-arbitrum-node/02-node-types.md @@ -0,0 +1,62 @@ +--- +title: 'Arbitrum nodes: an overview' +description: Learn more about what type of ARb node one needs to run. +author-objective: Build a quickstart that helps readers understand why they might want to run a specific type of an Arbitrum node. +reader-audience: Moderately-technical readers who are familiar with command lines, but not Ethereum / Arbitrum infrastructure +reader-task: Learn about the different types of Arbitrum nodes and understand the benefits and trade-offs of each type. +content_type: overview +--- + +import PublicPreviewBannerPartial from '../partials/_public-preview-banner-partial.mdx'; + + + +:::info + +There is no protocol level incentive to run an Arbitum full node. If you’re interested in accessing an Arbitrum chain, but you don’t want to set up your own node, see our [RPC endpoints and providers](/build-decentralized-apps/reference/01-node-providers.md) to get RPC access to fully-managed nodes hosted by a third party provider. + +::: + +:::caution API security disclaimer + +When exposing API endpoints to the Internet or any untrusted/hostile network, the following risks may arise: + +- Increased risk of crashes due to OOM: + Exposing endpoints raises the risk of Out-of-Memory (OOM) crashes. +- Increased risk of not keeping up with chain progression: + Resource starvation (IO or CPU) may occur, leading to an inability to keep up with chain progression. + +We strongly advise against exposing API endpoints publicly. Users considering such exposure should exercise caution and implement the right measures to enhance resilience. +::: + +In order to be able to _interact with_ or _build applications on_ any of the Arbitrum chains, you need access to the corresponding Arbitrum node. Options are: + +When it comes to interacting with the Arbitrum network, users have the option to run either a full node or an archive node. There are distinct advantages to running an Arbitrum full node. In this quickstart, we will explore the reasons why a user may prefer to run a full node instead of an archive node. By understanding the benefits and trade-offs of each type of node, users can make an informed decision based on their specific requirements and objectives. + +### Considerations for running an Arbitrum full node + +- Transaction validation and security: Running a full node allows users to independently validate transactions and verify the state of the Arbitrum blockchain. Users can have full confidence in the authenticity and integrity of the transactions they interact with. +- Reduced trust requirements: By running a full node, users can interact with the Arbitrum network without relying on third-party services or infrastructure. This reduces the need to trust external entities and mitigates the risk of potential centralized failures or vulnerabilities. +- Lower resource requirements: Compared to archive nodes, full nodes generally require fewer resources such as storage and computational power. This makes them more accessible to users with limited hardware capabilities or those operating on resource-constrained environments. + +For detailed instructions on how to run an Arbitrum full node, see [here](/run-arbitrum-node/03-run-full-node.md). + +### Considerations for running an Arbitrum archive node + +While full nodes offer numerous advantages, there are situations where running an archive node may be more appropriate. Archive nodes store the complete history of the Arbitrum network, making them suitable for users who require extensive historical data access or advanced analytical purposes. However, it's important to note that archive nodes are more resource-intensive, requiring significant storage capacity and computational power. + +For detailed instructions on how to run an Arbitrum archive node, see [here](/run-arbitrum-node/more-types/01-run-archive-node.md). + +### Considerations for running an Arbitrum classic node + +The significance of running an Arbitrum classic node is mainly applicable to individuals with specific needs for an archive node and access to classic-related commands. More details can be found [here](/run-arbitrum-node/more-types/01-run-archive-node.md). + +For detailed instructions on how to run an Arbitrum classic node, see [here](/run-arbitrum-node/more-types/03-run-classic-node.md). + +### Considerations for running a feed relay + +If you are running a single node, there is no requirement to set up a feed relay. However, if you have multiple nodes, it is highly recommended to have a single feed relay per datacenter. This setup offers several advantages such as reducing ingress fees and enhancing stability within the network. + +In the near future, feed endpoints will mandate compression using a custom dictionary. Therefore, if you plan to connect to a feed using anything other than a standard node, it is strongly advised to run a local feed relay. This will ensure that you have access to an uncompressed feed by default, maintaining optimal performance and compatibility. + +For detailed instructions on how to run a feed relay, see [here](/run-arbitrum-node/sequencer/01-run-feed-relay.md). diff --git a/arbitrum-docs/run-arbitrum-node/03-run-full-node.md b/arbitrum-docs/run-arbitrum-node/03-run-full-node.md new file mode 100644 index 0000000000..d254dcd179 --- /dev/null +++ b/arbitrum-docs/run-arbitrum-node/03-run-full-node.md @@ -0,0 +1,121 @@ +--- +title: 'How to run a full node (Nitro)' +description: Learn how to run an Arbitrum node on your local machine. +sidebar_position: 1 +content_type: how-to +--- + +:::info + +There is no protocol-level incentive to run an Arbitum full node. If you’re interested in accessing an Arbitrum chain but don’t want to set up your own node, see our [Node Providers](/build-decentralized-apps/reference/01-node-providers.md) to get RPC access to fully managed nodes hosted by a third-party provider. + +::: + +### Minimum hardware configuration + +Minimum hardware configuration required to set up a Nitro full node (not archival): + +- **RAM**: 16 GB +- **CPU**: 4 core CPU + - Single core performance is important. If the node is falling behind and a single core is 100% busy, it is recommended to update to a faster processor +- **Storage (last updated on April 2024)**: + - Arbitrum One: 560GB for a pruned node, growing at ~200GB per month (NVMe SSD drives are recommended) + - Arbitrum Nova: 400GB for a pruned node, growing at ~1.6TB per month (NVMe SSD drives are recommended) + +:::info + +These minimum requirements for RAM and CPU are recommended for nodes that process a small amount of RPC requests. For nodes that require processing multiple simultaneous requests, both RAM and number of CPU cores will need to be scaled with the amount of traffic being served. + +::: + +:::info + +The minimum storage requirements will change over time as the Nitro chain grows. Using more than the minimum requirements to run a robust full node is recommended. + +::: + +### Prerequisites + +:::caution Only use released versions + +Even though there are alpha and beta versions of the Arbitrum Nitro software, only release versions should be used when running your node. Running alpha or beta versions is not supported and might lead to unexpected behaviors. + +::: + +- Latest Docker Image: @latestNitroNodeImage@ +- Database snapshot (required for Arbitrum One, optional for other chains) + - Use the parameter `--init.latest `, accepted values: "archive" | "pruned" | "genesis". + - When running more than one node, it's easier to manually download the different parts of the snapshot, join them into a single archive, and host it locally for your nodes. You can then use `--init.url="file:///path/to/snapshot/in/container/snapshot-file.tar"` to use it. (For how to manually download the snapshot parts, please see [Downloading the snapshot manually](/run-arbitrum-node/nitro/03-nitro-database-snapshots.md#downloading-the-snapshot-manually)) + - This parameter is **required** when initializing an Arbitrum One node because the chain has _classic_ blocks. For the other chains, this parameter is optional. + - This parameter is ignored if the database already exists. + - Find more info in [Nitro database snapshots](/run-arbitrum-node/nitro/03-nitro-database-snapshots.md) + - You can find more snapshots on our [snapshot explorer](https://snapshot-explorer.arbitrum.io/) + +### Required parameters + +- L1 RPC URL + - Use the parameter `--parent-chain.connection.url=` for execution layer. + - If the chain is running [ArbOS 20](/run-arbitrum-node/arbos-releases/arbos20.md), additionally use the parameter `--parent-chain.blob-client.beacon-url=` for consensus layer. You can find a list of beacon chain RPC providers [here](/run-arbitrum-node/05-l1-ethereum-beacon-chain-rpc-providers.md). + - It must provide a standard layer 1 node RPC endpoint that you run yourself or from a node provider. + - Note: historical blob data is required for chains running [ArbOS 20](/run-arbitrum-node/arbos-releases/arbos20.md) to properly sync up if they are new or have been offline for more than 18 days. This means the consensus layer RPC endpoint you use may also need to provide historical blob data. Please see [Special notes on ArbOS 20: Atlas support for EIP-4844](/run-arbitrum-node/arbos-releases/arbos20.md#special-notes-on-arbos-20-atlas-support-for-eip-4844) for more details. + - Note: this parameter was called `--l1.url` in versions prior to `v2.1.0` + - Note: 8545 is usually the default port for the execution layer. For the Beacon endpoint port, you should connect to the correct port set on your parent chain's consensus client. +- L2 chain ID or name + - Use the parameter `--chain.id=` to set the L2 chain from its chain id. See [RPC endpoints and providers](/build-decentralized-apps/reference/01-node-providers.md#rpc-endpoints) for a list of Arbitrum chains and their respective L2 chain IDs. + - Alternatively, you can use the parameter `--chain.name=` to set the L2 chain from its name (options are: `arb1`, `nova` and `sepolia-rollup`) + - Note: this parameter was called --l2.chain-id and only accepted chain IDs in versions before `v2.1.0` + +### Important ports + +- RPC: `8547` +- Sequencer Feed: `9642` +- WebSocket: `8548` + - WS port `8548` needs extra args to be opened. Please use these flags: + - --ws.port=8548 + - --ws.addr=0.0.0.0 + - --ws.origins=\* + +### Putting it all together + +- When running the Docker image, an external volume should be mounted to persist the database across restarts. The mount point inside the docker image should be `/home/user/.arbitrum` +- Here is an example of how to run nitro-node: + + - Note that it is important that `/some/local/dir/arbitrum` already exists; otherwise, the directory might be created with `root` as owner, and the docker container won't be able to write to it + + ```shell + docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 @latestNitroNodeImage@ --parent-chain.connection.url https://l1-node:8545 --chain.id= --http.api=net,web3,eth --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* + ``` + + - Note that if you are running an L1 node on localhost, you may need to add `--network host` right after `docker run` to use docker host-based networking + + - When shutting down the Docker image, it is important to allow a graceful shutdown to save the current state to disk. Here is an example of how to do a graceful shutdown of all docker images currently running + + ```shell + docker stop --time=300 $(docker ps -aq) + ``` + +### Note on permissions + +- The Docker image is configured to run as non-root UID 1000. This means if you are running in Linux or OSX and you are getting permission errors when trying to run the docker image, run this command to allow all users to update the persistent folders + ```shell + mkdir /data/arbitrum + chmod -fR 777 /data/arbitrum + ``` + +### Watchtower mode + +- By default, the full node will run in Watchtower mode. This means that the node watches the on-chain assertions, and if it disagrees with them, it will log an error containing the string `found incorrect assertion in watchtower mode`. +- Watchtower mode adds a small amount of execution and memory overhead. You can deactivate this mode using the parameter `--node.staker.enable=false`. + +### Pruning + +- Pruning a full node refers to removing older, unnecessary data from the local copy of the blockchain that the node maintains to save disk space and slightly improve the node's efficiency. Pruning will remove all states from blocks older than the latest 128. +- You can activate pruning by using the parameter `--init.prune` and using "full" or "validator" as the value (depending on the type of node you are running). Remember that this process will happen upon starting the node and will not serve RPC requests while pruning. + +### Optional parameters + +Below, we listed the most commonly used parameters when running a node. You can also use the flag `--help` for a comprehensive list of the available parameters. + +import OptionalOrbitCompatibleCLIFlagsPartial from '../partials/_optional-orbit-compatible-cli-flags-partial.mdx'; + + diff --git a/arbitrum-docs/run-arbitrum-node/04-run-local-dev-node.md b/arbitrum-docs/run-arbitrum-node/04-run-local-dev-node.md new file mode 100644 index 0000000000..1be6182d54 --- /dev/null +++ b/arbitrum-docs/run-arbitrum-node/04-run-local-dev-node.md @@ -0,0 +1,154 @@ +--- +title: 'How to run a local dev node' +description: Learn how to run an Arbitrum local dev node on your local machine. +author: jose-franco +sme: jose-franco +sidebar_position: 6 +content_type: how-to +--- + +A local Arbitrum Nitro dev node can help you deploy and test smart contracts in a fully controlled environment. This how-to walks you through the process of deploying and running a full development environment on your local machine that includes a Nitro dev node, a dev-mode geth L1, and multiple instances with different roles. + +Note that the node is now Stylus-enabled by default, and the setup instructions remain the same as for running a Stylus dev node. + +## Step 1. Install prerequisites + +You'll need [docker](https://docs.docker.com/get-docker/) and [docker compose](https://docs.docker.com/compose/) to run your node. Follow the instructions in their site to install them. + +## Step 2. Clone the [nitro-testnode](https://github.com/OffchainLabs/nitro-testnode) repo + +

You'll need the `release` branch.

+ +```bash + `git clone -b release --recurse-submodules https://github.com/OffchainLabs/nitro-testnode.git && cd nitro-testnode` +``` + +## Step 3. Run your node + +```bash +./test-node.bash --init +``` + +## Step 4. Successive runs + +To relaunch the node after the first installation, run the following command. + +```bash +./test-node.bash +``` + +:::info Clear local data + +Note that running with the --init flag will clear all chain data and redeploy! + +::: + +## Rollup contract addresses and chain configuration + +You can obtain the rollup chain configuration by running the following command. The chain configuration also includes the addresses of the core contracts. + +```bash +docker exec nitro-testnode-sequencer-1 cat /config/l2_chain_info.json +``` + +You can find other available configuration files by running: + +```bash +docker exec nitro-testnode-sequencer-1 ls /config +``` + +## Token bridge + +An L1-L2 token bridge can be deployed by using the parameter `--tokenbridge`. The list of contracts can be found by running: + +```bash +docker compose run --entrypoint sh tokenbridge -c "cat l1l2_network.json" +``` + +## Running an L3 chain + +An L3 chain can be deployed on top of the L2 chain, by using the parameter `--l3node`. Its chain configuration can be found by running: + +```bash +docker exec nitro-testnode-sequencer-1 cat /config/l3_chain_info.json +``` + +When deploying an L3 chain, the following parameters are also available: + +`--l3-fee-token`: Uses a custom gas token for the L3 (symbol $APP), deployed on L2 at address `0x9b7c0fcc305ca36412f87fd6bd08c194909a7d4e` +`--l3-token-bridge`: Deploys an L2-L3 token bridge. The list of contracts can be found by running `docker compose run --entrypoint sh tokenbridge -c "cat l2l3_network.json"`. + +## Additional arguments + +You can find a list of additional arguments to use with `test-node.bash` by using `--help`. + +```bash +./test-node.bash --help +``` + +## Helper scripts + +The repository includes a set of helper scripts for basic actions like funding accounts or bridging funds. You can see a list of the available scripts by running: + +```bash +./test-node.bash script --help +``` + +If you want to see information of a particular script, you can add the name of the script to the help command. + +```bash +./test-node.bash script send-l1 --help +``` + +Here's an example of how to run the script that funds an address on L2. Replace `0x11223344556677889900` with the address you want to fund. + +```bash +./test-node.bash script send-l2 --to address_0x11223344556677889900 --ethamount 5 +``` + +## Blockscout + +Nitro comes with a local [Blockscout](https://www.blockscout.com/) block explorer. To access it, add the param `--blockscout` when running your node. + +```bash +./test-node.bash --blockscout +``` + +The block explorer will be available at `http://localhost:4000` + +## Default endpoints and addresses + +Node RPC endpoints are available at: + +| Node | Chain id | RPC endpoint | +| --------------------- | -------- | ------------------------------------------------- | +| L1 geth devnet | 1337 | `http://localhost:8545` | +| L2 nitro devnet | 412346 | `http://localhost:8547` and `ws://localhost:8548` | +| L3 nitro (if enabled) | 333333 | `http://localhost:3347` | + +Some important addresses: + +| Role | Public address | Private key | +| ------------------------------------------------ | -------------------------------------------- | -------------------------------------------------------------------- | +| Sequencer | `0xe2148eE53c0755215Df69b2616E552154EdC584f` | `0xcb5790da63720727af975f42c79f69918580209889225fa7128c92402a6d3a65` | +| Validator | `0x6A568afe0f82d34759347bb36F14A6bB171d2CBe` | `0x182fecf15bdf909556a0f617a63e05ab22f1493d25a9f1e27c228266c772a890` | +| L2 rollup owner | `0x5E1497dD1f08C87b2d8FE23e9AAB6c1De833D927` | `0xdc04c5399f82306ec4b4d654a342f40e2e0620fe39950d967e1e574b32d4dd36` | +| L3 rollup owner (if enabled) | `0x863c904166E801527125D8672442D736194A3362` | `0xecdf21cb41c65afb51f91df408b7656e2c8739a5877f2814add0afd780cc210e` | +| L3 sequencer (if enabled) | `0x3E6134aAD4C4d422FF2A4391Dc315c4DDf98D1a5` | `0x90f899754eb42949567d3576224bf533a20857bf0a60318507b75fcb3edc6f5f` | +| Dev account (prefunded with ETH in all networks) | `0x3f1Eae7D46d88F08fc2F8ed27FCb2AB183EB2d0E` | `0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659` | + +You can fund other addresses by using the scripts `send-l1` and `send-l2` as explained [here](#helper-scripts). + +:::caution Private keys publicly known + +Do not use any of these addresses in a production environment. + +::: + +## Optional parameters + +Here, We show a list of the parameters that might be useful when running a local devnode. You can also use the flag `./test-node.bash --help` to get them. + +import OptionalDevNodeCLIFlagsPartial from '../partials/_local-devnet-flags.md'; + + diff --git a/arbitrum-docs/run-arbitrum-node/05-l1-ethereum-beacon-chain-rpc-providers.md b/arbitrum-docs/run-arbitrum-node/05-l1-ethereum-beacon-chain-rpc-providers.md new file mode 100644 index 0000000000..348ef7d102 --- /dev/null +++ b/arbitrum-docs/run-arbitrum-node/05-l1-ethereum-beacon-chain-rpc-providers.md @@ -0,0 +1,40 @@ +--- +title: 'L1 Ethereum beacon chain RPC providers' +author: dlee +--- + +import PublicPreviewBannerPartial from '../partials/_public-preview-banner-partial.mdx'; + + + +:::info Note +This reference document provides an overview of Ethereum beacon chain RPC providers for Arbitrum validators to use for accessing blob data following Ethereum's Dencun upgrade in March 2024. The list curated here is **not comprehensive and in no way does Offchain Labs endorse or benefit from your use of any of these providers.** +::: + +Following [Ethereum's Dencun upgrade in March 2024](https://eips.ethereum.org/EIPS/eip-7569), Layer 2 blockchains like Arbitrum will be able to roll up and post batches of transaction data on Ethereum in the form of a new transaction format called a Blob. This Blob data will be part of the beacon chain and is fully downloadable by all consensus nodes. This means that data stored in blobs are inaccessible by the EVM, unlike Calldata. + +### What does this mean for node operators? + +To run a node for an L2 Arbitrum chain (i.e. Arbitrum One, Arbitrum Nova, and L2 Orbit chains), your node will need access to blob data to sync up to the latest state of your Arbitrum L2 chain. Blob data on Ethereum is stored on the beacon chain and is inaccessible to the EVM, hence why dedicated RPC endpoints for the beacon chain will be required after the Dencun upgrade. You can find more details on node requirements in the [Run a full node guide](/run-arbitrum-node/03-run-full-node.md). + +Furthermore, new node operators joining a network or node operators who come online following an extended period of offline time will require access to _historical_ blob data to sync up to the latest state of their Arbitrum chain. + +Offchain Labs has plans to reduce a Nitro validator's reliance on historical blob data and will share updates on this effort in the future. + +### List of Ethereum beacon chain RPC providers + +| Provider | Mainnet Beacon chain APIs? | Mainnet Historical blob data? | Holesky Beacon chain APIs? | Sepolia Beacon chain APIs? | +| --------------------------------------------------------------------------- | -------------------------- | ----------------------------- | -------------------------- | -------------------------- | +| [Ankr](https://www.ankr.com/docs/rpc-service/chains/chains-api/eth-beacon/) | ✅ | ✅ | | | +| [Chainbase](https://chainbase.com/) | ✅ | | | | +| [Chainstack](https://docs.chainstack.com/reference/beacon-chain) | ✅ | ✅ | | ✅ | +| [Conduit](https://conduit.xyz/)\* | ✅ | ✅ | | | +| [BlastAPI](https://blastapi.io/public-api/ethereum) | | | ✅ | | +| [Nirvana Labs](https://nirvanalabs.io) | ✅ | ✅ | | | +| [NodeReal](https://nodereal.io/) | ✅ | | | | +| [QuickNode](https://www.quicknode.com/docs/ethereum) | ✅ | ✅ | ✅ | ✅ | +| [dRPC](https://drpc.org/chainlist/eth-beacon-chain) | ✅ | ✅ | ✅ | ✅ | + +Please reach out to these teams individually if you need assistance with setting up your validator with any of the above providers. + +**\*Case-by-case basis, please contact them directly for help** diff --git a/arbitrum-docs/run-arbitrum-node/06-troubleshooting.md b/arbitrum-docs/run-arbitrum-node/06-troubleshooting.md new file mode 100644 index 0000000000..0556d1e9d6 --- /dev/null +++ b/arbitrum-docs/run-arbitrum-node/06-troubleshooting.md @@ -0,0 +1,285 @@ +--- +title: 'Troubleshooting: Run a node' +author: symbolpunk +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Troubleshooting: Run a node + +The guidance displayed on this page will change based on your selected configuration: + +import MultidimensionalContentControlsPartial from '../partials/_multidimensional-content-controls-partial.mdx'; + + + +:::tip Thank you! + +At the end of this troubleshooting guide, you'll find a "Generate troubleshooting report" button. Clicking this button will generate a report that includes your selected configuration. You can include this report when asking for help. + +**Using this page to generate a troubleshooting report is helpful** because it gathers the information that we need in order to resolve your issue. + +::: + +### Step 1: Try the troubleshooting checklist + +If you're running into unexpected outputs or errors, the following checklist may help you independently resolve your issue. + +
+
+
+
+ + +
+
+ +

The guidance displayed on this page will change based on your selected configuration.

+
+
+
+
+ + +
+
+ + + + + + + +

+ The How to run a full node (Nitro){' '} + may address your issue. +

+
+ +

+ + How to run a full node (Classic, pre-Nitro) + {' '} + may address your issue. +

+
+ +

+ The How to run a full node (Nitro){' '} + may address your issue. +

+
+ +

+ The How to run a full node (Nitro){' '} + may address your issue. +

+
+ +

+ The{' '} + How to run a local dev node{' '} + may address your issue. +

+
+
+
+ +

+ + How to run an archive node + {' '} + may address your issue. +

+
+ +

+ How to run a validator{' '} + may address your issue. +

+
+
+
+
+
+
+ + +
+
+ +

+ Answers to frequently asked questions can be found in{' '} + Frequently asked questions: Run a node. +

+
+
+
+
+ +### Step 2: Look for your scenario + +Common troubleshooting scenarios and solutions are detailed below. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ScenarioSolution
+ You see Unindex transactions. + + This is expected behavior. You'll see this when your node removes old txlookup{' '} + indices. This is emitted from the base Geth node, so you'd see the same output from a + mainnet Geth node. +
+ You see Head state missing, repairing. + + This is usually because your node shut down ungracefully. In most cases it will recover in + few minutes, but if it not, you may have to re-sync your node. Remember to shut down your + node gracefully with the following command:{' '} + docker stop —time=300 $(docker ps -aq). +
+ You see failed to read inbox messages + + This is usually because either A) your L1 RPC is unreachable or B) your L1 node hasn't + finished syncing and an old L1 node's state that doesn't have our inbox contracts deployed + is being used. Check your L1 RPC sync status and connection status, or consider using + another L1 RPC to isolate the issue. +
Your local machine is running out of memory + Nitro (and Geth) can consume a lot of memory depending on request load. It's possible that + your machine may run out of memory when receiving tons of requests. +
+ Your Arbitrum node can’t connect to your L1 node on localhost:8545 + + This is often because of a Docker port configuration issue. See + https://stackoverflow.com/questions/43884981/unable-to-connect-localhost-in-docker. +
+ You specified your snapshot file path via the --init.url parameter, but the + snapshot file isn't found. + + This is usually because the snapshot file isn't mounted to your Docker container. Mount it + and change the file path to your Docker container’s mount point. +
+ You get 403 errors from the feed URL. + + This often happens when Cloudflare attempts to block botnets and other malicious actors, but + accidentally ends up blocking node runners. +
+ You see{' '} + + failed to get blobs: expected at least 6 blobs for slot `[slot_number]` but only got 0 + + + This often happens when you connect to a beacon chain endpoint while the blob you are + querying is expired. To resolve this error, connect to a beacon endpoint which supports + historical blob data (see{' '} + + List of Ethereum beacon chain RPC providers + + ). +
+ + + +### Step 3: Generate a troubleshooting report + +1. Complete the above troubleshooting checklist. +2. Fill in the below form. +3. Click `Generate troubleshooting report`. +4. Copy and paste the **generated report text** when asking for support on [Discord](https://discord.gg/ZpZuw7p) or any other support channel. + +
+ +import { GenerateTroubleshootingReportWidget } from '@site/src/components/GenerateTroubleshootingReportWidget.js'; + + + +
+

+ Node startup command (make sure to remove any sensitive information like, i.e., private keys) +

+ +

Unexpected output

+ + Tip: Paste the ~100 lines of output before and including the + unexpected output you're asking about. You can use the following command to get the logs:{' '} + + docker logs --tail 100 YOUR_CONTAINER_ID + + + Generate troubleshooting report + +
+ Complete the checklist above before generating... +
+
+ + From 1a608631b64bb077bb6a2ac6278736ab794e4665 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Tue, 27 May 2025 09:01:42 -0700 Subject: [PATCH 20/34] fix: reformat --- arbitrum-docs/node-running/node-running-content-map.mdx | 3 ++- arbitrum-docs/node-running/sequencer-content-map.mdx | 2 +- vercel.json | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/arbitrum-docs/node-running/node-running-content-map.mdx b/arbitrum-docs/node-running/node-running-content-map.mdx index 4345686b5d..639c8b7aae 100644 --- a/arbitrum-docs/node-running/node-running-content-map.mdx +++ b/arbitrum-docs/node-running/node-running-content-map.mdx @@ -6,9 +6,10 @@ sidebar_label: Run an Arbitrum node import Card from '@site/src/components/Cards/Card'; -# Run an Arbitrum node +# Run an Arbitrum node Learn how to run an Arbitrum node. +
- diff --git a/vercel.json b/vercel.json index fc79a8dca9..82cb408bd5 100644 --- a/vercel.json +++ b/vercel.json @@ -2196,4 +2196,4 @@ "permanent": false } ] -} +} \ No newline at end of file From 601eb4b5b94ba20d6e8fcf466407b9628e8d20d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Tue, 27 May 2025 09:07:36 -0700 Subject: [PATCH 21/34] fix: repair broken links --- README.md | 2 +- arbitrum-docs/run-arbitrum-node/02-node-types.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2d46af3b35..790f2cb286 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ The following are the only exceptions: - Contributing to the three troubleshooting pages — [nodes](arbitrum-docs/partials/_troubleshooting-nodes-partial.mdx), [builders](arbitrum-docs/partials/_troubleshooting-building-partial.mdx), and [users](arbitrum-docs/partials/_troubleshooting-users-partial.mdx), as well as the [glossary](arbitrum-docs/partials/_glossary-partial.md) page — requires internal Offchain Labs access. If you'd like to make a suggestion about content on any of those pages, open an [issue ticket](https://github.com/OffchainLabs/arbitrum-docs/issues). -- To request to have your project added to the [3rd party node providers page](arbitrum-docs/build-decentralized-apps/reference/01-node-providers.md), use [this form](https://docs.google.com/forms/d/e/1FAIpQLSc_v8j7sc4ffE6U-lJJyLMdBoIubf7OIhGtCqvK3cGPGoLr7w/viewform). +- To request to have your project added to the [3rd party node providers page](arbitrum-docs/build-decentralized-apps/reference/01-node-providers.mdx), use [this form](https://docs.google.com/forms/d/e/1FAIpQLSc_v8j7sc4ffE6U-lJJyLMdBoIubf7OIhGtCqvK3cGPGoLr7w/viewform). ### Initial set up diff --git a/arbitrum-docs/run-arbitrum-node/02-node-types.md b/arbitrum-docs/run-arbitrum-node/02-node-types.md index eac08de72c..f88fc27454 100644 --- a/arbitrum-docs/run-arbitrum-node/02-node-types.md +++ b/arbitrum-docs/run-arbitrum-node/02-node-types.md @@ -13,7 +13,7 @@ import PublicPreviewBannerPartial from '../partials/_public-preview-banner-parti :::info -There is no protocol level incentive to run an Arbitum full node. If you’re interested in accessing an Arbitrum chain, but you don’t want to set up your own node, see our [RPC endpoints and providers](/build-decentralized-apps/reference/01-node-providers.md) to get RPC access to fully-managed nodes hosted by a third party provider. +There is no protocol level incentive to run an Arbitum full node. If you’re interested in accessing an Arbitrum chain, but you don’t want to set up your own node, see our [RPC endpoints and providers](/build-decentralized-apps/reference/01-node-providers.mdx) to get RPC access to fully-managed nodes hosted by a third party provider. ::: From 660d2763149e27db3b8db1c682e190a7e776d0e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Tue, 27 May 2025 09:34:56 -0700 Subject: [PATCH 22/34] fix: repair additional broken links --- arbitrum-docs/run-arbitrum-node/02-node-types.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/arbitrum-docs/run-arbitrum-node/02-node-types.md b/arbitrum-docs/run-arbitrum-node/02-node-types.md index f88fc27454..268abf230f 100644 --- a/arbitrum-docs/run-arbitrum-node/02-node-types.md +++ b/arbitrum-docs/run-arbitrum-node/02-node-types.md @@ -39,19 +39,19 @@ When it comes to interacting with the Arbitrum network, users have the option to - Reduced trust requirements: By running a full node, users can interact with the Arbitrum network without relying on third-party services or infrastructure. This reduces the need to trust external entities and mitigates the risk of potential centralized failures or vulnerabilities. - Lower resource requirements: Compared to archive nodes, full nodes generally require fewer resources such as storage and computational power. This makes them more accessible to users with limited hardware capabilities or those operating on resource-constrained environments. -For detailed instructions on how to run an Arbitrum full node, see [here](/run-arbitrum-node/03-run-full-node.md). +For detailed instructions on how to run an Arbitrum full node, see [here](/run-arbitrum-node/03-run-full-node.mdx). ### Considerations for running an Arbitrum archive node While full nodes offer numerous advantages, there are situations where running an archive node may be more appropriate. Archive nodes store the complete history of the Arbitrum network, making them suitable for users who require extensive historical data access or advanced analytical purposes. However, it's important to note that archive nodes are more resource-intensive, requiring significant storage capacity and computational power. -For detailed instructions on how to run an Arbitrum archive node, see [here](/run-arbitrum-node/more-types/01-run-archive-node.md). +For detailed instructions on how to run an Arbitrum archive node, see [here](/run-arbitrum-node/more-types/01-run-archive-node.mdx). ### Considerations for running an Arbitrum classic node -The significance of running an Arbitrum classic node is mainly applicable to individuals with specific needs for an archive node and access to classic-related commands. More details can be found [here](/run-arbitrum-node/more-types/01-run-archive-node.md). +The significance of running an Arbitrum classic node is mainly applicable to individuals with specific needs for an archive node and access to classic-related commands. More details can be found [here](/run-arbitrum-node/more-types/01-run-archive-node.mdx). -For detailed instructions on how to run an Arbitrum classic node, see [here](/run-arbitrum-node/more-types/03-run-classic-node.md). +For detailed instructions on how to run an Arbitrum classic node, see [here](/run-arbitrum-node/more-types/03-run-classic-node.mdx). ### Considerations for running a feed relay @@ -59,4 +59,4 @@ If you are running a single node, there is no requirement to set up a feed relay In the near future, feed endpoints will mandate compression using a custom dictionary. Therefore, if you plan to connect to a feed using anything other than a standard node, it is strongly advised to run a local feed relay. This will ensure that you have access to an uncompressed feed by default, maintaining optimal performance and compatibility. -For detailed instructions on how to run a feed relay, see [here](/run-arbitrum-node/sequencer/01-run-feed-relay.md). +For detailed instructions on how to run a feed relay, see [here](/run-arbitrum-node/sequencer/01-run-feed-relay.mdx). From 92aa512f97188ca2d1cb0cf50f28fb74dbbdcdcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Tue, 27 May 2025 09:58:30 -0700 Subject: [PATCH 23/34] refactor: remove redundant overview article + edit links to comply with OCL's Pattern guide --- .../{02-node-types.md => 01-node-types.mdx} | 17 ++++++++--------- .../run-arbitrum-node/01-overview.mdx | 18 ------------------ 2 files changed, 8 insertions(+), 27 deletions(-) rename arbitrum-docs/run-arbitrum-node/{02-node-types.md => 01-node-types.mdx} (87%) delete mode 100644 arbitrum-docs/run-arbitrum-node/01-overview.mdx diff --git a/arbitrum-docs/run-arbitrum-node/02-node-types.md b/arbitrum-docs/run-arbitrum-node/01-node-types.mdx similarity index 87% rename from arbitrum-docs/run-arbitrum-node/02-node-types.md rename to arbitrum-docs/run-arbitrum-node/01-node-types.mdx index 268abf230f..de1bb56191 100644 --- a/arbitrum-docs/run-arbitrum-node/02-node-types.md +++ b/arbitrum-docs/run-arbitrum-node/01-node-types.mdx @@ -8,14 +8,13 @@ content_type: overview --- import PublicPreviewBannerPartial from '../partials/_public-preview-banner-partial.mdx'; +import { VanillaAdmonition } from '@site/src/components/VanillaAdmonition/'; - - -:::info + There is no protocol level incentive to run an Arbitum full node. If you’re interested in accessing an Arbitrum chain, but you don’t want to set up your own node, see our [RPC endpoints and providers](/build-decentralized-apps/reference/01-node-providers.mdx) to get RPC access to fully-managed nodes hosted by a third party provider. -::: + :::caution API security disclaimer @@ -39,19 +38,19 @@ When it comes to interacting with the Arbitrum network, users have the option to - Reduced trust requirements: By running a full node, users can interact with the Arbitrum network without relying on third-party services or infrastructure. This reduces the need to trust external entities and mitigates the risk of potential centralized failures or vulnerabilities. - Lower resource requirements: Compared to archive nodes, full nodes generally require fewer resources such as storage and computational power. This makes them more accessible to users with limited hardware capabilities or those operating on resource-constrained environments. -For detailed instructions on how to run an Arbitrum full node, see [here](/run-arbitrum-node/03-run-full-node.mdx). +For detailed instructions, read [how to run an Arbitrum full node](/run-arbitrum-node/03-run-full-node.mdx). ### Considerations for running an Arbitrum archive node While full nodes offer numerous advantages, there are situations where running an archive node may be more appropriate. Archive nodes store the complete history of the Arbitrum network, making them suitable for users who require extensive historical data access or advanced analytical purposes. However, it's important to note that archive nodes are more resource-intensive, requiring significant storage capacity and computational power. -For detailed instructions on how to run an Arbitrum archive node, see [here](/run-arbitrum-node/more-types/01-run-archive-node.mdx). +For detailed instructions, read [how to run an Arbitrum archive node](/run-arbitrum-node/more-types/01-run-archive-node.mdx). ### Considerations for running an Arbitrum classic node -The significance of running an Arbitrum classic node is mainly applicable to individuals with specific needs for an archive node and access to classic-related commands. More details can be found [here](/run-arbitrum-node/more-types/01-run-archive-node.mdx). +The significance of running an Arbitrum classic node is mainly applicable to individuals with specific needs for an archive node and access to classic-related commands. More details can be found [here](). -For detailed instructions on how to run an Arbitrum classic node, see [here](/run-arbitrum-node/more-types/03-run-classic-node.mdx). +For detailed instructions, read [how to run an Arbitrum classic node](/run-arbitrum-node/more-types/03-run-classic-node.mdx). ### Considerations for running a feed relay @@ -59,4 +58,4 @@ If you are running a single node, there is no requirement to set up a feed relay In the near future, feed endpoints will mandate compression using a custom dictionary. Therefore, if you plan to connect to a feed using anything other than a standard node, it is strongly advised to run a local feed relay. This will ensure that you have access to an uncompressed feed by default, maintaining optimal performance and compatibility. -For detailed instructions on how to run a feed relay, see [here](/run-arbitrum-node/sequencer/01-run-feed-relay.mdx). +For detailed instructions, read [how to run an Arbitrum feed relay](/run-arbitrum-node/sequencer/01-run-feed-relay.mdx). diff --git a/arbitrum-docs/run-arbitrum-node/01-overview.mdx b/arbitrum-docs/run-arbitrum-node/01-overview.mdx deleted file mode 100644 index 8858ada07e..0000000000 --- a/arbitrum-docs/run-arbitrum-node/01-overview.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: 'Arbitrum nodes overview' -description: "Arbitrum is a suite of Ethereum L2 scaling solutions supported by a decentralized network of nodes. This guide introduces you to Arbitrum's node types and how they work together to scale Ethereum." -author: mahsamoosavi ---- - -In order to be able to _interact with_ or _build applications on_ any of the Arbitrum chains, you need access to the corresponding Arbitrum node. Options are: - -- You can use third party node providers (see the list [here](/build-decentralized-apps/reference/01-node-providers.mdx)) to get RPC access to fully-managed nodes -- You can run your own Arbitrum node, especially if you want to always know the state of the Arbitrum chain - -Here, you can find resources that help you run different types of Arbitrum nodes: - -- Step-by-step instructions for running different Arbitrum nodes, including [full Nitro node](/run-arbitrum-node/03-run-full-node.mdx), [full Classic node](/run-arbitrum-node/more-types/03-run-classic-node.mdx), [local full chain simulation](/run-arbitrum-node/04-run-local-full-chain-simulation.mdx), [Nitro dev node](/run-arbitrum-node/run-nitro-dev-node.mdx), [feed relay](/run-arbitrum-node/sequencer/01-run-feed-relay.mdx), and [validator](/run-arbitrum-node/more-types/02-run-validator-node.mdx) -- Step-by-step instructions for how to [read the sequencer feed](/run-arbitrum-node/sequencer/02-read-sequencer-feed.mdx), [build the Nitro locally](/run-arbitrum-node/nitro/01-build-nitro-locally.mdx) and [run the sequencer coordinator manager UI tool](/run-arbitrum-node/sequencer/03-run-sequencer-coordination-manager.mdx) -- Step-by-step instructions for [how to configure a Data Availability Committee](/run-arbitrum-node/data-availability-committees/01-get-started.mdx) -- [Troubleshooting page](/run-arbitrum-node/06-troubleshooting.mdx) -- [Frequently asked questions](/node-running/faq.mdx) From 3818d19fda0aee6b7963c55d47398802baa12f41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Tue, 27 May 2025 10:06:04 -0700 Subject: [PATCH 24/34] fix: repair more links --- arbitrum-docs/how-arbitrum-works/bold/gentle-introduction.mdx | 2 +- arbitrum-docs/run-arbitrum-node/01-node-types.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arbitrum-docs/how-arbitrum-works/bold/gentle-introduction.mdx b/arbitrum-docs/how-arbitrum-works/bold/gentle-introduction.mdx index da99129c22..8eef1ec47e 100644 --- a/arbitrum-docs/how-arbitrum-works/bold/gentle-introduction.mdx +++ b/arbitrum-docs/how-arbitrum-works/bold/gentle-introduction.mdx @@ -222,7 +222,7 @@ If a malicious entity wanted to attack Arbitrum, they would need to deposit 3600 - Nodes running in this mode are considered validators because they validate what they see and take onchain action. - Running a `watchtower` node is **not** a validator. - Proposers are a special role, they strictly run in `makeNodes` mode. This means a proposer is someone running an Arbitrum node in `makeNodes` mode, also making them a validator. -- For more information about see [Running a Node](/run-arbitrum-node/01-overview.mdx) and [Validation strategies](/run-arbitrum-node/more-types/02-run-validator-node.mdx#validation-strategies). +- For more information about see [Running a Node](/run-arbitrum-node/01-node-types.mdx) and [Validation strategies](/run-arbitrum-node/more-types/02-run-validator-node.mdx#validation-strategies). ::: #### Q: How do BoLD-based L3s challenge periods operate, considering the worst-case scenario? diff --git a/arbitrum-docs/run-arbitrum-node/01-node-types.mdx b/arbitrum-docs/run-arbitrum-node/01-node-types.mdx index de1bb56191..10d97b4dc5 100644 --- a/arbitrum-docs/run-arbitrum-node/01-node-types.mdx +++ b/arbitrum-docs/run-arbitrum-node/01-node-types.mdx @@ -48,7 +48,7 @@ For detailed instructions, read [how to run an Arbitrum archive node](/run-arbit ### Considerations for running an Arbitrum classic node -The significance of running an Arbitrum classic node is mainly applicable to individuals with specific needs for an archive node and access to classic-related commands. More details can be found [here](). +The significance of running an Arbitrum classic node is mainly applicable to individuals with specific needs for an archive node and access to classic-related commands. For detailed instructions, read [how to run an Arbitrum classic node](/run-arbitrum-node/more-types/03-run-classic-node.mdx). From c769004588c19ecd72a40e3c08c97c3bc7fe3b2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Tue, 27 May 2025 11:23:30 -0700 Subject: [PATCH 25/34] fix: repair links on map content page --- arbitrum-docs/node-running/node-running-content-map.mdx | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/arbitrum-docs/node-running/node-running-content-map.mdx b/arbitrum-docs/node-running/node-running-content-map.mdx index 639c8b7aae..2c5f452a7d 100644 --- a/arbitrum-docs/node-running/node-running-content-map.mdx +++ b/arbitrum-docs/node-running/node-running-content-map.mdx @@ -32,7 +32,7 @@ Learn how to run an Arbitrum node. - Date: Tue, 27 May 2025 11:54:21 -0700 Subject: [PATCH 26/34] refactor: merge only relevant content from deleted node overview article --- arbitrum-docs/run-arbitrum-node/01-node-types.mdx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arbitrum-docs/run-arbitrum-node/01-node-types.mdx b/arbitrum-docs/run-arbitrum-node/01-node-types.mdx index 10d97b4dc5..ab461419cd 100644 --- a/arbitrum-docs/run-arbitrum-node/01-node-types.mdx +++ b/arbitrum-docs/run-arbitrum-node/01-node-types.mdx @@ -18,6 +18,13 @@ There is no protocol level incentive to run an Arbitum full node. If you’re in :::caution API security disclaimer +In order to be able to _interact with_ or _build applications on_ any of the Arbitrum chains, you need access to the corresponding Arbitrum node. Options are: + +- You can use third party node providers (see the list [here](/build-decentralized-apps/reference/01-node-providers.mdx)) to get RPC access to fully-managed nodes +- You can run your own Arbitrum node, especially if you want to always know the state of the Arbitrum chain + +The rest of this series focuses on the second approach: running your own Arbitrum node. + When exposing API endpoints to the Internet or any untrusted/hostile network, the following risks may arise: - Increased risk of crashes due to OOM: From fc8124a44ec5d5985364292b17364bc59ea3ec9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Tue, 27 May 2025 12:08:53 -0700 Subject: [PATCH 27/34] fix: re-add admonition + renamed file to numbered names --- arbitrum-docs/run-arbitrum-node/01-node-types.mdx | 10 ++++++++++ .../{03-run-full-node.mdx => 02-run-full-node.mdx} | 0 ...tion.mdx => 03-run-local-full-chain-simulation.mdx} | 0 ...x => 04-l1-ethereum-beacon-chain-rpc-providers.mdx} | 0 ...un-nitro-dev-node.mdx => 05-run-nitro-dev-node.mdx} | 0 .../{06-troubleshooting.mdx => 05-troubleshooting.mdx} | 0 6 files changed, 10 insertions(+) rename arbitrum-docs/run-arbitrum-node/{03-run-full-node.mdx => 02-run-full-node.mdx} (100%) rename arbitrum-docs/run-arbitrum-node/{04-run-local-full-chain-simulation.mdx => 03-run-local-full-chain-simulation.mdx} (100%) rename arbitrum-docs/run-arbitrum-node/{05-l1-ethereum-beacon-chain-rpc-providers.mdx => 04-l1-ethereum-beacon-chain-rpc-providers.mdx} (100%) rename arbitrum-docs/run-arbitrum-node/{run-nitro-dev-node.mdx => 05-run-nitro-dev-node.mdx} (100%) rename arbitrum-docs/run-arbitrum-node/{06-troubleshooting.mdx => 05-troubleshooting.mdx} (100%) diff --git a/arbitrum-docs/run-arbitrum-node/01-node-types.mdx b/arbitrum-docs/run-arbitrum-node/01-node-types.mdx index ab461419cd..90e82b3c59 100644 --- a/arbitrum-docs/run-arbitrum-node/01-node-types.mdx +++ b/arbitrum-docs/run-arbitrum-node/01-node-types.mdx @@ -18,6 +18,16 @@ There is no protocol level incentive to run an Arbitum full node. If you’re in :::caution API security disclaimer +When exposing API endpoints to the Internet or any untrusted/hostile network, the following risks may arise: + +- Increased risk of crashes due to OOM: + Exposing endpoints raises the risk of Out-of-Memory (OOM) crashes. +- Increased risk of not keeping up with chain progression: + Resource starvation (IO or CPU) may occur, leading to an inability to keep up with chain progression. + +We strongly advise against exposing API endpoints publicly. Users considering such exposure should exercise caution and implement the right measures to enhance resilience. +::: + In order to be able to _interact with_ or _build applications on_ any of the Arbitrum chains, you need access to the corresponding Arbitrum node. Options are: - You can use third party node providers (see the list [here](/build-decentralized-apps/reference/01-node-providers.mdx)) to get RPC access to fully-managed nodes diff --git a/arbitrum-docs/run-arbitrum-node/03-run-full-node.mdx b/arbitrum-docs/run-arbitrum-node/02-run-full-node.mdx similarity index 100% rename from arbitrum-docs/run-arbitrum-node/03-run-full-node.mdx rename to arbitrum-docs/run-arbitrum-node/02-run-full-node.mdx diff --git a/arbitrum-docs/run-arbitrum-node/04-run-local-full-chain-simulation.mdx b/arbitrum-docs/run-arbitrum-node/03-run-local-full-chain-simulation.mdx similarity index 100% rename from arbitrum-docs/run-arbitrum-node/04-run-local-full-chain-simulation.mdx rename to arbitrum-docs/run-arbitrum-node/03-run-local-full-chain-simulation.mdx diff --git a/arbitrum-docs/run-arbitrum-node/05-l1-ethereum-beacon-chain-rpc-providers.mdx b/arbitrum-docs/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.mdx similarity index 100% rename from arbitrum-docs/run-arbitrum-node/05-l1-ethereum-beacon-chain-rpc-providers.mdx rename to arbitrum-docs/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.mdx diff --git a/arbitrum-docs/run-arbitrum-node/run-nitro-dev-node.mdx b/arbitrum-docs/run-arbitrum-node/05-run-nitro-dev-node.mdx similarity index 100% rename from arbitrum-docs/run-arbitrum-node/run-nitro-dev-node.mdx rename to arbitrum-docs/run-arbitrum-node/05-run-nitro-dev-node.mdx diff --git a/arbitrum-docs/run-arbitrum-node/06-troubleshooting.mdx b/arbitrum-docs/run-arbitrum-node/05-troubleshooting.mdx similarity index 100% rename from arbitrum-docs/run-arbitrum-node/06-troubleshooting.mdx rename to arbitrum-docs/run-arbitrum-node/05-troubleshooting.mdx From 72f525abb69d70a7f390a3513c7fda0b778996e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Tue, 27 May 2025 12:40:19 -0700 Subject: [PATCH 28/34] rename quickstart > its content wasn't that of a quickstart --- .../run-arbitrum-node/02-quickstart.mdx | 56 ------------------- 1 file changed, 56 deletions(-) delete mode 100644 arbitrum-docs/run-arbitrum-node/02-quickstart.mdx diff --git a/arbitrum-docs/run-arbitrum-node/02-quickstart.mdx b/arbitrum-docs/run-arbitrum-node/02-quickstart.mdx deleted file mode 100644 index 18cd4b5cb3..0000000000 --- a/arbitrum-docs/run-arbitrum-node/02-quickstart.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: 'Quickstart: Run a node' -description: Learn more about what type of ARB node one needs to run. -author-objective: Build a quickstart that helps readers understand why they might want to run a specific type of an Arbitrum node. -reader-audience: Moderately-technical readers who are familiar with command lines, but not Ethereum / Arbitrum infrastructure -reader-task: Run a node with minimal effort and maximum understanding -content_type: quickstart ---- - -:::info - -There is no protocol level incentive to run an Arbitum full node. If you’re interested in accessing an Arbitrum chain, but you don’t want to set up your own node, see our [RPC endpoints and providers](/build-decentralized-apps/reference/01-node-providers.mdx) to get RPC access to fully-managed nodes hosted by a third party provider. - -::: - -:::caution API security disclaimer - -When exposing API endpoints to the Internet or any untrusted/hostile network, the following risks may arise: - -- Increased risk of crashes due to OOM: - Exposing endpoints raises the risk of Out-of-Memory (OOM) crashes. -- Increased risk of not keeping up with chain progression: - Resource starvation (IO or CPU) may occur, leading to an inability to keep up with chain progression. - -We strongly advise against exposing API endpoints publicly. Users considering such exposure should exercise caution and implement the right measures to enhance resilience. -::: - -When it comes to interacting with the Arbitrum network, users have the option to run either a full node or an archive node. There are distinct advantages to running an Arbitrum full node. In this quickstart, we will explore the reasons why a user may prefer to run a full node instead of an archive node. By understanding the benefits and trade-offs of each type of node, users can make an informed decision based on their specific requirements and objectives. - -### Considerations for running an Arbitrum full node - -- **Transaction validation and security**: Running a full node allows users to independently validate transactions and verify the state of the Arbitrum blockchain. Users can have full confidence in the authenticity and integrity of the transactions they interact with. -- **Reduced trust requirements**: By running a full node, users can interact with the Arbitrum network without relying on third-party services or infrastructure. This reduces the need to trust external entities and mitigates the risk of potential centralized failures or vulnerabilities. -- **Lower resource requirements**: Compared to archive nodes, full nodes generally require fewer resources such as storage and computational power. This makes them more accessible to users with limited hardware capabilities or those operating on resource-constrained environments. - -For detailed instructions on how to run an Arbitrum full node, see [here](/run-arbitrum-node/03-run-full-node.mdx). - -### Considerations for running an Arbitrum archive node - -While full nodes offer numerous advantages, there are situations where running an archive node may be more appropriate. Archive nodes store the complete history of the Arbitrum network, making them suitable for users who require extensive historical data access or advanced analytical purposes. However, it's important to note that archive nodes are more resource-intensive, requiring significant storage capacity and computational power. - -For detailed instructions on how to run an Arbitrum archive node, see [here](/run-arbitrum-node/more-types/01-run-archive-node.mdx). - -### Considerations for running an Arbitrum classic node - -The significance of running an Arbitrum classic node is mainly applicable to individuals with specific needs for an archive node and access to classic-related commands. More details can be found [here](/run-arbitrum-node/more-types/01-run-archive-node.mdx). - -For detailed instructions on how to run an Arbitrum classic node, see [here](/run-arbitrum-node/more-types/03-run-classic-node.mdx). - -### Considerations for running a feed relay - -If you are running a single node, there is no requirement to set up a feed relay. However, if you have multiple nodes, it is highly recommended to have a single feed relay per datacenter. This setup offers several advantages such as reducing ingress fees and enhancing stability within the network. - -In the near future, feed endpoints will mandate compression using a custom dictionary. Therefore, if you plan to connect to a feed using anything other than a standard node, it is strongly advised to run a local feed relay. This will ensure that you have access to an uncompressed feed by default, maintaining optimal performance and compatibility. - -For detailed instructions on how to run a feed relay, see [here](/run-arbitrum-node/sequencer/01-run-feed-relay.mdx). From 7e5db26dae61264a7a9bf6d9d0b01591c6250901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Tue, 27 May 2025 13:14:13 -0700 Subject: [PATCH 29/34] fix: repair broken links after file rename --- .../04-maintain-your-chain/05-upgrade-to-bold.mdx | 8 ++++---- .../05-customize-your-chain/customize-stf.mdx | 2 +- .../how-tos/arbitrum-chain-sdk-preparing-node-config.md | 2 +- arbitrum-docs/run-arbitrum-node/01-node-types.mdx | 2 +- .../04-l1-ethereum-beacon-chain-rpc-providers.mdx | 2 +- .../{05-troubleshooting.mdx => 06-troubleshooting.mdx} | 0 .../run-arbitrum-node/arbos-releases/arbos20.mdx | 6 +++--- .../data-availability-committees/02-deploy-das.mdx | 2 +- .../data-availability-committees/03-deploy-mirror-das.mdx | 2 +- .../run-arbitrum-node/more-types/01-run-archive-node.mdx | 4 ++-- .../more-types/02-run-validator-node.mdx | 6 +++--- .../run-arbitrum-node/nitro/01-build-nitro-locally.mdx | 2 +- .../nitro/02-migrate-state-and-history-from-classic.mdx | 6 +++--- .../partials/run-full-node/_dao-chains-parameters.mdx | 2 +- .../partials/run-full-node/_orbit-chains-parameters.mdx | 2 +- arbitrum-docs/stylus/cli-tools-overview.md | 2 +- arbitrum-docs/stylus/using-cli.mdx | 2 +- arbitrum-docs/welcome/get-started.mdx | 4 ++-- 18 files changed, 28 insertions(+), 28 deletions(-) rename arbitrum-docs/run-arbitrum-node/{05-troubleshooting.mdx => 06-troubleshooting.mdx} (100%) diff --git a/arbitrum-docs/launch-arbitrum-chain/04-maintain-your-chain/05-upgrade-to-bold.mdx b/arbitrum-docs/launch-arbitrum-chain/04-maintain-your-chain/05-upgrade-to-bold.mdx index bcf690f64d..37214de874 100644 --- a/arbitrum-docs/launch-arbitrum-chain/04-maintain-your-chain/05-upgrade-to-bold.mdx +++ b/arbitrum-docs/launch-arbitrum-chain/04-maintain-your-chain/05-upgrade-to-bold.mdx @@ -32,8 +32,8 @@ Before updating the contracts, you want to make sure your nodes are ready for th Most of the parameters used in Nitro before v3.5.4 will stay the same when running a higher version but, depending on the type of node, you'll have to include a few more BoLD-specific parameters after the upgrade: - For validator nodes: add `--node.bold.strategy=` to configure the validator to create and/or confirm assertions in the new Rollup contract (find more information in [How to run a validator](/run-arbitrum-node/more-types/02-run-validator-node.mdx#step-1-configure-and-run-your-validator)) -- For all other types of node before Nitro v3.6.0: add `--node.bold.enable=true` to enable [watchtower mode](/run-arbitrum-node/03-run-full-node.mdx#watchtower-mode) -- For all other types of node after Nitro v3.6.0: [watchtower mode](/run-arbitrum-node/03-run-full-node.mdx#watchtower-mode) is automatically enabled +- For all other types of node before Nitro v3.6.0: add `--node.bold.enable=true` to enable [watchtower mode](/run-arbitrum-node/02-run-full-node.mdx#watchtower-mode) +- For all other types of node after Nitro v3.6.0: [watchtower mode](/run-arbitrum-node/02-run-full-node.mdx#watchtower-mode) is automatically enabled Additionally, after performing the upgrade, the `--chain.info-json` object also needs to be modified: @@ -186,8 +186,8 @@ execute(...) call to upgrade executor: 0x1cff79cd000000000000000000000000f8199ca As stated at the beginning, you need to add a few parameters to your node configuration for it to support BoLD: - For validator nodes: add `--node.bold.strategy=` to configure the validator to create and/or confirm assertions in the new Rollup contract (find more information in [How to run a validator](/run-arbitrum-node/more-types/02-run-validator-node.mdx#step-1-configure-and-run-your-validator)) -- For all other types of node before Nitro v3.6.0: add `--node.bold.enable=true` to enable [watchtower mode](/run-arbitrum-node/03-run-full-node.mdx#watchtower-mode) -- For all other types of node after Nitro v3.6.0: [watchtower mode](/run-arbitrum-node/03-run-full-node.mdx#watchtower-mode) is automatically enabled +- For all other types of node before Nitro v3.6.0: add `--node.bold.enable=true` to enable [watchtower mode](/run-arbitrum-node/02-run-full-node.mdx#watchtower-mode) +- For all other types of node after Nitro v3.6.0: [watchtower mode](/run-arbitrum-node/02-run-full-node.mdx#watchtower-mode) is automatically enabled Additionally, the `--chain.info-json` object also needs to be modified: diff --git a/arbitrum-docs/launch-arbitrum-chain/05-customize-your-chain/customize-stf.mdx b/arbitrum-docs/launch-arbitrum-chain/05-customize-your-chain/customize-stf.mdx index 56212a7730..4e33b67952 100644 --- a/arbitrum-docs/launch-arbitrum-chain/05-customize-your-chain/customize-stf.mdx +++ b/arbitrum-docs/launch-arbitrum-chain/05-customize-your-chain/customize-stf.mdx @@ -139,7 +139,7 @@ docker run --rm -it -v /path/to/your/node/dir:/home/user/.arbitrum -p 0.0.0.0:84 :::info -The instructions provided in [How to run a full node](/run-arbitrum-node/03-run-full-node.mdx) **will not** work with your Arbitrum chain node. See [Optional parameters (Arbitrum chain)](/run-arbitrum-node/03-run-full-node.mdx#optional-parameters) for Arbitrum chain (Orbit)-specific CLI flags. +The instructions provided in [How to run a full node](/run-arbitrum-node/02-run-full-node.mdx) **will not** work with your Arbitrum chain node. See [Optional parameters (Arbitrum chain)](/run-arbitrum-node/02-run-full-node.mdx#optional-parameters) for Arbitrum chain (Orbit)-specific CLI flags. ::: diff --git a/arbitrum-docs/launch-arbitrum-chain/how-tos/arbitrum-chain-sdk-preparing-node-config.md b/arbitrum-docs/launch-arbitrum-chain/how-tos/arbitrum-chain-sdk-preparing-node-config.md index 43f4ec3a81..92a6af32be 100644 --- a/arbitrum-docs/launch-arbitrum-chain/how-tos/arbitrum-chain-sdk-preparing-node-config.md +++ b/arbitrum-docs/launch-arbitrum-chain/how-tos/arbitrum-chain-sdk-preparing-node-config.md @@ -156,4 +156,4 @@ After generating the node configuration object, it can be saved to a file for la ### 3. Next step -You can now run the Nitro node for your Arbitrum chain with the node configuration generated. You can find instructions for running a node in [How to run a full node](/run-arbitrum-node/03-run-full-node.mdx). +You can now run the Nitro node for your Arbitrum chain with the node configuration generated. You can find instructions for running a node in [How to run a full node](/run-arbitrum-node/02-run-full-node.mdx). diff --git a/arbitrum-docs/run-arbitrum-node/01-node-types.mdx b/arbitrum-docs/run-arbitrum-node/01-node-types.mdx index 90e82b3c59..7aa806231b 100644 --- a/arbitrum-docs/run-arbitrum-node/01-node-types.mdx +++ b/arbitrum-docs/run-arbitrum-node/01-node-types.mdx @@ -55,7 +55,7 @@ When it comes to interacting with the Arbitrum network, users have the option to - Reduced trust requirements: By running a full node, users can interact with the Arbitrum network without relying on third-party services or infrastructure. This reduces the need to trust external entities and mitigates the risk of potential centralized failures or vulnerabilities. - Lower resource requirements: Compared to archive nodes, full nodes generally require fewer resources such as storage and computational power. This makes them more accessible to users with limited hardware capabilities or those operating on resource-constrained environments. -For detailed instructions, read [how to run an Arbitrum full node](/run-arbitrum-node/03-run-full-node.mdx). +For detailed instructions, read [how to run an Arbitrum full node](/run-arbitrum-node/02-run-full-node.mdx). ### Considerations for running an Arbitrum archive node diff --git a/arbitrum-docs/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.mdx b/arbitrum-docs/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.mdx index 7b1d8d45ad..291f6ee3b3 100644 --- a/arbitrum-docs/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.mdx +++ b/arbitrum-docs/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.mdx @@ -11,7 +11,7 @@ Following [Ethereum's Dencun upgrade in March 2024](https://eips.ethereum.org/EI ### What does this mean for node operators? -To run a node for a child Arbitrum chain (i.e., Arbitrum One, Arbitrum Nova, and L3 Arbitrum chains), your node will need access to blob data to sync up to the latest state of your Arbitrum child chain. Blob data on Ethereum is stored on the beacon chain and is inaccessible to the EVM, hence why dedicated RPC endpoints for the beacon chain will be required after the Dencun upgrade. You can find more details on node requirements in the [Run a full node guide](/run-arbitrum-node/03-run-full-node.mdx). +To run a node for a child Arbitrum chain (i.e., Arbitrum One, Arbitrum Nova, and L3 Arbitrum chains), your node will need access to blob data to sync up to the latest state of your Arbitrum child chain. Blob data on Ethereum is stored on the beacon chain and is inaccessible to the EVM, hence why dedicated RPC endpoints for the beacon chain will be required after the Dencun upgrade. You can find more details on node requirements in the [Run a full node guide](/run-arbitrum-node/02-run-full-node.mdx). Furthermore, new node operators joining a network or node operators who come online following an extended period of offline time will require access to _historical_ blob data to sync up to the latest state of their Arbitrum chain. diff --git a/arbitrum-docs/run-arbitrum-node/05-troubleshooting.mdx b/arbitrum-docs/run-arbitrum-node/06-troubleshooting.mdx similarity index 100% rename from arbitrum-docs/run-arbitrum-node/05-troubleshooting.mdx rename to arbitrum-docs/run-arbitrum-node/06-troubleshooting.mdx diff --git a/arbitrum-docs/run-arbitrum-node/arbos-releases/arbos20.mdx b/arbitrum-docs/run-arbitrum-node/arbos-releases/arbos20.mdx index cfe8ada887..8f5799408c 100644 --- a/arbitrum-docs/run-arbitrum-node/arbos-releases/arbos20.mdx +++ b/arbitrum-docs/run-arbitrum-node/arbos-releases/arbos20.mdx @@ -12,7 +12,7 @@ ArbOS 20 Atlas is shipped via Nitro v2.3.1, which is available on Docker hub wit - [Nitro v2.3.1](https://github.com/OffchainLabs/nitro/releases/tag/v2.3.1) or higher - [nitro-contracts v1.2.1](https://github.com/OffchainLabs/nitro-contracts/releases/tag/v1.2.1) or higher - Wasm module root: `0x8b104a2e80ac6165dc58b9048de12f301d70b02a0ab51396c22b4b4b802a16a4` -- Access to the [Ethereum Beacon Chain APIs](https://ethereum.github.io/beacon-APIs/#/), either from your own self-managed parent chain Ethereum node or from a 3rd party provider like [those on this list](/run-arbitrum-node/05-l1-ethereum-beacon-chain-rpc-providers.mdx). +- Access to the [Ethereum Beacon Chain APIs](https://ethereum.github.io/beacon-APIs/#/), either from your own self-managed parent chain Ethereum node or from a 3rd party provider like [those on this list](/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.mdx). ### High-level description of ArbOS 20 changes @@ -28,7 +28,7 @@ ArbOS 20 is an upgrade to enable Arbitrum's support for the parent chain Ethereu ### Special notes on ArbOS 20: Atlas support for EIP-4844 -- Upgrading to **the Atlas ArbOS release will require access to the parent chain's Ethereum beacon chain endpoints to retrieve blob data. For nodes of a chain that come online 18 days after Atlas gets activated on their chain will need access to historical data to sync up to the latest state.** If you are not operating your own Ethereum consensus client, [please visit this page to view a list of beacon chain RPC providers](/run-arbitrum-node/05-l1-ethereum-beacon-chain-rpc-providers.mdx) where you can access blob data. +- Upgrading to **the Atlas ArbOS release will require access to the parent chain's Ethereum beacon chain endpoints to retrieve blob data. For nodes of a chain that come online 18 days after Atlas gets activated on their chain will need access to historical data to sync up to the latest state.** If you are not operating your own Ethereum consensus client, [please visit this page to view a list of beacon chain RPC providers](/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.mdx) where you can access blob data. - Applications on Arbitrum will not have to be modified or take any explicit action to get the benefits of using EIP-4844 (i.e., the whole chain opts-in with ArbOS 20 “Atlas”). - ArbOS 20 “Atlas” adds support for Arbitrum chains to send data in a blob storage format to data availability layers, like the parent chain Ethereum, that support the blob transaction type. This includes Arbitrum One and Arbitrum Nova. ArbOS 20 “Atlas” does not add support for Arbitrum chains to receive data in a blob storage format. This means that an L3 Arbitrum chain on top of an Arbitrum L2 will use calldata when posting L3 transaction data to the underlying L2. The child chain (L2) Arbitrum chain will then be able to post data to a parent chain data availability layer like Ethereum using blobs. - There currently aren’t estimates on what the end-user gas savings of using blob data will be. This topic is something being actively worked on and monitored. Without Mainnet data, the estimates for blob gas prices will not be accurate enough to reliably predict the cost reductions that users will experience - and even with Mainnet data, the savings will vary by use case (i.e., no current way to predict the price impacts from all blob gas market participants yet). In general, however, the use of blobs will reduce the cost of using Arbitrum L2s. To learn more about what EIP-4844 will mean for the child chain users, please checkout this [blog post on Medium by Offchain Lab's Co-foudner and Chief Scientist Ed Felten](https://medium.com/offchainlabs/eip-4844-what-does-it-mean-for-l2-users-5e86ebc4c028). @@ -58,7 +58,7 @@ To enable the posting of transaction data in Blobs to L1 Ethereum, you must set | `--node.batch-poster.post-4844-blobs` | Boolean. Default: `false`. Used to enable or disable the posting of transaction data using Blobs to L1 Ethereum. If using calldata is more expensive and if the parent chain supports EIP4844 blobs, the batch poster will use blobs when this flag is set to `true`. Can be `true` or `false`. | | `--node.batch-poster.ignore-blob-price` | Boolean. Default: `false`. If the parent chain supports EIP4844 blobs and `ignore-blob-price` is set to `true`, the batch poster will use EIP4844 blobs even if using calldata is cheaper. Can be `true` or `false`. | -The above configurations are also available in the [Nitro command line options reference section](/run-arbitrum-node/03-run-full-node.mdx#optional-parameters) and can be set using the command line or using the JSON node configuration below: +The above configurations are also available in the [Nitro command line options reference section](/run-arbitrum-node/02-run-full-node.mdx#optional-parameters) and can be set using the command line or using the JSON node configuration below: ```json "node": { diff --git a/arbitrum-docs/run-arbitrum-node/data-availability-committees/02-deploy-das.mdx b/arbitrum-docs/run-arbitrum-node/data-availability-committees/02-deploy-das.mdx index 9e00ea64aa..844703e912 100644 --- a/arbitrum-docs/run-arbitrum-node/data-availability-committees/02-deploy-das.mdx +++ b/arbitrum-docs/run-arbitrum-node/data-availability-committees/02-deploy-das.mdx @@ -88,7 +88,7 @@ DA servers also have an optional REST aggregator which, when a data batch is not Gather the following information: - The latest Nitro docker image: `@@latestNitroNodeImage=offchainlabs/nitro-node:v3.6.4-28199cd@@` -- An RPC endpoint for the parent chain. It is recommended to use a [third-party provider RPC](/build-decentralized-apps/reference/01-node-providers.mdx#third-party-rpc-providers) or [run your own node](/run-arbitrum-node/03-run-full-node.mdx) to prevent being rate limited. +- An RPC endpoint for the parent chain. It is recommended to use a [third-party provider RPC](/build-decentralized-apps/reference/01-node-providers.mdx#third-party-rpc-providers) or [run your own node](/run-arbitrum-node/02-run-full-node.mdx) to prevent being rate limited. - The `SequencerInbox` contract address in the parent chain. - If you wish to configure a [REST aggregator for your DAS](#state-synchronization), you'll need the URL where the list of REST endpoints is kept. diff --git a/arbitrum-docs/run-arbitrum-node/data-availability-committees/03-deploy-mirror-das.mdx b/arbitrum-docs/run-arbitrum-node/data-availability-committees/03-deploy-mirror-das.mdx index d6bc5eb0ab..e5369fc53a 100644 --- a/arbitrum-docs/run-arbitrum-node/data-availability-committees/03-deploy-mirror-das.mdx +++ b/arbitrum-docs/run-arbitrum-node/data-availability-committees/03-deploy-mirror-das.mdx @@ -46,7 +46,7 @@ A mirror DAS will use the same tool and, thus, the same configuration options as Gather the following information: - The latest Nitro docker image: `@@latestNitroNodeImage=offchainlabs/nitro-node:v3.6.4-28199cd@@` -- An RPC endpoint for the parent chain. It is recommended to use a [third-party provider RPC](/build-decentralized-apps/reference/01-node-providers.mdx#third-party-rpc-providers) or [run your own node](/run-arbitrum-node/03-run-full-node.mdx) to prevent being rate limited. +- An RPC endpoint for the parent chain. It is recommended to use a [third-party provider RPC](/build-decentralized-apps/reference/01-node-providers.mdx#third-party-rpc-providers) or [run your own node](/run-arbitrum-node/02-run-full-node.mdx) to prevent being rate limited. - The SequencerInbox contract address in the parent chain. - URL of the list of REST endpoints of other DA servers to configure the REST aggregator. diff --git a/arbitrum-docs/run-arbitrum-node/more-types/01-run-archive-node.mdx b/arbitrum-docs/run-arbitrum-node/more-types/01-run-archive-node.mdx index 24d8267233..001b1b20a8 100644 --- a/arbitrum-docs/run-arbitrum-node/more-types/01-run-archive-node.mdx +++ b/arbitrum-docs/run-arbitrum-node/more-types/01-run-archive-node.mdx @@ -23,8 +23,8 @@ Running an Arbitrum One **full node** in **archive mode** lets you access both p | Use case | Required node type(s) | Docs | | ------------------------------------------------------------------------------- | --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | | Access the **Arbitrum network** without running your own node | Fully managed by third-parties, exposed via RPC endpoints | [RPC endpoints and providers](/build-decentralized-apps/reference/01-node-providers.mdx) | -| Run an **archive node** for **Arbitrum Sepolia (testnet)** or **Arbitrum Nova** | Full node (Nitro) | [How to run a full node (Nitro)](/run-arbitrum-node/03-run-full-node.mdx) | -| Send **post-Nitro** archive requests | Full node (Nitro) | [How to run a full node (Nitro)](/run-arbitrum-node/03-run-full-node.mdx) | +| Run an **archive node** for **Arbitrum Sepolia (testnet)** or **Arbitrum Nova** | Full node (Nitro) | [How to run a full node (Nitro)](/run-arbitrum-node/02-run-full-node.mdx) | +| Send **post-Nitro** archive requests | Full node (Nitro) | [How to run a full node (Nitro)](/run-arbitrum-node/02-run-full-node.mdx) | | Send **pre-Nitro** archive requests | Full node (Classic) | [How to run a full node (Classic, pre-Nitro)](/run-arbitrum-node/more-types/03-run-classic-node.mdx) | | Send **post-Nitro** _and_ **pre-Nitro** archive requests | Full node (Nitro) _and_ full node (Classic) | That's what this how-to is for; you're in the right place. | diff --git a/arbitrum-docs/run-arbitrum-node/more-types/02-run-validator-node.mdx b/arbitrum-docs/run-arbitrum-node/more-types/02-run-validator-node.mdx index 2cef50d941..eace9d13f5 100644 --- a/arbitrum-docs/run-arbitrum-node/more-types/02-run-validator-node.mdx +++ b/arbitrum-docs/run-arbitrum-node/more-types/02-run-validator-node.mdx @@ -12,7 +12,7 @@ This page describes the different strategies a validator may follow and provides This how-to assumes that you're familiar with the following: -- How to run a full node (see instructions [here](/run-arbitrum-node/03-run-full-node.mdx)) +- How to run a full node (see instructions [here](/run-arbitrum-node/02-run-full-node.mdx)) - [How the Rollup protocol works](/how-arbitrum-works/05-validation-and-proving/02-rollup-protocol.mdx) - [How BoLD works](/how-arbitrum-works/bold/bold-technical-deep-dive.mdx#how-bold-uses-ethereum), if you're running a validator for a chain that has BoLD activated @@ -56,7 +56,7 @@ This section explains how to configure your node to act as a validator. ### Step 0: prerequisites -A validator node is a regular full node with validation enabled, so you'll have to know how to configure a full node. You can find instructions [here](/run-arbitrum-node/03-run-full-node.mdx). +A validator node is a regular full node with validation enabled, so you'll have to know how to configure a full node. You can find instructions [here](/run-arbitrum-node/02-run-full-node.mdx). Additionally, you'll need a wallet with enough funds to perform actions onchain and enough tokens to bond. Keep in mind that: @@ -100,7 +100,7 @@ Furthermore, the following logs will indicate that all components are working as ## Run a validator for an Arbitrum chain -Validation for Arbitrum chains (Orbit) works the same way as for DAO-governed Arbitrum chains. However, as specified in [How to run a node](/run-arbitrum-node/03-run-full-node.mdx#required-parameters), you need to include the information of the chain when configuring your node by using `--chain.info-json`. +Validation for Arbitrum chains (Orbit) works the same way as for DAO-governed Arbitrum chains. However, as specified in [How to run a node](/run-arbitrum-node/02-run-full-node.mdx#required-parameters), you need to include the information of the chain when configuring your node by using `--chain.info-json`. ```shell --chain.info-json= diff --git a/arbitrum-docs/run-arbitrum-node/nitro/01-build-nitro-locally.mdx b/arbitrum-docs/run-arbitrum-node/nitro/01-build-nitro-locally.mdx index 5e09792267..774eaa26ac 100644 --- a/arbitrum-docs/run-arbitrum-node/nitro/01-build-nitro-locally.mdx +++ b/arbitrum-docs/run-arbitrum-node/nitro/01-build-nitro-locally.mdx @@ -6,7 +6,7 @@ sidebar_position: 7 content_type: how-to --- -Arbitrum Nitro is the software that powers all Arbitrum chains. This how-to shows how you can build a Docker image, or binaries, directly from Nitro's source code. If you want to run a node for one of the Arbitrum chains, however, it is recommended that you use the docker image available on DockerHub, as explained in [How to run a full node](/run-arbitrum-node/03-run-full-node.mdx). +Arbitrum Nitro is the software that powers all Arbitrum chains. This how-to shows how you can build a Docker image, or binaries, directly from Nitro's source code. If you want to run a node for one of the Arbitrum chains, however, it is recommended that you use the docker image available on DockerHub, as explained in [How to run a full node](/run-arbitrum-node/02-run-full-node.mdx). This how-to assumes that you're running one of the following operating systems: diff --git a/arbitrum-docs/run-arbitrum-node/nitro/02-migrate-state-and-history-from-classic.mdx b/arbitrum-docs/run-arbitrum-node/nitro/02-migrate-state-and-history-from-classic.mdx index 286d0ce38c..43193b5bf0 100644 --- a/arbitrum-docs/run-arbitrum-node/nitro/02-migrate-state-and-history-from-classic.mdx +++ b/arbitrum-docs/run-arbitrum-node/nitro/02-migrate-state-and-history-from-classic.mdx @@ -8,7 +8,7 @@ content_type: how-to sidebar_position: 11 --- -When running a Nitro node for the first time on a chain that produced [classic blocks](/build-decentralized-apps/03-public-chains.mdx#classic-deprecated) in the past (like Arbitrum One), you need to initialize its database to, at least, the state of the chain after executing the last classic block. The common, and recommended, way of doing that is to provide a database snapshot using the `--init.url` option (as mentioned in [How to run a full node (Nitro)](/run-arbitrum-node/03-run-full-node.mdx)). In this how-to we show you an alternative way for doing that, migrating the state and history of the chain from a fully synced classic node. +When running a Nitro node for the first time on a chain that produced [classic blocks](/build-decentralized-apps/03-public-chains.mdx#classic-deprecated) in the past (like Arbitrum One), you need to initialize its database to, at least, the state of the chain after executing the last classic block. The common, and recommended, way of doing that is to provide a database snapshot using the `--init.url` option (as mentioned in [How to run a full node (Nitro)](/run-arbitrum-node/02-run-full-node.mdx)). In this how-to we show you an alternative way for doing that, migrating the state and history of the chain from a fully synced classic node. :::info Is this How-to for you? @@ -23,7 +23,7 @@ Keep in mind that this process only applies to Arbitrum One. Other Arbitrum chai To successfully migrate the state and history of the chain from a classic (pre-Nitro) node to a Nitro node, you'll need: - A fully synced classic node: you can find instructions on how to run a classic node in [this page](/run-arbitrum-node/more-types/03-run-classic-node.mdx). -- A clean, uninitialized Nitro node: you can find instructions on how to set up a Nitro node in [this page](/run-arbitrum-node/03-run-full-node.mdx). +- A clean, uninitialized Nitro node: you can find instructions on how to set up a Nitro node in [this page](/run-arbitrum-node/02-run-full-node.mdx). ## Step 1: Enable export options in your classic node @@ -87,5 +87,5 @@ This state import operation requires more resources than a regular run of a Nitr ## See also -- [How to run a full node (Nitro)](/run-arbitrum-node/03-run-full-node.mdx) +- [How to run a full node (Nitro)](/run-arbitrum-node/02-run-full-node.mdx) - [How to run a full node (Classic, pre-Nitro)](/run-arbitrum-node/more-types/03-run-classic-node.mdx) diff --git a/arbitrum-docs/run-arbitrum-node/partials/run-full-node/_dao-chains-parameters.mdx b/arbitrum-docs/run-arbitrum-node/partials/run-full-node/_dao-chains-parameters.mdx index 943b7e94cb..771d127e05 100644 --- a/arbitrum-docs/run-arbitrum-node/partials/run-full-node/_dao-chains-parameters.mdx +++ b/arbitrum-docs/run-arbitrum-node/partials/run-full-node/_dao-chains-parameters.mdx @@ -16,7 +16,7 @@ Additionally, use the parameter `--parent-chain.blob-client.beacon-url` to provi --parent-chain.blob-client.beacon-url= ``` -You can find a list of Ethereum beacon chain RPC providers [here](/run-arbitrum-node/05-l1-ethereum-beacon-chain-rpc-providers.mdx). Note that historical blob data is required for these chains to properly sync up if they are new or have been offline for more than 18 days. This means that the beacon chain RPC endpoint you use may also need to provide historical blob data. Please see [Special notes on ArbOS 20: Atlas support for EIP-4844](/run-arbitrum-node/arbos-releases/arbos20.mdx#special-notes-on-arbos-20-atlas-support-for-eip-4844) for more details. +You can find a list of Ethereum beacon chain RPC providers [here](/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.mdx). Note that historical blob data is required for these chains to properly sync up if they are new or have been offline for more than 18 days. This means that the beacon chain RPC endpoint you use may also need to provide historical blob data. Please see [Special notes on ArbOS 20: Atlas support for EIP-4844](/run-arbitrum-node/arbos-releases/arbos20.mdx#special-notes-on-arbos-20-atlas-support-for-eip-4844) for more details. #### 2. Arbitrum chain parameters diff --git a/arbitrum-docs/run-arbitrum-node/partials/run-full-node/_orbit-chains-parameters.mdx b/arbitrum-docs/run-arbitrum-node/partials/run-full-node/_orbit-chains-parameters.mdx index 0b08a8a3ab..1a8203f01d 100644 --- a/arbitrum-docs/run-arbitrum-node/partials/run-full-node/_orbit-chains-parameters.mdx +++ b/arbitrum-docs/run-arbitrum-node/partials/run-full-node/_orbit-chains-parameters.mdx @@ -22,7 +22,7 @@ Additionally, if the chain is a Layer-2 (L2) chain on top of Ethereum and uses b --parent-chain.blob-client.beacon-url= ``` -You can find a list of Ethereum beacon chain RPC providers [here](/run-arbitrum-node/05-l1-ethereum-beacon-chain-rpc-providers.mdx). Note that historical blob data is required for these chains to properly sync up if they are new or have been offline for more than 18 days. This means that the beacon chain RPC endpoint you use may also need to provide historical blob data. Please see [Special notes on ArbOS 20: Atlas support for EIP-4844](/run-arbitrum-node/arbos-releases/arbos20.mdx#special-notes-on-arbos-20-atlas-support-for-eip-4844) for more details. +You can find a list of Ethereum beacon chain RPC providers [here](/run-arbitrum-node/04-l1-ethereum-beacon-chain-rpc-providers.mdx). Note that historical blob data is required for these chains to properly sync up if they are new or have been offline for more than 18 days. This means that the beacon chain RPC endpoint you use may also need to provide historical blob data. Please see [Special notes on ArbOS 20: Atlas support for EIP-4844](/run-arbitrum-node/arbos-releases/arbos20.mdx#special-notes-on-arbos-20-atlas-support-for-eip-4844) for more details. #### 2. Child chain parameters diff --git a/arbitrum-docs/stylus/cli-tools-overview.md b/arbitrum-docs/stylus/cli-tools-overview.md index f14d25ab13..ba9675b99d 100644 --- a/arbitrum-docs/stylus/cli-tools-overview.md +++ b/arbitrum-docs/stylus/cli-tools-overview.md @@ -38,6 +38,6 @@ For more advanced usage and detailed guides, refer to the following resources: - **[Optimize WASM binaries](/stylus/how-tos/optimizing-binaries.mdx)** - **[Troubleshooting](/stylus/troubleshooting-building-stylus.md)** -- **[Run a Stylus dev node](/run-arbitrum-node/04-run-local-full-chain-simulation.mdx)** +- **[Run a Stylus dev node](/run-arbitrum-node/03-run-local-full-chain-simulation.mdx)** This overview page serves as the starting point for mastering the CLI tools available for Stylus development. From optimizing your contracts to debugging and verifying them, the `cargo-stylus` toolset is integral to a smooth development experience. diff --git a/arbitrum-docs/stylus/using-cli.mdx b/arbitrum-docs/stylus/using-cli.mdx index 1790ab0184..87e3573ea7 100644 --- a/arbitrum-docs/stylus/using-cli.mdx +++ b/arbitrum-docs/stylus/using-cli.mdx @@ -121,7 +121,7 @@ Available for commands involving transactions: | [Learn how to optimize WASM binaries](/stylus/how-tos/optimizing-binaries.mdx) | The `cargo-stylus` tool allows you to optimize WebAssembly (WASM) binaries, ensuring that your contracts are as efficient as possible. | | [Debug Stylus transactions](/stylus/how-tos/debugging-tx.mdx) | A guide to debugging transactions, helping you identify and fix issues. Gain insights into your Stylus contracts by debugging transactions. | | [Verify contracts](/stylus/how-tos/verifying-contracts.mdx) | Ensure that your Stylus contracts are correctly verified. Step-by-step instructions on how to verify your contracts using `cargo-stylus`. | -| [Run a Stylus dev node](/run-arbitrum-node/04-run-local-full-chain-simulation.mdx) | Learn how to run a local Arbitrum dev node to test your Stylus contracts. | +| [Run a Stylus dev node](/run-arbitrum-node/03-run-local-full-chain-simulation.mdx) | Learn how to run a local Arbitrum dev node to test your Stylus contracts. | #### Additional resources diff --git a/arbitrum-docs/welcome/get-started.mdx b/arbitrum-docs/welcome/get-started.mdx index 8103de6701..549c1cd8e6 100644 --- a/arbitrum-docs/welcome/get-started.mdx +++ b/arbitrum-docs/welcome/get-started.mdx @@ -19,7 +19,7 @@ The Arbitrum suite includes the protocols, chains, services, and SDKs that power | [Arbitrum Rollup](/how-arbitrum-works/05-validation-and-proving/02-rollup-protocol.mdx) | A **protocol** for scaling Ethereum smart contracts. | | [Arbitrum AnyTrust](/how-arbitrum-works/08-anytrust-protocol.mdx) | A **protocol** for scaling Ethereum smart contracts even further, with a mild trust assumption. | | [Arbitrum Nitro](/how-arbitrum-works/01-a-gentle-introduction.mdx) | The node **software** that codifies the Rollup and AnyTrust protocols. | -| [Arbitrum nodes](/run-arbitrum-node/03-run-full-node.mdx) | **Machines** that run Nitro in order to service and/or interact with an Arbitrum chain. | +| [Arbitrum nodes](/run-arbitrum-node/02-run-full-node.mdx) | **Machines** that run Nitro in order to service and/or interact with an Arbitrum chain. | | [Arbitrum One](https://portal.arbitrum.io/?chains=arbitrum-one) | A public Rollup **chain**. | | [Arbitrum Nova](https://portal.arbitrum.io/?chains=arbitrum-nova) | A public AnyTrust **chain**. | | [Arbitrum bridge](https://bridge.arbitrum.io/) | Lets you move ETH and ERC-20 tokens between Ethereum, Arbitrum, and select Arbitrum (Orbit) chains. | @@ -52,7 +52,7 @@ The Arbitrum suite includes the protocols, chains, services, and SDKs that power | Resource | Description | | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | -| [Run a full node](/run-arbitrum-node/03-run-full-node.mdx) | Targeted at node runners who want to access Arbitrum chains without having to connect to a third-party node. | +| [Run a full node](/run-arbitrum-node/02-run-full-node.mdx) | Targeted at node runners who want to access Arbitrum chains without having to connect to a third-party node. | | [Configure a Data Availability Committee](/run-arbitrum-node/data-availability-committees/01-get-started.mdx) | Targeted at Data Availability Committee members and Arbitrum chain operators who want to run a Data Availability Server. | ## Arbitrum for chain operators From dfb80102f3fbbd7f4f487bc7002499c72a0fbcb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Tue, 27 May 2025 14:14:44 -0700 Subject: [PATCH 30/34] rename node-types to overview --- .../run-arbitrum-node/{01-node-types.mdx => 01-overview.mdx} | 0 vercel.json | 5 +++++ 2 files changed, 5 insertions(+) rename arbitrum-docs/run-arbitrum-node/{01-node-types.mdx => 01-overview.mdx} (100%) diff --git a/arbitrum-docs/run-arbitrum-node/01-node-types.mdx b/arbitrum-docs/run-arbitrum-node/01-overview.mdx similarity index 100% rename from arbitrum-docs/run-arbitrum-node/01-node-types.mdx rename to arbitrum-docs/run-arbitrum-node/01-overview.mdx diff --git a/vercel.json b/vercel.json index 82cb408bd5..be3d90389c 100644 --- a/vercel.json +++ b/vercel.json @@ -1430,6 +1430,11 @@ "destination": "/(run-arbitrum-node/more-types/run-split-validator-node/?)", "permanent": false }, + { + "source": "/(run-arbitrum-node/node-types/?)", + "destination": "/(run-arbitrum-node/overview/?)", + "permanent": false + }, { "source": "/(run-arbitrum-node/run-local-dev-node/?)", "destination": "/run-arbitrum-node/run-local-full-chain-simulation", From 5e0c44e44aedcf02082a3a1c12a2d41801b012bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Tue, 27 May 2025 14:15:18 -0700 Subject: [PATCH 31/34] update and fix sidebar --- website/sidebars.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/sidebars.js b/website/sidebars.js index 51270557a3..a076d9a184 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -753,7 +753,7 @@ const sidebars = { items: [ { type: 'doc', - id: 'run-arbitrum-node/node-types', + id: 'run-arbitrum-node/overview', label: 'Overview', }, { From f68b53c2301e1ee8f4e80e028b95e2ea2dc115ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Tue, 27 May 2025 14:15:49 -0700 Subject: [PATCH 32/34] update links with new file names --- arbitrum-docs/how-arbitrum-works/bold/gentle-introduction.mdx | 2 +- arbitrum-docs/run-arbitrum-node/01-overview.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arbitrum-docs/how-arbitrum-works/bold/gentle-introduction.mdx b/arbitrum-docs/how-arbitrum-works/bold/gentle-introduction.mdx index 8eef1ec47e..da99129c22 100644 --- a/arbitrum-docs/how-arbitrum-works/bold/gentle-introduction.mdx +++ b/arbitrum-docs/how-arbitrum-works/bold/gentle-introduction.mdx @@ -222,7 +222,7 @@ If a malicious entity wanted to attack Arbitrum, they would need to deposit 3600 - Nodes running in this mode are considered validators because they validate what they see and take onchain action. - Running a `watchtower` node is **not** a validator. - Proposers are a special role, they strictly run in `makeNodes` mode. This means a proposer is someone running an Arbitrum node in `makeNodes` mode, also making them a validator. -- For more information about see [Running a Node](/run-arbitrum-node/01-node-types.mdx) and [Validation strategies](/run-arbitrum-node/more-types/02-run-validator-node.mdx#validation-strategies). +- For more information about see [Running a Node](/run-arbitrum-node/01-overview.mdx) and [Validation strategies](/run-arbitrum-node/more-types/02-run-validator-node.mdx#validation-strategies). ::: #### Q: How do BoLD-based L3s challenge periods operate, considering the worst-case scenario? diff --git a/arbitrum-docs/run-arbitrum-node/01-overview.mdx b/arbitrum-docs/run-arbitrum-node/01-overview.mdx index 7aa806231b..fcd5bf554d 100644 --- a/arbitrum-docs/run-arbitrum-node/01-overview.mdx +++ b/arbitrum-docs/run-arbitrum-node/01-overview.mdx @@ -30,7 +30,7 @@ We strongly advise against exposing API endpoints publicly. Users considering su In order to be able to _interact with_ or _build applications on_ any of the Arbitrum chains, you need access to the corresponding Arbitrum node. Options are: -- You can use third party node providers (see the list [here](/build-decentralized-apps/reference/01-node-providers.mdx)) to get RPC access to fully-managed nodes +- You can use [ third party node providers ](/build-decentralized-apps/reference/01-node-providers.mdx) to get RPC access to fully-managed nodes - You can run your own Arbitrum node, especially if you want to always know the state of the Arbitrum chain The rest of this series focuses on the second approach: running your own Arbitrum node. From 3f4bda2ff2aa835e35352a089a3380446297f0ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Blanchemain?= Date: Tue, 27 May 2025 15:51:54 -0700 Subject: [PATCH 33/34] fix: repair broken links --- arbitrum-docs/node-running/node-running-content-map.mdx | 2 +- website/src/components/HomepageFeatures/index.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arbitrum-docs/node-running/node-running-content-map.mdx b/arbitrum-docs/node-running/node-running-content-map.mdx index 2c5f452a7d..08dcdabb69 100644 --- a/arbitrum-docs/node-running/node-running-content-map.mdx +++ b/arbitrum-docs/node-running/node-running-content-map.mdx @@ -20,7 +20,7 @@ Learn how to run an Arbitrum node. Date: Wed, 28 May 2025 11:00:56 -0500 Subject: [PATCH 34/34] minor readability changes; style --- .../node-running/node-running-content-map.mdx | 26 ++++++------- .../run-arbitrum-node/01-overview.mdx | 37 ++++++++----------- arbitrum-docs/stylus/stylus-content-map.mdx | 24 ++++++------ arbitrum-docs/welcome/get-started.mdx | 22 +++++------ 4 files changed, 51 insertions(+), 58 deletions(-) diff --git a/arbitrum-docs/node-running/node-running-content-map.mdx b/arbitrum-docs/node-running/node-running-content-map.mdx index 08dcdabb69..01e0c38fb9 100644 --- a/arbitrum-docs/node-running/node-running-content-map.mdx +++ b/arbitrum-docs/node-running/node-running-content-map.mdx @@ -19,79 +19,79 @@ Learn how to run an Arbitrum node. > diff --git a/arbitrum-docs/run-arbitrum-node/01-overview.mdx b/arbitrum-docs/run-arbitrum-node/01-overview.mdx index fcd5bf554d..ef7f3f3459 100644 --- a/arbitrum-docs/run-arbitrum-node/01-overview.mdx +++ b/arbitrum-docs/run-arbitrum-node/01-overview.mdx @@ -12,7 +12,7 @@ import { VanillaAdmonition } from '@site/src/components/VanillaAdmonition/'; -There is no protocol level incentive to run an Arbitum full node. If you’re interested in accessing an Arbitrum chain, but you don’t want to set up your own node, see our [RPC endpoints and providers](/build-decentralized-apps/reference/01-node-providers.mdx) to get RPC access to fully-managed nodes hosted by a third party provider. +There is no protocol-level incentive to run an Arbitum full node. If you’re interested in accessing an Arbitrum chain but don’t want to set up a node locally, see our [RPC endpoints and providers](/build-decentralized-apps/reference/01-node-providers.mdx) to get RPC access to fully managed nodes hosted by a third-party provider. @@ -20,46 +20,39 @@ There is no protocol level incentive to run an Arbitum full node. If you’re in When exposing API endpoints to the Internet or any untrusted/hostile network, the following risks may arise: -- Increased risk of crashes due to OOM: - Exposing endpoints raises the risk of Out-of-Memory (OOM) crashes. -- Increased risk of not keeping up with chain progression: +- **Increased risk of crashes due to Out-of-Memory (OOM)**: + Exposing endpoints increases the risk of OOM crashes. +- **Increased risk of not keeping up with chain progression**: Resource starvation (IO or CPU) may occur, leading to an inability to keep up with chain progression. We strongly advise against exposing API endpoints publicly. Users considering such exposure should exercise caution and implement the right measures to enhance resilience. + ::: -In order to be able to _interact with_ or _build applications on_ any of the Arbitrum chains, you need access to the corresponding Arbitrum node. Options are: +To be able to _interact with_ or _build applications on_ any of the Arbitrum chains, you need access to the corresponding Arbitrum node. Options are: - You can use [ third party node providers ](/build-decentralized-apps/reference/01-node-providers.mdx) to get RPC access to fully-managed nodes -- You can run your own Arbitrum node, especially if you want to always know the state of the Arbitrum chain +- You can run your own Arbitrum node, especially if you want always to know the state of the Arbitrum chain The rest of this series focuses on the second approach: running your own Arbitrum node. -When exposing API endpoints to the Internet or any untrusted/hostile network, the following risks may arise: - -- Increased risk of crashes due to OOM: - Exposing endpoints raises the risk of Out-of-Memory (OOM) crashes. -- Increased risk of not keeping up with chain progression: - Resource starvation (IO or CPU) may occur, leading to an inability to keep up with chain progression. - -We strongly advise against exposing API endpoints publicly. Users considering such exposure should exercise caution and implement the right measures to enhance resilience. ::: -In order to be able to _interact with_ or _build applications on_ any of the Arbitrum chains, you need access to the corresponding Arbitrum node. Options are: +To be able to _interact with_ or _build applications on_ any of the Arbitrum chains, you need access to the corresponding Arbitrum node. Options are: -When it comes to interacting with the Arbitrum network, users have the option to run either a full node or an archive node. There are distinct advantages to running an Arbitrum full node. In this quickstart, we will explore the reasons why a user may prefer to run a full node instead of an archive node. By understanding the benefits and trade-offs of each type of node, users can make an informed decision based on their specific requirements and objectives. +When interacting with the Arbitrum network, users have the option to run either a full node or an archive node. There are distinct advantages to running an Arbitrum full node. In this quick start, we will explore the reasons why a user may prefer to run a full node instead of an archive node. By understanding the benefits and trade-offs of each node type, users can make an informed decision based on their specific requirements and objectives. ### Considerations for running an Arbitrum full node -- Transaction validation and security: Running a full node allows users to independently validate transactions and verify the state of the Arbitrum blockchain. Users can have full confidence in the authenticity and integrity of the transactions they interact with. -- Reduced trust requirements: By running a full node, users can interact with the Arbitrum network without relying on third-party services or infrastructure. This reduces the need to trust external entities and mitigates the risk of potential centralized failures or vulnerabilities. -- Lower resource requirements: Compared to archive nodes, full nodes generally require fewer resources such as storage and computational power. This makes them more accessible to users with limited hardware capabilities or those operating on resource-constrained environments. +- **Transaction validation and security**: Running a full node allows users to independently validate transactions and verify the state of the Arbitrum blockchain. Users can have complete confidence in the authenticity and integrity of the transactions they interact with. +- **Reduced trust requirements**: By running a full node, users can interact with the Arbitrum network without relying on third-party services or infrastructure. This independence reduces the need to trust external entities and mitigates the risk of potential centralized failures or vulnerabilities. +- **Lower resource requirements**: Compared to archive nodes, full nodes generally require fewer resources such as storage and computational power. These requirements make it more accessible to users with limited hardware capabilities or those operating in resource-constrained environments. For detailed instructions, read [how to run an Arbitrum full node](/run-arbitrum-node/02-run-full-node.mdx). ### Considerations for running an Arbitrum archive node -While full nodes offer numerous advantages, there are situations where running an archive node may be more appropriate. Archive nodes store the complete history of the Arbitrum network, making them suitable for users who require extensive historical data access or advanced analytical purposes. However, it's important to note that archive nodes are more resource-intensive, requiring significant storage capacity and computational power. +While full nodes offer numerous advantages, there are situations where running an archive node may be more appropriate. Archive nodes store the complete history of the Arbitrum network, making them suitable for users who require access to extensive historical data or advanced analytical purposes. However, it's important to note that archive nodes are more resource-intensive, requiring significant storage capacity and computational power. For detailed instructions, read [how to run an Arbitrum archive node](/run-arbitrum-node/more-types/01-run-archive-node.mdx). @@ -71,8 +64,8 @@ For detailed instructions, read [how to run an Arbitrum classic node](/run-arbit ### Considerations for running a feed relay -If you are running a single node, there is no requirement to set up a feed relay. However, if you have multiple nodes, it is highly recommended to have a single feed relay per datacenter. This setup offers several advantages such as reducing ingress fees and enhancing stability within the network. +If you are running a single node, there is no requirement to set up a feed relay. However, if you have multiple nodes, it is highly recommended to have a single feed relay per data center. This setup offers several advantages, including reducing ingress fees and enhancing network stability. -In the near future, feed endpoints will mandate compression using a custom dictionary. Therefore, if you plan to connect to a feed using anything other than a standard node, it is strongly advised to run a local feed relay. This will ensure that you have access to an uncompressed feed by default, maintaining optimal performance and compatibility. +Soon, feed endpoints will mandate compression using a custom dictionary. Therefore, if you plan to connect to a feed using anything other than a standard node, it is strongly advised to run a local feed relay. This local feed relay will ensure that you have access to an uncompressed feed by default, maintaining optimal performance and compatibility. For detailed instructions, read [how to run an Arbitrum feed relay](/run-arbitrum-node/sequencer/01-run-feed-relay.mdx). diff --git a/arbitrum-docs/stylus/stylus-content-map.mdx b/arbitrum-docs/stylus/stylus-content-map.mdx index 7ff1449ffe..04f9fa60f8 100644 --- a/arbitrum-docs/stylus/stylus-content-map.mdx +++ b/arbitrum-docs/stylus/stylus-content-map.mdx @@ -19,73 +19,73 @@ Let's learn how to write contracts with Stylus! > diff --git a/arbitrum-docs/welcome/get-started.mdx b/arbitrum-docs/welcome/get-started.mdx index 549c1cd8e6..b9e8a3c6c1 100644 --- a/arbitrum-docs/welcome/get-started.mdx +++ b/arbitrum-docs/welcome/get-started.mdx @@ -14,17 +14,17 @@ Arbitrum suite along with onboarding guidance tailored to specific audiences. The Arbitrum suite includes the protocols, chains, services, and SDKs that power the Arbitrum ecosystem: -| Component | Description | -| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -| [Arbitrum Rollup](/how-arbitrum-works/05-validation-and-proving/02-rollup-protocol.mdx) | A **protocol** for scaling Ethereum smart contracts. | -| [Arbitrum AnyTrust](/how-arbitrum-works/08-anytrust-protocol.mdx) | A **protocol** for scaling Ethereum smart contracts even further, with a mild trust assumption. | -| [Arbitrum Nitro](/how-arbitrum-works/01-a-gentle-introduction.mdx) | The node **software** that codifies the Rollup and AnyTrust protocols. | -| [Arbitrum nodes](/run-arbitrum-node/02-run-full-node.mdx) | **Machines** that run Nitro in order to service and/or interact with an Arbitrum chain. | -| [Arbitrum One](https://portal.arbitrum.io/?chains=arbitrum-one) | A public Rollup **chain**. | -| [Arbitrum Nova](https://portal.arbitrum.io/?chains=arbitrum-nova) | A public AnyTrust **chain**. | -| [Arbitrum bridge](https://bridge.arbitrum.io/) | Lets you move ETH and ERC-20 tokens between Ethereum, Arbitrum, and select Arbitrum (Orbit) chains. | -| [Arbitrum (Orbit) chains](https://orbit.arbitrum.io/) | Lets you run your own Rollup and AnyTrust chains. | -| [Arbitrum Stylus](/stylus/gentle-introduction.mdx) | Lets you write EVM-compatible smart contracts in Rust and any other language that compiles to Wasm. | +| Component | Description | +| --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| [Arbitrum Rollup](/how-arbitrum-works/05-validation-and-proving/02-rollup-protocol.mdx) | A **protocol** for scaling Ethereum smart contracts. | +| [Arbitrum AnyTrust](/how-arbitrum-works/08-anytrust-protocol.mdx) | A **protocol** for scaling Ethereum smart contracts even further, with a mild trust assumption. | +| [Arbitrum Nitro](/how-arbitrum-works/01-a-gentle-introduction.mdx) | The node **software** that codifies the Rollup and AnyTrust protocols. | +| [Arbitrum nodes](/run-arbitrum-node/02-run-full-node.mdx) | **Machines** that run Nitro in order to service and/or interact with an Arbitrum chain. | +| [Arbitrum One](https://portal.arbitrum.io/?chains=arbitrum-one) | A public Rollup **chain**. | +| [Arbitrum Nova](https://portal.arbitrum.io/?chains=arbitrum-nova) | A public AnyTrust **chain**. | +| [Arbitrum bridge](https://bridge.arbitrum.io/) | Lets you move `ETH` and `ERC-20` tokens between Ethereum, Arbitrum, and select Arbitrum (Orbit) chains. | +| [Arbitrum (Orbit) chains](https://orbit.arbitrum.io/) | Lets you run your own Rollup and AnyTrust chains. | +| [Arbitrum Stylus](/stylus/gentle-introduction.mdx) | Lets you write EVM-compatible smart contracts in Rust and any other language that compiles to Wasm. | ## Arbitrum for users