From 7d36323ff5c4050dcb23ad7317e72813d0aaea6a Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Thu, 20 Jul 2023 19:55:08 -0500 Subject: [PATCH 1/6] feat(oper/which-node): Initial version --- src/docs/developers/build/run-a-node.md | 286 -------------------- src/docs/developers/node-oper/which-node.md | 53 ++++ 2 files changed, 53 insertions(+), 286 deletions(-) delete mode 100644 src/docs/developers/build/run-a-node.md create mode 100644 src/docs/developers/node-oper/which-node.md diff --git a/src/docs/developers/build/run-a-node.md b/src/docs/developers/build/run-a-node.md deleted file mode 100644 index d1f160d20..000000000 --- a/src/docs/developers/build/run-a-node.md +++ /dev/null @@ -1,286 +0,0 @@ ---- -title: Running an OP Mainnet or testnet node -lang: en-US ---- - -If you're looking to build an app on OP Mainnet you'll need access to an OP Mainnet node. You have two options - use a hosted node from providers like Alchemy or run your own. - -## Hosted node providers - -You can get a free, hosted one from [any of these providers](../../useful-tools/providers.md) to get up and building quickly. Of them, [Alchemy](https://www.alchemy.com/optimism) is our preferred node provider, and is used to power our [public endpoint](../../useful-tools/networks.md). - -However, you might be interested in running your very own node. -Here we'll go over the process of running an OP Mainnet or testnet node for yourself. - -## Upgrades - -If you run a node you need to subscribe to [an update feed](../releases.md) (either [the mailing list](https://groups.google.com/a/optimism.io/g/optimism-announce) or [the RSS feed](https://changelog.optimism.io/feed.xml)) to know when to upgrade. -Otherwise, your node will eventually stop working. - -## Configuration choices - -### Hardware requirements - -Replicas need to store the transaction history of OP Mainnet (or the relevant OP testnet) and to run Geth. -They need to be relatively powerful machines (real or virtual). -We recommend at least 16 GB RAM, and an SSD drive with at least 500 GB free (for OP Mainnet). - -### Source of synchronization - - - -[The `op-geth` component](../bedrock/explainer.md#execution-client) synchronizes from both other OP Mainnet (or testnet) nodes (https://github.com/ethereum-optimism/optimism/blob/65ec61dde94ffa93342728d324fecf474d228e1f/specs/exec-engine.md#happy-path-sync), meaning L2, [and Ethereum (or the appropriate L1 testnet)](https://github.com/ethereum-optimism/optimism/blob/65ec61dde94ffa93342728d324fecf474d228e1f/specs/exec-engine.md#worst-case-sync) if necessary. - -To synchronize only from L1, you edit the [op-node configuration](https://github.com/ethereum-optimism/optimism/blob/65ec61dde94ffa93342728d324fecf474d228e1f/specs/rollup-node.md) to set `OP_NODE_P2P_DISABLE` to `true`. - -When you use RPC to get block information (https://github.com/ethereum-optimism/optimism/blob/65ec61dde94ffa93342728d324fecf474d228e1f/specs/rollup-node.md#l2-output-rpc-method), you can specify one of four options for `blockNumber`: - -- an actual block number -- **pending**: Latest L2 block -- **latest**: Latest block written to L1 -- **finalized**: Latest block fully finalized on L1 (a process that takes 12 minutes with Proof of Stake) - - - -## Docker configuration - -The recommended method to create a replica is to use [Docker](https://www.docker.com/) and the Docker images we provide for [`op-geth`](https://github.com/ethereum-optimism/op-geth/releases/latest) and [`op-node`](https://github.com/ethereum-optimism/optimism/releases/). -For `op-node` you need to scroll down to the latest release that has `op-node`. - -They include all the configuration settings. -This is the recommended method because it is what we for our own systems. -As such, the docker images go through a lot more tests than any other configuration. - -### Configuring and running the node - -Follow [these instructions](https://github.com/smartcontracts/simple-optimism-node) to build and run the node. - - -## Non-docker configuration - -Here are the instructions if you want to build you own read-only replica without relying on our images. -These instructions were generated on an Ubuntu 20.04 box, but they should work with other systems too. - -**Note:** This is *not* the recommended configuration. -While we did QA on these instructions and they work, the QA that the docker images undergo is much more extensive. - - -### Build the Optimism Monorepo - -1. Clone the [Optimism Monorepo](https://github.com/ethereum-optimism/optimism). - - ```bash - cd ~ - git clone https://github.com/ethereum-optimism/optimism.git - ``` - -1. Install required modules. - This is a slow process, while it is running you can already start building `op-geth`, as shown below. - - ```bash - cd optimism - yarn install - ``` - -1. Build the various packages inside of the Optimism Monorepo. - - ```bash - make op-node - yarn build - ``` - -### Build op-geth - -1. Clone [`op-geth`](https://github.com/ethereum-optimism/op-geth): - - ```bash - cd ~ - git clone https://github.com/ethereum-optimism/op-geth.git - ``` - - -1. Build `op-geth`: - - ```bash - cd op-geth - make geth - ``` - - - -### Get the data dir - -The next step is to download the data directory for `op-geth`. - -1. Download the correct data directory snapshot. - - - [OP Mainnet](https://datadirs.optimism.io/mainnet-bedrock.tar.zst) - - [OP Goerli](https://datadirs.optimism.io/goerli-bedrock.tar.zst) - -1. Create the data directory in `op-geth` and fill it. - Note that these directions assume the data directory snapshot is at `~`, the home directory. Modify if needed. - - ```sh - cd ~/op-geth - mkdir datadir - cd datadir - tar xvf ~/*bedrock.tar - ``` - -1. Create a shared secret with `op-node`: - - ```sh - cd ~/op-geth - openssl rand -hex 32 > jwt.txt - cp jwt.txt ~/optimism/op-node - ``` - -### Scripts to start the different components - -#### `op-geth` - -This is the script for OP Goerli. -For OP Mainnet (or other OP networks in the future, [get the sequencer URL here](../../useful-tools/networks.md)). - -``` -#! /usr/bin/bash - -SEQUENCER_URL=https://goerli-sequencer.optimism.io/ - -cd ~/op-geth - -./build/bin/geth \ - --ws \ - --ws.port=8546 \ - --ws.addr=0.0.0.0 \ - --ws.origins="*" \ - --http \ - --http.port=8545 \ - --http.addr=0.0.0.0 \ - --http.vhosts="*" \ - --http.corsdomain="*" \ - --authrpc.addr=localhost \ - --authrpc.jwtsecret=./jwt.txt \ - --authrpc.port=8551 \ - --authrpc.vhosts="*" \ - --datadir=/data \ - --verbosity=3 \ - --rollup.sequencerhttp=$SEQUENCER_URL \ - --nodiscover \ - --syncmode=full \ - --maxpeers=0 \ - --datadir ./datadir \ - --snapshot=false -``` - - -::: info Snapshots - -For the initial synchronization it's a good idea to disable snapshots (`--snapshot=false`) to speed it up. -Later, for regular usage, you can remove that option to improve geth database integrity. - -::: - -#### `op-node` - -- Change `<< URL to L1 >>` to a service provider's URL for the L1 network (either L1 Ethereum or Goerli). -- Set `L1KIND` to the network provider you are using (alchemy, infura, etc.). -- Set `NET` to either `goerli` or `mainnet`. - - -``` -#! /usr/bin/bash - -L1URL= << URL to L1 >> -L1KIND=alchemy -NET=goerli - -cd ~/optimism/op-node - -./bin/op-node \ - --l1=$L1UL \ - --l1.rpckind=$L1KIND \ - --l2=http://localhost:8551 \ - --l2.jwt-secret=./jwt.txt \ - --network=$NET \ - --rpc.addr=0.0.0.0 \ - --rpc.port=8547 - -``` - - - - -### The initial synchornization - -The datadir provided by Optimism is not updated continuously, so before you can use the node you need a to synchronize it. - -During that process you get log messages from `op-node`, and nothing else appears to happen. - -``` -INFO [06-26|13:31:20.389] Advancing bq origin origin=17171d..1bc69b:8300332 originBehind=false -``` - -That is normal - it means that `op-node` is looking for a location in the batch queue. -After a few minutes it finds it, and then it can start synchronizing. - -While it is synchronizing, you can expect log messages such as these from `op-node`: - -``` -INFO [06-26|14:00:59.460] Sync progress reason="processed safe block derived from L1" l2_finalized=ef93e6..e0f367:4067805 l2_safe=7fe3f6..900127:4068014 l2_unsafe=7fe3f6..900127:4068014 l2_time=1,673,564,096 l1_derived=6079cd..be4231:8301091 -INFO [06-26|14:00:59.460] Found next batch epoch=8e8a03..11a6de:8301087 batch_epoch=8301087 batch_timestamp=1,673,564,098 -INFO [06-26|14:00:59.461] generated attributes in payload queue txs=1 timestamp=1,673,564,098 -INFO [06-26|14:00:59.463] inserted block hash=e80dc4..72a759 number=4,068,015 state_root=660ced..043025 timestamp=1,673,564,098 parent=7fe3f6..900127 prev_randao=78e43d..36f07a fee_recipient=0x4200000000000000000000000000000000000011 txs=1 update_safe=true -``` - -And log messages such as these from `op-geth`: - -``` -INFO [06-26|14:02:12.974] Imported new potential chain segment number=4,068,194 hash=a334a0..609a83 blocks=1 txs=1 mgas=0.000 elapsed=1.482ms mgasps=0.000 age=5mo2w20h dirty=2.31MiB -INFO [06-26|14:02:12.976] Chain head was updated number=4,068,194 hash=a334a0..609a83 root=e80f5e..dd06f9 elapsed="188.373µs" age=5mo2w20h -INFO [06-26|14:02:12.982] Starting work on payload id=0x5542117d680dbd4e -``` - -#### How long will the synchronization take? - -To estimate how long the synchronization will take, you need to first find out how many blocks you synchronize in a minute. - -You can use this script, which uses [Foundry](https://book.getfoundry.sh/). and the UNIX Note that this script is for OP Goerli. -For OP Mainnet substitute `https://mainnet.optimism.io` - -```sh -#! /usr/bin/bash - -export ETH_RPC_URL=http://localhost:8545 -T0=`cast block latest number` ; sleep 60 ; T1=`cast block latest number` -PER_MIN=`expr $T1 - $T0` -echo Blocks per minute: $PER_MIN - - -if [ $PER_MIN -eq 0 ]; then - echo Not synching - exit; -fi - -# During that minute the head of the chain progressed by thirty blocks -PROGRESS_PER_MIN=`expr $PER_MIN - 30` -echo Progress per minute: $PROGRESS_PER_MIN - - -# How many more blocks do we need? -HEAD=`cast block --rpc-url https://goerli.optimism.io latest number` -BEHIND=`expr $HEAD - $T1` -MINUTES=`expr $BEHIND / $PROGRESS_PER_MIN` -HOURS=`expr $MINUTES / 60` -echo Hours until sync completed: $HOURS - -if [ $HOURS -gt 24 ] ; then - DAYS=`expr $HOURS / 24` - echo Days until sync complete: $DAYS -fi -``` - - -### Operations - -It is best to start `op-geth` first and shut it down last. diff --git a/src/docs/developers/node-oper/which-node.md b/src/docs/developers/node-oper/which-node.md new file mode 100644 index 000000000..8311c4887 --- /dev/null +++ b/src/docs/developers/node-oper/which-node.md @@ -0,0 +1,53 @@ +--- +title: Should you run your own node? +lang: en-US +--- + +If you're looking to build an app on OP Mainnet you'll need access to an OP Mainnet node. You have two options - use a hosted node from providers like Alchemy or run your own. + + +## Hosted node providers + +You can get a free, hosted node from [any of these providers](../../useful-tools/providers.md) to get up and building quickly. +Of them, [Alchemy](https://www.alchemy.com/optimism) is our preferred node provider, and is used to power our [public endpoint](../../useful-tools/networks.md). + +Many applications include a server component that needs to communicate directly with the blockchain, if only to query for information. +Once an application's needs exceed the free tier, you can use one of the paid tiers to continue to use the hosted node provider. + + +## Running your own node + +There are several advantages to running your own node: + +- **Cost**. If your application runs a lot of queries ([`eth_call`](https://docs.alchemy.com/reference/eth-call-optimism), [`eth_estimateGas`](https://docs.alchemy.com/reference/eth-estimategas-optimism), etc.) it might be cheaper to run your own node instead of using a service provider. +- **Verification**. Some types of application need to *know* that the state commitments submitted by the sequencer are accurate. + For example, bridges can allow fast withdrawals because they know that the assets deposited with them on L2 really exist, and belong to the user depositing them. + Bridges achieve this, before the + + +Of course, there are some additional considerations and costs to running a node on your own: + +### Hardware + +Replicas need to store the transaction history of OP Mainnet (or the relevant OP testnet) and to run both `op-geth` and `op-node`. +They need to be relatively powerful machines (real or virtual). +We recommend at least 16 GB RAM, and an SSD drive with at least 500 GB free (for OP Mainnet). +Note that during installation time you'll need more storage because you temporarily need space for a compressed copy of the latest snapshot as well as the decompressed `op-geth` data directory. + + +### Synchronization + +[The `op-node` component](../bedrock/explainer.md#rollup-node) synchronizes from L1. +You need to get L1 Ethereum access from somewhere, either a node provider or a node that your organization runs. + +[The `op-geth` component](../bedrock/explainer.md#execution-client) synchronizes from both other OP Mainnet (or testnet) nodes (https://github.com/ethereum-optimism/optimism/blob/65ec61dde94ffa93342728d324fecf474d228e1f/specs/exec-engine.md#happy-path-sync), meaning L2, [and Ethereum (or the appropriate L1 testnet)](https://github.com/ethereum-optimism/optimism/blob/65ec61dde94ffa93342728d324fecf474d228e1f/specs/exec-engine.md#worst-case-sync) if necessary. + +To synchronize only from L1, you edit the [op-node configuration](https://github.com/ethereum-optimism/optimism/blob/65ec61dde94ffa93342728d324fecf474d228e1f/specs/rollup-node.md) to set `OP_NODE_P2P_DISABLE` to `true`. + + + + +### Upgrades + +If you run a node you need to subscribe to either [the mailing list](https://groups.google.com/a/optimism.io/g/optimism-announce) or [the RSS feed](https://changelog.optimism.io/feed.xml) to know when to upgrade. +Otherwise, your node will eventually stop working. \ No newline at end of file From 0a29a0c20f8f2c988de1389b5951fc0a5765ceb8 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Thu, 20 Jul 2023 19:59:25 -0500 Subject: [PATCH 2/6] feat(oper-area): Update --- src/docs/developers/node-oper/README.md | 1 + src/docs/developers/node-oper/dockerless.md | 273 ++++++++++++++++++++ 2 files changed, 274 insertions(+) create mode 120000 src/docs/developers/node-oper/README.md create mode 100644 src/docs/developers/node-oper/dockerless.md diff --git a/src/docs/developers/node-oper/README.md b/src/docs/developers/node-oper/README.md new file mode 120000 index 000000000..6b5ca8aea --- /dev/null +++ b/src/docs/developers/node-oper/README.md @@ -0,0 +1 @@ +which-node.md \ No newline at end of file diff --git a/src/docs/developers/node-oper/dockerless.md b/src/docs/developers/node-oper/dockerless.md new file mode 100644 index 000000000..f2ebce308 --- /dev/null +++ b/src/docs/developers/node-oper/dockerless.md @@ -0,0 +1,273 @@ +--- +title: Running a node without Docker +lang: en-US +--- + + +Here are the instructions if you want to build you own read-only replica without relying on our images. +These instructions were generated on an Ubuntu 20.04 LTS box, but they should work with other systems too. + +**Note:** This is *not* the recommended configuration. +While we did QA on these instructions and they work, the QA that the docker images undergo is much more extensive. + +## Prerequisites + +You’ll need the following software installed to follow this tutorial: + +- [Git](https://git-scm.com/) +- [Go](https://go.dev/) +- [Node](https://nodejs.org/en/) +- [Pnpm](https://classic.yarnpkg.com/lang/en/docs/install/) +- [Foundry](https://github.com/foundry-rs/foundry#installation) +- [Make](https://linux.die.net/man/1/make) +- [jq](https://github.com/jqlang/jq) +- [direnv](https://direnv.net) +- [zstd](http://facebook.github.io/zstd/) + +This tutorial was checked on: + +| Software | Version | Installation command(s) | +| -------- | ---------- | - | +| Ubuntu | 20.04 LTS | | +| git, curl, jq, make, and zstd | OS default | `sudo apt update`
`sudo apt install -y git curl make jq zstd`| +| Go | 1.20 | `wget https://go.dev/dl/go1.20.linux-amd64.tar.gz`
`tar xvzf go1.20.linux-amd64.tar.gz`
`sudo cp go/bin/go /usr/bin/go`
`sudo mv go /usr/lib`
`echo export GOROOT=/usr/lib/go >> ~/.bashrc` +| Node | 16.19.0 | `curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -`
`sudo apt-get install -y nodejs` +| pnpm | 8.5.6 | `sudo npm install -g pnpm` +| yarn | 1.22.19 | `sudo npm install -g yarn` +| Foundry | 0.2.0 | `curl -L https://foundry.paradigm.xyz | bash`
`. ~/.bashrc`
`foundryup` + + +## Build the Optimism Monorepo + +1. Clone the [Optimism Monorepo](https://github.com/ethereum-optimism/optimism). + + ```bash + cd ~ + git clone https://github.com/ethereum-optimism/optimism.git + ``` + +1. Install required modules. + This is a slow process, while it is running you can already start building `op-geth`, as shown below. + + ```bash + cd optimism + pnpm install + ``` + +1. Build the necessary packages inside of the Optimism Monorepo. + + ```bash + make op-node + pnpm build + ``` + +## Build op-geth + +1. Clone [`op-geth`](https://github.com/ethereum-optimism/op-geth): + + ```bash + cd ~ + git clone https://github.com/ethereum-optimism/op-geth.git + ``` + + +1. Build `op-geth`: + + ```bash + cd op-geth + make geth + ``` + + + +## Get the data dir + +The next step is to download the data directory for `op-geth`. + +1. Download the correct data directory snapshot. + + - [OP Mainnet](https://datadirs.optimism.io/mainnet-bedrock.tar.zst) + - [OP Goerli](https://datadirs.optimism.io/goerli-bedrock.tar.zst) + +1. Create the data directory in `op-geth` and fill it. + Note that these directions assume the data directory snapshot is at `~`, the home directory. Modify if needed. + + ```sh + cd ~/op-geth + mkdir datadir + cd datadir + tar xvf ~/*bedrock.tar + ``` + +1. Create a shared secret with `op-node`: + + ```sh + cd ~/op-geth + openssl rand -hex 32 > jwt.txt + cp jwt.txt ~/optimism/op-node + ``` + +## Scripts to start the different components + +### `op-geth` + +This is the script for OP Goerli. +For OP Mainnet (or other OP networks in the future), [get the sequencer URL here](../../useful-tools/networks.md)). + +``` +#! /usr/bin/bash + +SEQUENCER_URL=https://goerli-sequencer.optimism.io/ + +cd ~/op-geth + +./build/bin/geth \ + --ws \ + --ws.port=8546 \ + --ws.addr=0.0.0.0 \ + --ws.origins="*" \ + --http \ + --http.port=8545 \ + --http.addr=0.0.0.0 \ + --http.vhosts="*" \ + --http.corsdomain="*" \ + --authrpc.addr=localhost \ + --authrpc.jwtsecret=./jwt.txt \ + --authrpc.port=8551 \ + --authrpc.vhosts="*" \ + --datadir=/data \ + --verbosity=3 \ + --rollup.sequencerhttp=$SEQUENCER_URL \ + --nodiscover \ + --syncmode=full \ + --maxpeers=0 \ + --datadir ./datadir \ + --snapshot=false +``` + + +::: info Snapshots + +For the initial synchronization it's a good idea to disable snapshots (`--snapshot=false`) to speed it up. +Later, for regular usage, you can remove that option to improve geth database integrity. + +::: + +### `op-node` + +- Change `<< URL to L1 >>` to a service provider's URL for the L1 network (either L1 Ethereum or Goerli). +- Set `L1KIND` to the network provider you are using (alchemy, infura, etc.). +- Set `NET` to either `goerli` or `mainnet`. + + +``` +#! /usr/bin/bash + +L1URL= << URL to L1 >> +L1KIND=alchemy +NET=goerli + +cd ~/optimism/op-node + +./bin/op-node \ + --l1=$L1URL \ + --l1.rpckind=$L1KIND \ + --l2=http://localhost:8551 \ + --l2.jwt-secret=./jwt.txt \ + --network=$NET \ + --rpc.addr=0.0.0.0 \ + --rpc.port=8547 + +``` + + + + +## The initial synchornization + +The datadir provided by Optimism is not updated continuously, so before you can use the node you need a to synchronize it. + +During that process you get log messages from `op-node`, and nothing else appears to happen. + +``` +INFO [06-26|13:31:20.389] Advancing bq origin origin=17171d..1bc69b:8300332 originBehind=false +``` + +That is normal - it means that `op-node` is looking for a location in the batch queue. +After a few minutes it finds it, and then it can start synchronizing. + +While it is synchronizing, you can expect log messages such as these from `op-node`: + +``` +INFO [06-26|14:00:59.460] Sync progress reason="processed safe block derived from L1" l2_finalized=ef93e6..e0f367:4067805 l2_safe=7fe3f6..900127:4068014 l2_unsafe=7fe3f6..900127:4068014 l2_time=1,673,564,096 l1_derived=6079cd..be4231:8301091 +INFO [06-26|14:00:59.460] Found next batch epoch=8e8a03..11a6de:8301087 batch_epoch=8301087 batch_timestamp=1,673,564,098 +INFO [06-26|14:00:59.461] generated attributes in payload queue txs=1 timestamp=1,673,564,098 +INFO [06-26|14:00:59.463] inserted block hash=e80dc4..72a759 number=4,068,015 state_root=660ced..043025 timestamp=1,673,564,098 parent=7fe3f6..900127 prev_randao=78e43d..36f07a fee_recipient=0x4200000000000000000000000000000000000011 txs=1 update_safe=true +``` + +And log messages such as these from `op-geth`: + +``` +INFO [06-26|14:02:12.974] Imported new potential chain segment number=4,068,194 hash=a334a0..609a83 blocks=1 txs=1 mgas=0.000 elapsed=1.482ms mgasps=0.000 age=5mo2w20h dirty=2.31MiB +INFO [06-26|14:02:12.976] Chain head was updated number=4,068,194 hash=a334a0..609a83 root=e80f5e..dd06f9 elapsed="188.373µs" age=5mo2w20h +INFO [06-26|14:02:12.982] Starting work on payload id=0x5542117d680dbd4e +``` + +### How long will the synchronization take? + +To estimate how long the synchronization will take, you need to first find out how many blocks you synchronize in a minute. + +You can use this script, which uses [Foundry](https://book.getfoundry.sh/). + + + +```sh +#! /usr/bin/bash + +export ETH_RPC_URL=http://localhost:8545 +CHAIN_ID=`cast chain-id` +echo Chain ID: $CHAIN_ID +echo Please wait + +if [ $CHAIN_ID -eq 10 ]; then + L2_URL=https://mainnet.optimism.io +fi + + +if [ $CHAIN_ID -eq 420 ]; then + L2_URL=https://goerli.optimism.io +fi + + +T0=`cast block-number` ; sleep 60 ; T1=`cast block-number` +PER_MIN=`expr $T1 - $T0` +echo Blocks per minute: $PER_MIN + + +if [ $PER_MIN -eq 0 ]; then + echo Not synching + exit; +fi + +# During that minute the head of the chain progressed by thirty blocks +PROGRESS_PER_MIN=`expr $PER_MIN - 30` +echo Progress per minute: $PROGRESS_PER_MIN + + +# How many more blocks do we need? +HEAD=`cast block-number --rpc-url $L2_URL` +BEHIND=`expr $HEAD - $T1` +MINUTES=`expr $BEHIND / $PROGRESS_PER_MIN` +HOURS=`expr $MINUTES / 60` +echo Hours until sync completed: $HOURS + +if [ $HOURS -gt 24 ] ; then + DAYS=`expr $HOURS / 24` + echo Days until sync complete: $DAYS +fi +``` + + +## Operations + +It is best to start `op-geth` first and shut it down last. From ca0f1a0666d91bde5581349b97f58b36ea7881f9 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Fri, 21 Jul 2023 10:27:08 -0500 Subject: [PATCH 3/6] WIP --- src/.vuepress/config.js | 8 +++++++- src/x | 5 +++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 src/x diff --git a/src/.vuepress/config.js b/src/.vuepress/config.js index 7177cbe1f..18544f4a7 100644 --- a/src/.vuepress/config.js +++ b/src/.vuepress/config.js @@ -337,7 +337,6 @@ module.exports = { '/docs/developers/build/transaction-fees.md', '/docs/developers/build/system-contracts.md', '/docs/developers/build/dev-node.md', - '/docs/developers/build/run-a-node.md', '/docs/developers/build/differences.md', '/docs/developers/build/json-rpc.md', '/docs/developers/build/testing-dapps.md', @@ -355,6 +354,13 @@ module.exports = { ], collapsable: true, }, + { + title: "Operating OP nodes", + children: [ + '/docs/developers/node-oper/which-node.md', + '/docs/developers/node-oper/dockerless.md' + ] + }, '/docs/developers/known-issues.md', { title: "Useful Tools", diff --git a/src/x b/src/x new file mode 100644 index 000000000..bfba84a5f --- /dev/null +++ b/src/x @@ -0,0 +1,5 @@ + + - [OP Goerli](https://datadirs.optimism.io/goerli-bedrock.tar.zst) +This is the script for OP Goerli. +You can use this script, which uses [Foundry](https://book.getfoundry.sh/). and the UNIX Note that this script is for OP Goerli. +./docs/developers/node-oper/dockerless.md From 3d0501ef95f0c709228200cac9b52e44c86b2f2f Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Fri, 21 Jul 2023 14:19:47 -0500 Subject: [PATCH 4/6] fix(which-node): Integrate @sbvegan suggestions --- src/docs/developers/node-oper/which-node.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/docs/developers/node-oper/which-node.md b/src/docs/developers/node-oper/which-node.md index 8311c4887..8ded08538 100644 --- a/src/docs/developers/node-oper/which-node.md +++ b/src/docs/developers/node-oper/which-node.md @@ -1,5 +1,5 @@ --- -title: Should you run your own node? +title: Running your own node lang: en-US --- @@ -15,7 +15,7 @@ Many applications include a server component that needs to communicate directly Once an application's needs exceed the free tier, you can use one of the paid tiers to continue to use the hosted node provider. -## Running your own node +## Should you run your own node? There are several advantages to running your own node: @@ -49,5 +49,8 @@ To synchronize only from L1, you edit the [op-node configuration](https://github ### Upgrades -If you run a node you need to subscribe to either [the mailing list](https://groups.google.com/a/optimism.io/g/optimism-announce) or [the RSS feed](https://changelog.optimism.io/feed.xml) to know when to upgrade. -Otherwise, your node will eventually stop working. \ No newline at end of file +At present, the best way to know when to upgrade your software is to look at the software releases on github. + + +- [`op-geth`](https://github.com/ethereum-optimism/op-geth/releases/latest) +- [`op-node`](https://github.com/ethereum-optimism/optimism/releases/), but because the monorepo is also used for other software, you might need to scroll down to see what is the latest `op-node` release. \ No newline at end of file From 75e01554a4e6370106cf2e15ad7908b1d11573c0 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Fri, 21 Jul 2023 14:45:16 -0500 Subject: [PATCH 5/6] feat(run-a-node): Add as a redirect --- src/docs/developers/build/run-a-node.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/docs/developers/build/run-a-node.md diff --git a/src/docs/developers/build/run-a-node.md b/src/docs/developers/build/run-a-node.md new file mode 100644 index 000000000..19e29398b --- /dev/null +++ b/src/docs/developers/build/run-a-node.md @@ -0,0 +1,7 @@ + From 7595225ab7a0ecf42ce57ef36c3ee36bf1c73a8e Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Wed, 26 Jul 2023 08:14:59 -0500 Subject: [PATCH 6/6] Added that the instructions let you submit txns I couldn't do it before today because I had to verify it works. --- src/docs/developers/node-oper/dockerless.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/docs/developers/node-oper/dockerless.md b/src/docs/developers/node-oper/dockerless.md index f2ebce308..3fcb969c7 100644 --- a/src/docs/developers/node-oper/dockerless.md +++ b/src/docs/developers/node-oper/dockerless.md @@ -4,7 +4,7 @@ lang: en-US --- -Here are the instructions if you want to build you own read-only replica without relying on our images. +Here are the instructions if you want to build you own OP Mainnet, or OP Goerli, replica without relying on our images. These instructions were generated on an Ubuntu 20.04 LTS box, but they should work with other systems too. **Note:** This is *not* the recommended configuration.