Arbitrum

Set up your Arbitrum Mainnet & Goerli Testnet RPC node

Prerequisites

Steps

  1. Install Docker
  2. Install Arbitrum image
  3. Configure vald

Install docker

Terminal window
sudo apt update && sudo apt install curl jq -y < "/dev/null"
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh

Install Arbitrum node

Get the latest arbitrum version/docker image to use from the official docs. It should look something like offchainlabs/nitro-node:vx.y.z-commit.

Terminal window
mkdir -p $HOME/data/arbitrum
chmod -fR 777 $HOME/data/arbitrum

Now, you will see this flag in the command below --l1.url <YOUR_ETH_RPC_URL> this means that your arbitrum node needs a synced Ethereum node. Please provide the RPC URL of your synced Ethereum node with this flag.

⚠️

Please use your own Ethereum node instead of using 3rd party providers like alchemy, infura etc. for decentralization/security. Third-party providers also have a specific request limit, and your node can throw 100s of thousands of requests while trying to sync.

Terminal window
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 <LATEST_DOCKER_IMAGE> --parent-chain.connection.url <YOUR_ETH_RPC_URL> --chain.id=42161 --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* --init.url="https://snapshot.arbitrum.foundation/arb1/nitro-archive.tar"
Terminal window
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 <LATEST_DOCKER_IMAGE> --parent-chain.connection.url <YOUR_ETH_RPC_URL> --chain.id=421613 --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* --init.url="https://snapshot.arbitrum.foundation/sepolia/nitro-archive.tar"

Verify sync status

To verify if your node is in sync you can check the latest block from the explorer. Compare it with what you have in docker ps -q | xargs -L 1 docker logs --tail 10 -f

Test RPC connection

Once your node is fully synced, the output from above will say false. To test your Arbitrum RPC node, you can send an RPC request using cURL

Terminal window
curl -X POST http://localhost:8547 \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'

If you are testing it remotely, please replace localhost with the IP or URL of your server.

Configure vald

In order for vald to connect to your Arbitrum node, your rpc_addr should be exposed in vald’s config.toml

Terminal window
start-with-bridge = true
Terminal window
start-with-bridge = true

Edit on GitHub