Enabling blob transactions for Arbitrum batch poster
This guide explains how to configure your Arbitrum node to post EIP-4844 blob transactions to the parent chain, which can significantly reduce data availability costs.
Prerequisites
Before enabling blob transactions, verify that your setup meets these requirements:
1. Chain configuration
- Your Arbitrum chain must be running in Rollup mode
2. Parent chain compatibility
Your parent chain (typically Ethereum mainnet or a testnet) must support EIP-4844. You can verify this by checking that recent block headers contain:
ExcessBlobGas
fieldBlobGasUsed
field
3. ArbOS version
Your ArbOS version must be 20 or higher. To check your current version:
Method 1: Smart contract call
Call the arbOSVersion()
function on the ArbSys precompile contract:
- Contract address:
0x0000000000000000000000000000000000000064
- Function:
arbOSVersion()
returnsuint256
- You can call this using any Ethereum client or block explorer on your Arbitrum chain
Method 2: Using cast
(if you have Foundry installed)
cast call 0x0000000000000000000000000000000000000064 "arbOSVersion()" --rpc-url YOUR_ARBITRUM_RPC_URL
If your version is below 20, upgrade by following the ArbOS upgrade guide.
Configuration
To enable blob transaction posting, add the following configuration to your node:
{
"node": {
"batch-poster": {
"data-poster": {
"post-4844-blobs": true
},
"post-4844-blobs": true
}
}
}
After updating your configuration:
- Save the configuration file
- Restart your Arbitrum node
- Monitor the logs to confirm blob posting is active
Verification
Once restarted, you can verify that blob transactions are being posted successfully by monitoring your node logs.
Log messages to look for
When a blob transaction is successfully posted, you'll see a log entry similar to:
INFO [05-23|00:49:16.160] BatchPoster: batch sent sequenceNumber=6 from=24 to=28 prevDelayed=13 currentDelayed=14 totalSegments=9
numBlobs=1
Key indicator: The numBlobs
field shows the number of blobs included in the transaction:
numBlobs=0
: Traditional calldata transaction was postednumBlobs>0
: Blob transaction was successfully posted (in the example above, 1 blob was sent)
Troubleshooting
Why is my node still posting calldata instead of blobs?
Your node may continue using calldata in these scenarios:
- Cost optimization: When blob gas prices are high, calldata posting may be more economical
- Batch Type Switching Protection: After a non-blob transaction is posted, the next 16 transactions will also use calldata to prevent frequent switching
Check your node logs for blob-related error messages and verify that your parent chain is accessible and fully synced.