Skip to content

Pruning & Node Modes

Reth supports archive, full, minimal, and custom-pruned nodes. Archive mode is the default when no pruning profile or pruning configuration is set.

For new databases, these modes run on the default storage V2 layout. Storage V2 controls where data is stored; pruning controls how much historical data is retained.

Basic concepts

  • Archive node - retains all historical data from genesis.
  • Full node - keeps current state and a 10,064-block historical state window, while pruning selected historical data.
  • Minimal node - uses the most aggressive built-in pruning profile for small disk usage.
  • Custom-pruned node - uses custom pruning configuration or individual --prune.* flags.

Pruning is destructive. Once historical data has been pruned, Reth cannot serve that data again unless you restore it from a snapshot or resync with a mode that retains it.

Modes

Archive Node

Archive mode is the default. Follow the steps from Running Reth on Ethereum Mainnet or testnets and start Reth without a pruning profile:

reth node

Full Node

Use --full to run the default full-node pruning profile:

reth node \
    --full \
    --authrpc.jwtsecret /path/to/secret \
    --authrpc.addr 127.0.0.1 \
    --authrpc.port 8551

Full mode configures:

  • sender recovery pruning: full
  • transaction lookup pruning: disabled
  • receipts pruning: retain the last 10,064 blocks
  • account history pruning: retain the last 10,064 blocks
  • storage history pruning: retain the last 10,064 blocks
  • bodies pruning: prune pre-Merge bodies on chains with a Paris activation

Minimal Storage Mode

Use --minimal to run the most aggressive built-in pruning profile:

reth node \
    --minimal \
    --authrpc.jwtsecret /path/to/secret \
    --authrpc.addr 127.0.0.1 \
    --authrpc.port 8551

Minimal mode configures:

  • sender recovery pruning: full
  • transaction lookup pruning: full
  • receipts pruning: retain the last 64 blocks
  • account history pruning: retain the last 10,064 blocks
  • storage history pruning: retain the last 10,064 blocks
  • bodies pruning: retain the last 10,064 blocks
  • static file segments: 10,000 blocks per file

Custom Pruned Node

Use reth.toml or individual --prune.* flags to configure each pruning segment yourself. See the pruning configuration reference for the TOML format.

Disk usage

Disk usage changes as networks grow and depends on the selected node mode. For current storage V2 measurements, see Storage V2.

RPC support

The pruning configuration can prune several independent data segments:

  • Sender Recovery
  • Transaction Lookup
  • Receipts
  • Account History
  • Storage History

Pruning a segment limits RPC methods that need the removed historical data or lookup indexes.

Full Node

The following tables describe RPC methods available in the full node.

debug namespace

RPCNote
debug_accountAtOnly for the last 10064 blocks
debug_accountInfoAtOnly for the last 10064 blocks
debug_chainConfig
debug_codeByHashOnly for the last 10064 blocks
debug_dbGet
debug_executionWitnessOnly for the last 10064 blocks
debug_executionWitnessByBlockHashOnly for the last 10064 blocks
debug_getBadBlocks
debug_getRawBlock
debug_getRawHeader
debug_getRawReceiptsOnly for the last 10064 blocks
debug_getRawTransaction
debug_getRawTransactions
debug_stateRootWithUpdatesOnly for the last 10064 blocks
debug_traceBlockOnly for the last 10064 blocks
debug_traceBlockByHashOnly for the last 10064 blocks
debug_traceBlockByNumberOnly for the last 10064 blocks
debug_traceCallOnly for the last 10064 blocks
debug_traceCallManyOnly for the last 10064 blocks
debug_traceTransactionOnly for the last 10064 blocks

eth namespace

RPC / SegmentNote
eth_accounts
eth_blockNumber
eth_callOnly for the last 10064 blocks
eth_chainId
eth_createAccessListOnly for the last 10064 blocks
eth_estimateGasOnly for the last 10064 blocks
eth_feeHistory
eth_gasPrice
eth_getBalanceOnly for the last 10064 blocks
eth_getBlockByHash
eth_getBlockByNumber
eth_getBlockReceiptsOnly for the last 10064 blocks
eth_getBlockTransactionCountByHash
eth_getBlockTransactionCountByNumber
eth_getCode
eth_getFilterChanges
eth_getFilterLogsOnly for the last 10064 blocks
eth_getLogsOnly for the last 10064 blocks
eth_getStorageAtOnly for the last 10064 blocks
eth_getTransactionByBlockHashAndIndex
eth_getTransactionByBlockNumberAndIndex
eth_getTransactionByHash
eth_getTransactionCountOnly for the last 10064 blocks
eth_getTransactionReceiptOnly for the last 10064 blocks
eth_getUncleByBlockHashAndIndex
eth_getUncleByBlockNumberAndIndex
eth_getUncleCountByBlockHash
eth_getUncleCountByBlockNumber
eth_maxPriorityFeePerGas
eth_mining
eth_newBlockFilter
eth_newFilter
eth_newPendingTransactionFilter
eth_protocolVersion
eth_sendRawTransaction
eth_sendTransaction
eth_sign
eth_signTransaction
eth_signTypedData
eth_subscribe
eth_syncing
eth_uninstallFilter
eth_unsubscribe

net namespace

RPC / Segment
net_listening
net_peerCount
net_version

trace namespace

RPC / SegmentNote
trace_blockOnly for the last 10064 blocks
trace_blockOpcodeGasOnly for the last 10064 blocks
trace_callOnly for the last 10064 blocks
trace_callManyOnly for the last 10064 blocks
trace_filterOnly for the last 10064 blocks
trace_getOnly for the last 10064 blocks
trace_rawTransactionOnly for the last 10064 blocks
trace_replayBlockTransactionsOnly for the last 10064 blocks
trace_replayTransactionOnly for the last 10064 blocks
trace_transactionOnly for the last 10064 blocks
trace_transactionOpcodeGasOnly for the last 10064 blocks

txpool namespace

RPC / Segment
txpool_content
txpool_contentFrom
txpool_inspect
txpool_status

Pruned Node

The following tables describe the requirements for prune segments, per RPC method:

  • ✅ – if the segment is pruned, the RPC method still works
  • ❌ - if the segment is pruned, the RPC method doesn't work anymore

debug namespace

RPC / SegmentSender RecoveryTransaction LookupReceiptsAccount HistoryStorage History
debug_accountAt
debug_accountInfoAt
debug_chainConfig
debug_codeByHash
debug_dbGet
debug_executionWitness
debug_executionWitnessByBlockHash
debug_getBadBlocks
debug_getRawBlock
debug_getRawHeader
debug_getRawReceipts
debug_getRawTransaction
debug_getRawTransactions
debug_stateRootWithUpdates
debug_traceBlock
debug_traceBlockByHash
debug_traceBlockByNumber
debug_traceCall
debug_traceCallMany
debug_traceTransaction

eth namespace

RPC / SegmentSender RecoveryTransaction LookupReceiptsAccount HistoryStorage History
eth_accounts
eth_blockNumber
eth_call
eth_chainId
eth_createAccessList
eth_estimateGas
eth_feeHistory
eth_gasPrice
eth_getBalance
eth_getBlockByHash
eth_getBlockByNumber
eth_getBlockReceipts
eth_getBlockTransactionCountByHash
eth_getBlockTransactionCountByNumber
eth_getCode
eth_getFilterChanges
eth_getFilterLogs
eth_getLogs
eth_getStorageAt
eth_getTransactionByBlockHashAndIndex
eth_getTransactionByBlockNumberAndIndex
eth_getTransactionByHash
eth_getTransactionCount
eth_getTransactionReceipt
eth_getUncleByBlockHashAndIndex
eth_getUncleByBlockNumberAndIndex
eth_getUncleCountByBlockHash
eth_getUncleCountByBlockNumber
eth_maxPriorityFeePerGas
eth_mining
eth_newBlockFilter
eth_newFilter
eth_newPendingTransactionFilter
eth_protocolVersion
eth_sendRawTransaction
eth_sendTransaction
eth_sign
eth_signTransaction
eth_signTypedData
eth_subscribe
eth_syncing
eth_uninstallFilter
eth_unsubscribe

net namespace

RPC / SegmentSender RecoveryTransaction LookupReceiptsAccount HistoryStorage History
net_listening
net_peerCount
net_version

trace namespace

RPC / SegmentSender RecoveryTransaction LookupReceiptsAccount HistoryStorage History
trace_block
trace_blockOpcodeGas
trace_call
trace_callMany
trace_filter
trace_get
trace_rawTransaction
trace_replayBlockTransactions
trace_replayTransaction
trace_transaction
trace_transactionOpcodeGas

txpool namespace

RPC / SegmentSender RecoveryTransaction LookupReceiptsAccount HistoryStorage History
txpool_content
txpool_contentFrom
txpool_inspect
txpool_status