Arbitrum

Set up your Arbitrum Mainnet & Goerli Testnet RPC node

  1. Install Docker
  2. Install Arbitrum image
  3. Configure vald
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

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"

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

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.

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