The Boba Mainnet archive node has a size of 12GB on July 29, 2024
Boba
Boba is built on the Optimistic Rollup developed by Optimism.
In this guide, we are walking through the process of setting up a Boba Mainnet archive node using a forked version of Optimism's op-erigon,op-node and l2geth. These three components must be configured together to ensure that the node can effectively serve all historical data, which may be necessary when an Indexer syncs a specific subgraph on the Boba Network
Before you start, make sure that you have your own synced Ethereum L1 RPC URL (e.g. Erigon) and L1 Consensus Layer Beacon endpoint with all historical blobs data (e.g. Lighthouse) ready.
Not advised to allow all or unknown IP address to RPC port
Enable Firewall
sudoufwenable
To check the status of UFW and see the current rules
sudoufwstatusverbose
Install dependencies
Required Software Dependencies
Dependency
Version
Version Check Command
go
^1.21
go version
node
^20
node --version
pnpm
^8
pnpm --version
foundry
^0.2.0
forge --version
make
^4
make --version
yarn
1.22.21
yarn --version
nvm
0.39.3
nvm --verison
Install GO
sudowgethttps://go.dev/dl/go1.21.6.linux-amd64.tar.gz&&sudorm-rf/usr/local/go&&sudotar-C/usr/local-xzfgo1.21.6.linux-amd64.tar.gz&&rmgo1.21.6.linux-amd64.tar.gz#to verify Go installationgoversion#If it returns Command 'go' not found simply run echo'export PATH=$PATH:/usr/local/go/bin:/root/.local/bin'>>/root/.bashrc#and then apply changes withsource/root/.bashrc
Release branches are created when new versions of the op-node are created. Read through the Releases page to determine the correct branch to check out.
Create database directory for l2geth, download and extract archive snapshot:
mkdir-p/root/data/boba/boba-legacy/&&cd/root/data/boba/boba-legacy/aria2c--file-allocation=none-c-x10-s10"https://boba-db.s3.us-east-2.amazonaws.com/mainnet/boba-mainnet-geth-db-legacy.tgz"tar-xzvfboba-mainnet-geth-db-legacy.tgzrm-rfboba-mainnet-geth-db-legacy.tgzls#to see the name of extracted archive foldermv/root/data/boba/boba-legacy/geth-1149018/*/root/data/boba/boba-legacy/rm-rfgeth-1149018
Create systemd service for l2geth
sudonano/etc/systemd/system/boba-legacy.service
Paste the configs and save by entering ctrl+X and Y+ENTER:
Release branches are created when new versions of the erigon are created. Read through the Releases page to determine the correct branch to check out.
gitcheckoutv1.1.5makeerigon
Create database directory, download and extract the most recent snapshot
Consider verifying a snapshot by comparing the sha256sum of the downloaded file to the sha256sum listed on this page. Check the sha256sum of the downloaded file by running sha256sum <filename>in a terminal
It's usually simpler to begin with startingop-erigon before you start op-node. You can start op-erigon even if op-node isn't running yet, but op-erigon won't get any blocks until op-node starts.
sudosystemctldaemon-reload#refresh systemd configuration when changes madesudosystemctlenableop-erigon.service#enable op-erigon service at system startupsudosystemctlstartop-erigon.service#start op-erigonsudonano/etc/systemd/system/op-erigon.service#make changes in op-erigon.service file
Start op-node
Once you've started op-erigon, you can start op-node. op-node will connect to op-erigon and begin synchronizing the BOBA network. op-node will begin sending block payloads to op-erigon when it derives enough blocks from Ethereum
sudosystemctldaemon-reload#refresh systemd configuration when changes madesudosystemctlenableop-node.service#enable op-node service at system startupsudosystemctlstartop-node.service#start op-nodesudonano/etc/systemd/system/op-node.service#make changes in op-node.service file
Start l2geth
sudosystemctldaemon-reload#refresh systemd configuration when changes madesudosystemctlenableboba-legacy.service#enable l2geth service at system startupsudosystemctlstartboba-legacy.service#start l2gethsudonano/etc/systemd/system/boba-legacy.service#make changes in boba-legacy.service file
Monitor the logs for errors
sudojournalctl-fuop-node.service#follow logs of op-node.servicesudojournalctl-fuop-erigon.service#follow logs of op-erigon.servicesudojournalctl-fuboba-legacy.service#follow logs of boba-legacy.service
During the initial synchonization, you are expected to get following log messages from op-node
INFO [08-04|16:36:07.150]Advancingbqoriginorigin=df76ff..48987e:8301316originBehind=false
After a few minutes, op-node finds the right batch and then it starts synchronizing. During this synchonization process, you get log messags from op-node
INFO [08-04|16:36:01.204]Foundnextbatchepoch=44e203..fef9a5:8301309batch_epoch=8301309batch_timestamp=1,673,567,518INFO [08-04|16:36:01.205]generatedattributesinpayloadqueuetxs=2timestamp=1,673,567,518INFO [08-04|16:36:01.265]insertedblockhash=ee61ee..256300number=4,069,725state_root=a582ae..33a7c5timestamp=1,673,567,518parent=5b102e..13196cprev_randao=4758ca..11ff3afee_recipient=0x4200000000000000000000000000000000000011txs=2update_safe=true
Run curl command in the terminal to check the status of your node