Advanced Setup
Deploying a Blast node follows the same process as other OP Stack-based chains. This document is based on the master
branch of the Blast repository.
This guide is intended for advanced users who want to build Blast from source. If you prefer to use prebuilt Docker images, refer to the Docker Compose Setup documentation.
Initial Setup
Download Blast genesis.json
& rollup.json
In addition to the Blast repository containing blast-geth
and blast-optimism
, you will also need to obtain the chain configuration files from the deployment repository.
These files contain the essential chain configuration parameters for initializing your Blast node. Ensure you select the correct files based on the network (Mainnet or Sepolia) you want to connect to. This step is crucial for aligning your node with the chosen network’s protocol settings.
git clone [email protected]:blast-io/deployment.git
To run a Sepolia node, use the sepolia-testnet branch
of the Blast repository. The master
branch is not compatible with the Blast Sepolia testnet.
Building the Docker Images
blast-geth
cd blast-geth/
docker build . -t blast-geth
op-node
This step creates a Docker image of the op-node
, tagged for development use. This image will be used later when running the node.
cd blast-optimism/
# This will build an image with tag: blast.io/blast-optimism/op-node:dev
REGISTRY=blast.io REPOSITORY=blast-optimism docker buildx bake --load -f docker-bake.hcl op-node
Generate the jwt secret
openssl rand -hex 32 | tr -d "\n" > /jwt.txt
Initialize the blast-geth data directory
Use the following command to initialize the data directory. Ensure you have downloaded the appropriate genesis.json
file.
geth init \
--datadir=$GETH_DATA_DIR \
config/genesis.json
Running
Set up env vars
The sequencer URL and bootnode address must be configured to connect your Blast node to the appropriate peer network and the transaction sequencer.
To do this, you will need to expose the sequencer URL and bootnode address environment variables as follows:
# For Mainnet
export GETH_ROLLUP_SEQUENCERHTTP=https://sequencer.blast.io
export OP_NODE_P2P_BOOTNODES=enr:-J64QGwHl9uYLfC_cnmxSA6wQH811nkOWJDWjzxqkEUlJoZHWvI66u-BXgVcPCeMUmg0dBpFQAPotFchG67FHJMZ9OSGAY3d6wevgmlkgnY0gmlwhANizeSHb3BzdGFja4Sx_AQAiXNlY3AyNTZrMaECg4pk0cskPAyJ7pOmo9E6RqGBwV-Lex4VS9a3MQvu7PWDdGNwgnZhg3VkcIJ2YQ,enr:-J64QDge2jYBQtcNEpRqmKfci5E5BHAhNBjgv4WSdwH1_wPqbueq2bDj38-TSW8asjy5lJj1Xftui6Or8lnaYFCqCI-GAY3d6wf3gmlkgnY0gmlwhCO2D9yHb3BzdGFja4Sx_AQAiXNlY3AyNTZrMaEDo4aCTq7pCEN8om9U5n_VyWdambGnQhwHNwKc8o-OicaDdGNwgnZhg3VkcIJ2YQ
# For Sepolia
# export GETH_ROLLUP_SEQUENCERHTTP=https://sequencer.s2.testblast.io
# export OP_NODE_P2P_BOOTNODES=enr:-J-4QM3GLUFfKMSJQuP1UvuKQe8DyovE7Eaiit0l6By4zjTodkR4V8NWXJxNmlg8t8rP-Q-wp3jVmeAOml8cjMj__ROGAYznzb_HgmlkgnY0gmlwhA-cZ_eHb3BzdGFja4X947FQAIlzZWNwMjU2azGhAiuDqvB-AsVSRmnnWr6OHfjgY8YfNclFy9p02flKzXnOg3RjcIJ2YYN1ZHCCdmE,enr:-J-4QDCVpByqQ8nFqCS9aHicqwUfXgzFDslvpEyYz19lvkHLIdtcIGp2d4q5dxHdjRNTO6HXCsnIKxUeuZSPcEbyVQCGAYznzz0RgmlkgnY0gmlwhANiQfuHb3BzdGFja4X947FQAIlzZWNwMjU2azGhAy3AtF2Jh_aPdOohg506Hjmtx-fQ1AKmu71C7PfkWAw9g3RjcIJ2YYN1ZHCCdmE
blast-geth
geth \
--datadir=$GETH_DATA_DIR \
--http \
--http.corsdomain="*" \
--http.vhosts="*" \
--http.addr=0.0.0.0 \
--http.port=$RPC_PORT \
--http.api=web3,debug,eth,txpool,net,engine \
--ws \
--ws.addr=0.0.0.0 \
--ws.port=$WS_PORT \
--ws.origins="*" \
--ws.api=debug,eth,txpool,net,engine \
--authrpc.addr="0.0.0.0" \
--authrpc.port="8551" \
--authrpc.vhosts="*" \
--authrpc.jwtsecret=/jwt.txt \
--syncmode=full \
--gcmode=archive \
--nodiscover \
--maxpeers=0 \
--rollup.disabletxpoolgossip=true
--override.canyon=0
--override.ecotone=1716843599
op-node
op-node \
--l1=$L1_RPC_URL \
--l1.rpckind=$L1_RPC_KIND \
--l2=ws://blast-geth:8551 \
--l2.jwt-secret=/jwt.txt \
--rollup.config=config/rollup.json
--l1.beacon=$L1_BEACON_API_URL
To fully participate in P2P, ensure TCP/UDP is allowed on port 9003
and set --p2p.advertise.ip=$PUBLIC_IP
.
Blast Mainnet and Testnet have activated the Ecotone upgrade to benefit from EIP-4844. It’s important that you provide a beacon chain API URL ($L1_BEACON_API_URL
) in addition to the $L1_RPC_URL
so your node can read blob data.
Upgrades
Using pre-built docker images
- First, pull latest code from the deployment repository.
- Next, restart the containers with the new Docker image.
docker compose pull --policy=always
# restart all of the containers
docker compose down
docker compose up -d
Building the docker images from source code
- Pull the latest code from https://github.com/blast-io/blast
- Build new Docker images by following the instructions in the Building the Docker Images section. Ensure your
genesis.json
androllup.json
files are up-to-date in case of any changes (e.g., a hard fork timestamp). - Restart the
blast-geth
andop-node
containers as described in the Running section.
Additional RPC methods
eth_getBalanceValues
To facilitate rebasing ETH balances, accounts on Blast store more fields than just balance in the state trie. This RPC method exposes the underlying parameters that control an account’s rebasing ETH balance.
See our article on Indexing Account Shares for a detailed overview of this RPC method.