Running BLAST Mainnet from Source

Please follow these steps first if you have not done so already.

#Get the data directory

The next step is to download the data directory for op-geth. You will need 500+ GB for this part alone.

  1. Download the data directory snapshot. This is a large file so expect it to take some time. Bedrock Data Directory (XXGB)(opens new window)

  2. Check the validity of your download. This is an important step. Corrupted data directories will make your node fail. So ensure your checksum matches.

    sha256sum mainnet-bedrock.tar.zst
    # expected output
    ec4baf47e309a14ffbd586dc85376833de640c0f2a8d7355cb8a9e64c38bfcd1  mainnet-bedrock.tar.zst

    OR

    sha512sum mainnet-bedrock.tar.zst
    # expected output
    c17067b7bc39a6daa14f71d448c6fa0477834c3e68a25e96f26fe849c12a09bffe510e96f7eacdef19e93e3167d15250f807d252dd6f6f9053d0e4457c73d5fb mainnet-bedrock.tar.zst

  3. Create the data directory in op-geth and fill it. This will take time.

    Navigate into your op-geth directory and run these commands:

    mkdir datadir
    cd datadir
    tar xvf <<PATH_TO_DATA_DIR>>

#Create a shared secret between op-geth and op-node

  1. Navigate into your op-geth directory and run these commands:

#Scripts to start the different components

In the root of your working directory create a new directory: scripts.

#op-geth

  1. Navigate into your scripts directory:

  2. Create a new file:

  3. Make it executable:

  4. Insert this snippet of code into run-op-geth.sh and modify the path to the op-geth directory.

Archive Nodes

You will also need to add --gcmode archive.

  1. Run the following command to start op-geth:

#bl-node

  1. Navigate to the scripts directory you created.

  2. Create a new file:

  3. Make it executable:

  4. Insert this snippet of code into run-bl-node.sh:

  • Change << L1 RPC URL >> to your local L1 node or a service provider's URL for the L1 node (L1 Ethereum). E.g. for Infura, https://mainnet.infura.io/v3/API_KEY.

  • Set L1KIND to the network provider you are using (options: alchemy, quicknode, infura, parity, nethermind, debug_geth, erigon, basic, any).

  1. Run the following command to start bl-node:

#The initial synchronization

The datadir provided by Blast 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 bl-node, and nothing else appears to happen.

That is normal - it means that bl-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 bl-node:

And log messages such as these from op-geth:

#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 Foundry (opens new window)script to get an estimated sync time.

  1. Navigate to your scripts directory

  2. Create a new file:

  3. Make it executable:

  4. Insert this snippet of code into run-estimate.sh:

  1. Run the following command to get an estimate:

#Operations

It is best to start op-geth first and shut it down last.

Last updated