Geth
Geth is an open-source Go implementation of Ethereum.
Install and run a Geth node if you want to follow the Linea network by maintaining a local copy of the blockchain. However, if you want to interact with the network and use Linea-specific methods and features, you should install Linea Besu instead.
You can run Geth from a binary distribution or using Docker.
Run using the binary distribution
Step 1. Install Geth
Download and install the Geth client.
Linea only supports Geth up to v1.13.15 or lower. v1.14.0 and subsequent versions aren't supported.
Step 2. Download the genesis file
Download the genesis file for the relevant network.
- Mainnet
- Linea Sepolia
Mainnet genesis.json
file.
Sepolia genesis.json
file.
Step 3. Define disk space volume (optional)
Define a volume size appropriate to your expected usage. Geth nodes use:
- Full node: Total size 711.29 GB; increasing by 866.46 MB daily
- Archive node: Total size 3.26 TB; increasing by 2.33 GB daily
Last updated: Feb 10, 2025
Use these figures as a basis to determine the extent to which you want to future-proof your node.
Ensure you mount the Geth datadir
to the custom volume.
If you run out of space, or need to actively maintain how much space is being used, consider pruning.
Blockchain clients can take up a lot of disk space. By defining the amount of disk space you're willing to dedicate to your client (and the block data that it will be syncing), you can ensure that you still have enough room on your disk for whatever else you need.
Select the relevant operating system for the steps on how to create a custom volume.
Ubuntu
MacOS
Windows
Step 4. Bootstrap your node
Bootstrap the node using the following command:
- Mainnet
- Linea Sepolia
geth --datadir ./geth-linea-data init ./genesis.json
geth --datadir ./geth-sepolia-data init ./genesis.json
Step 5. Start the Geth client
Start the node using the following command:
- Mainnet
- Linea Sepolia
geth \
--datadir $HOME/geth-linea-data \
--networkid 59144 \
--rpc.allow-unprotected-txs \
--txpool.accountqueue 50000 \
--txpool.globalqueue 50000 \
--txpool.globalslots 50000 \
--txpool.pricelimit 1000000 \
--txpool.pricebump 1 \
--txpool.nolocals \
--http --http.addr '127.0.0.1' --http.port 8545 --http.corsdomain '*' --http.api 'web3,eth,txpool,net' --http.vhosts='*' \
--ws --ws.addr '127.0.0.1' --ws.port 8546 --ws.origins '*' --ws.api 'web3,eth,txpool,net' \
--bootnodes "enode://069800db9e6e0ec9cadca670994ef1aea2cfd3d88133e63ecadbc1cdbd1a5847b09838ee08d8b5f02a9c32ee13abeb4d4104bb5514e5322c9d7ee19f41ff3e51@3.132.73.210:31002,enode://a8e03a71eab12ec4b47bb6e19169d8e4dc7a58373a2476969bbe463f2dded6003037fa4dd5f71e15027f7fc8d7340956fbbefed67ddd116ac19a7f74da034b61@3.132.73.210:31003,enode://97706526cf79df9d930003644f9156805f6c8bd964fc79e083444f7014ce10c9bdd2c5049e63b58040dca1d4c82ebef970822198cf0714de830cff4111534ff1@18.223.198.165:31004,enode://24e1c654a801975a96b7f54ebd7452ab15777fc635c1db25bdbd4425fdb04e7f4768e9e838a87ab724320a765e41631d5d37758c933ad0e8668693558125c8aa@18.223.198.165:31000,enode://27010891d960f73d272a553f72b6336c6698db3ade98d631f09c764e57674a797be5ebc6829ddbb65ab564f439ebc75215d20aa98b6f351d12ea623e7d139ac3@3.132.73.210:31001,enode://228e1b8a4931e46f383e30721dac21fb8fb4e5e1b32c870e13b25478c82db3dc1cd9e7ceb93d302a766466b55638cc9c5cbfc43aa48fa41ced19baf365951f76@3.1.142.64:31002,enode://c22eb0d40fc3ad5ea710aeddea906567778166bfe18c157955e8c39b23a46c45db18a0fa2ba07f2b64c81178a8c796aec2a29151533920ead06fcdfc6d8d03c6@47.128.192.57:31004,enode://8ce733abe39fd7ae0a278b9893f85c1193c611a3886168690dd843435460f22cc4d61f9e8d0ace7f5905836a665319a31cccdaacdada2acc69972c382ecce7db@3.1.142.64:31003,enode://b7c1b2bed65a855f7a2104aac9a14674dfdf018fdac763415b373b29ce18cdb81d36328ba4e5c9f12629f3a50c3e8f9ee048f22dbdbe93a82813da89c6b81334@51.20.235.126:31004,enode://95270e0550848a72fb141cf27f1c4ea10714edde365b411dc0fa06c81c0f282ce155eb9fa472b6b8bb9ee98395eeaf4c5a7b02a01fe58b37ea98ba152eda4c37@13.50.94.193:31000,enode://72013391755f24f08567b932feeeec4c893c06e0b1fb480890c83bf87fd277ad86a5ab9cb586db9ae9970371a2f8cb0c96f6c9f69045abca0fb801db7f047138@51.20.235.126:31001" \
--syncmode full \
--metrics \
--verbosity 3
You can choose from a range of bootnodes for Linea Mainnet. The above command uses all bootnodes by default.
See our bootnodes page for a full list of available bootnodes.
geth \
--datadir $HOME/geth-sepolia-data \
--networkid 59141 \
--rpc.allow-unprotected-txs \
--txpool.accountqueue 50000 \
--txpool.globalqueue 50000 \
--txpool.globalslots 50000 \
--txpool.pricelimit 1000000 \
--txpool.pricebump 1 \
--txpool.nolocals \
--http --http.addr '0.0.0.0' --http.port 8545 --http.corsdomain '*' --http.api 'web3,eth,txpool,net' --http.vhosts='*' \
--ws --ws.addr '0.0.0.0' --ws.port 8546 --ws.origins '*' --ws.api 'web3,eth,txpool,net' \
--bootnodes "enode://6f20afbe4397e51b717a7c1ad3095e79aee48c835eebd9237a3e8a16951ade1fe0e66e981e30ea269849fcb6ba03d838da37f524fabd2a557474194a2e2604fa@18.221.100.27:31002,enode://ce1e0d8e0500cb5c0ac56bdcdafb2d6320c3a2c5125b5ccf12f5dfc9b47ee74acbcafc32559017613136c9c36a0ce74ba4f83b7fb8244f099f3b15708d9d3129@3.23.75.47:31000,enode://1b026a5eb0ae74300f58987d235ef0e3a550df963345cb3574be3b0b54378bd11f14dfd515a8976f2c2d2826090e9507b8ccc24f896a9ffffffcabcfd996a733@3.129.120.128:31001" \
--syncmode full \
--metrics \
--verbosity 3
The Linea network only produces blocks if there is currently at least 1 pending transaction. If you see no incoming blocks to your node, that doesn't mean that the node is not syncing.
If you don't see any incoming blocks, check and make sure that you have at least one peer from the bootnodes; otherwise, you might not be connected to the Linea network.
Run using Docker
Prerequisites
Download and install Docker and ensure it is running.
Step 1. Download configuration files
Download the configuration files for the relevant network. Ensure that you download the files to the same directory.
- Mainnet
- Linea Sepolia
Download the mainnet docker-compose.yml
and genesis.json
files.
You can choose from a range of bootnodes for Linea Mainnet. The Geth docker-compose.yml
file uses all bootnodes by default.
See our bootnodes page for a full list of available bootnodes.
Download the Sepolia testnet docker-compose.yml
and genesis.json
files.
Step 2. Start the Geth node
Open up a terminal where the both docker-compose.yml
and genesis.json
are located (they should be in the same directory)
and run docker compose up
The node should now be running and looking for peers to sync.
Confirm the node is running
You can call the JSON-RPC API methods to confirm the node is running. For example, call
eth_syncing
to return the synchronization status.
For example the starting, current, and highest block, or false
if not synchronizing (or if the head of the chain has been reached).
curl localhost:8545 \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'
You should get a result similar to:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"startingBlock": "0x0",
"currentBlock": "0x5d228",
"highestBlock": "0x3cedec"
}
}