github erigontech/erigon v3.1.0-rc1
v3.1.0-rc1 "Pebble Paws"

pre-release11 days ago

3.1.0 Pebble Paws

Erigon 3.1.0 Pebble Paws is a significant update for node operators and validators, focusing on stability, performance, and efficiency. This release introduces several new features and optimizations, including the default enabling of receipt persistence, a smarter snapshots downloader, and numerous consensus layer improvements and official support for Shutter Network on Gnosis Chain.

Breaking changes

  • Port of external RPCDaemon now uses the same WebSocket port as the default for Erigon. (#15643)
  • Docker Images: Docker images are now based on Debian. (#16228)
  • Go Language Version: The required Go version is now golang 1.24.
  • Receipt Persistence: The --persist.receipts flag is now enabled by default (more details are provided below).
  • Pebble Paws will be the last Erigon release series to officially support Polygon.

How to upgrade

Erigon 3.1 Pebble Paws will work flawlessly with old data. For those who want to ensure they have the absolute latest data files and any recent data-specific fixes, you can optionally perform a manual data upgrade. After upgrading your Erigon binary and having done a back-up of your data directory, just run the command erigon snapshots reset --datadir /your/datadir.

Key features

Disk Footprint and Management

Several improvements furtherly reduced the size of the Ethereum archive nodes while actually storing more data, making the nodes more cost-effective and easier to manage:

  • The --persist.receipts flag is now enabled by default for Full and Minimal nodes. This downloads pre-calculated receipts, ensuring a consistent and predictable latency, meaning a more reliable system when interacting with the network, especially during high-traffic periods, and a 10x faster RPC for calls like eth_getLogs.

    • The size of the receipts is 300 GB for the Ethereum mainnet, 1 TB for the Polygon bor-mainnet, and 200 GB for the Gnosis Network. However, this can be disabled with the command --persist.receipts=false. In this case, the RPC calls will generate receipts on demand from the StateHistory. (#16040).
  • The size of .ef files was reduced by 50% with better encoding, resulting in smaller archive nodes. (#12907)

  • Rolled out phase 1 of history expiry, allowing nodes to drop pre-merge data, which significantly reduces storage requirements and simplifies node maintenance. (#15668)

  • Efficiently upgrade the existing data using the new snapshots update and snapshots reset commands, reducing node downtime and resource usage while avoiding a full re-sync.

  • Several optimization have been implemented to reduce latency, lower disk I/O, and optimize VM and snapshot operations, resulting in faster, more efficient node operation and easier maintenance (#14135, #14902, #15115, #15092, #16140).

Networking and Performance

  • Faster and more reliable syncing: the new Bittorrent web seed implementation downloads entire files in a single stream instead of making many small-range HTTP requests, resulting in faster syncing, reduced server load, improved CDN compatibility, and enhanced protection against DDoS attacks. The downloader now automatically switches sources if the snapshot set becomes inaccessible, and once the snapshot files are downloaded, they are marked as read-only to prevent accidental corruption. Torrent logging and status outputs have been upgraded, offering clearer real-time insights into sync speed, estimated completion times, and the root causes of any synchronization stalls. (#15043)

  • A new configuration flag now enables independent tuning of web seeding and peer-to-peer (P2P) download speeds, delivering more control over how data is sourced and transferred. (#15912)

  • Improved and more reliable experience with faster, more accurate RPC responses, improved error handling, and broader support for new features and tools. (#13795, #13947, #14075, #14093, #14105, #14152, #14803, #14915, #14994, #15948, #16029, #16101)

  • Smoother Polygon Network experiences with faster syncing, improved reliability, and better compatibility, thanks to a series of targeted bug fixes and optimizations. (#14056, #14080, #13845, #13807, #15595, #16160, #16035, #15538)

  • The new probabilistic filter makes historical queries much faster and more efficient. (#15960)

Protocol

  • Improved Caplin (Consensus Layer) reliability and performance with enhanced slot processing, better peer management, optimized block and attestation handling, new validator deposit toolingAore efficient reorg support. These updates provide smoother network participation, easier validator operations, and improved responsiveness. (#13825, #13858, #13883, #13893, #14158, #14128, #14913, #16084, #16083, #16219, #14890, #14875)

  • Engine API and EIP Support: This release includes new Engine API methods like GetBlobsV1 and GetBlobsV2. It also implements various Ethereum Improvement Proposals (EIPs) related to blobs and gas, ensuring compatibility with upcoming network changes. (#13975, #15420)

  • Added support for the latest protocol upgrades and features—delivering improved compatibility, security, and performance for users. (#14705, #14702, #14672, #15093, #15148, #15450, #15067, #15399, #15519, #15532, #15609, #15688, #14213)

Shutter Network

QA and Testing

Other Improvements

  • Thanks to an updated build infrastructure and streamlined release processes, deployments have improved, becoming more reliable and secure. (#13869, #15082, #15757, #16228)

  • Time-deterministic pruning loop has been introduced, making pruning steps bounded in time, improving predictability and stability, especially for large databases. (#16069)

  • Enabled the fulu devnet2 network, introducing advanced features like validator custody, earliest slot tracking, and blob recovery—empowering developers and node operators to test next-generation consensus and data availability enhancements. (#15824)

Changelog

  • Fix a collection of downloader, snapshot sync and torrent related issues by anacrolix in #15043
  • Add WebSeed download rate flag by anacrolix in #15912
  • engineeapi, txpool: Implement GetBlobsV1, GetBlobsV2 by somnathb1 in #13975 and #15420
  • History expiry phase-1 rollout: (Drop Pre-merge data) by Giulio2002 in #15668
  • Updated config for bor-mainnet Bhilai fork by mh0lt in #15636
  • time-deterministic prune: step1 by AskAlexSharov in #16069
  • fulu devnet2 by domiwei in #15824
  • Polygon Bhilai Fork Updates by mh0lt in #15261
  • Historical exec bottleneck solved by new probabilistic filter in StateHistory files by AskAlexSharov in #15960
  • engineapi: Add Pectra banner by somnathb1 in #13785
  • EngineBlockDownloader: pass heightToDownload when available by yperbasis in #15056
  • engineapi: add jsonrpc client by taratorio in #14199
  • Implement ERC-7562 tracer by shohamc1 in #14705
  • Support RIP-7560 transactions to mining loop by shohamc1 in #14702
  • Implement EIP-7610 has storage check on create by taratorio in #14672
  • Implement EIP-7883 ModExp Gas Cost Increase by yperbasis in #15093
  • Implement EIP-7823: Set upper bounds for MODEXP by yperbasis in #15148
  • Implement EIP-7825: Transaction Gas Limit Cap by yperbasis in #15450
  • EIP-7892: Blob Parameter Only Hardforks - 2nd attempt by yperbasis in #15067
  • execution: EIP-7918: Blob base fee bounded by execution cost by yperbasis in #15399
  • Add P256Verify for osaka and implement EIP-7951 by somnathb1 in #15519
  • Add CLZ opcode by Giulio2002 in #15532
  • EIP-7934: RLP Execution Block Size Limit by taratorio in #15609
  • EIP-7907: Meter Contract Code Size And Increase Limit by taratorio in #15688
  • Account Abstraction Execution by shohamc1 in #14213
  • feehistory.go: optimize the high latency of eth_feeHistory by blxdyx in #14135
  • reduce disk IO during files merge by AskAlexSharov in #14902
  • VM OPSwap optimisation by JkLondon in #15115
  • etl: allocator by AskAlexSharov in #15092
  • cp: Optimised snapshot read operations for BorEvents by sudeepdino008 in #16140
  • Caplin: update highest process slot correctly during ForwardSync by Giulio2002 in #13825
  • Caplin: now respecting max peer count by Giulio2002 in #13858
  • Caplin: remove beacon blocks filtering by Giulio2002 in #13883
  • Caplin: removed reusable states in reorg by Giulio2002 in #13893
  • Caplin: implement encoding for archive node for Queues by Giulio2002 in #14158
  • Caplin: remove extra delay in attestation production by Giulio2002 in #14128
  • Caplin: bump default builder boost factor by Giulio2002 in #14913
  • Caplin: Added validator depositing tooling by Giulio2002 in #16084
  • Caplin: fully-working peerdas rpc by Giulio2002 in #16083
  • Caplin: added new queue endpoints for deposit lists by Giulio2002 in #16219
  • Erigon: add option to use execution network to import blocks by Giulio2002 in #14890
  • Erigon: optimistic inclusion for deep reorgs by Giulio2002 in #14875
  • rpcdaemon: Don't set miner by shohamc1 in #13795
  • jsonrpc: Add comprehensive Quantities validation for eth_getStorageAt by somnathb1 in #13947
  • rpcdaemon: Set correct txnum for bridge txns by shohamc1 in #14075
  • txpool: add more cases to return err instead of panicking on invalid Txn cases by somnathb1 in #14093
  • jsonrpc: Lenient on param check for eth_getStorageAt by somnathb1 in #14105
  • jsonrpc: add Authorizations to callArgs for eth_estimateGas by somnathb1 in #14152
  • ethapi: Add blobVersionedHashes to callArgs by somnathb1 in #14803
  • rpcdaemon: read hdr instead of blocksWithTxs in eth_estimateGas,eth_createAccessList by lupin012 in #14915
  • rpcdaemon: align response (block not found or txnHash not found) in case remote conf with local one by lupin012 in #16029
  • rpcdaemon: check BridgeBackend version only on Bor network by canepat in #16101
  • rpcdaemon: stack-based json stream by canepat in #14994
  • jsonrpc: implement eth_config by somnathb1 in #15948
  • Implemented mechanism to deliver mined blocks to block consumer by eastorski in #14056
  • Removed MiningBorHeimdall stage in mining pipeline if astrid flag is set by eastorski in #14080
  • polygon/heimdall: fix snapshot store last entity to check in snapshots too by taratorio in #13845
  • Implemented wait if heimdall is not synced to the chain by eastorski in #13807
  • proposerPriority from VotingPower to ProposerPriority by fredrik0x in #15595
  • Add bor init to txpool configuration by mh0lt in #16160
  • Remove unused polygon sync flags by mh0lt in #16035
  • Supported heimdall v2 endpoints by eastorski in #15538
  • qa-tests: execute qa-tests on every commit to the 3.x branch by mriccobene in #13783
  • qa-tests: improve rpc-integration tests by mriccobene in #13755
  • qa-tests: use the new dedicated runner for RPC testing by mriccobene in #14094
  • qa-tests: re-enable eth_estimateGas/test_14 by mriccobene in #13926
  • workflows: Stricter failure checks for hive tests by somnathb1 in #14115
  • qa-tests: enable change point analysis on RPC perf tests by mriccobene in #14100
  • tests: Update EEST fixtures to Vítkov (v4.1.0) release by somnathb1 in #14178
  • tests: Update EESTs to release v4.4.0 (Stromovka) by somnathb1 in #14886
  • Upgrade ethereum/tests to v17.0 by yperbasis in #14210
  • tests: update eest to fusaka-devnet-1@v1.0.0 by yperbasis in #15499
  • tests: update EEST to v4.5.0 and add fusaka-devnet-0@v1.0.0 fixtures by yperbasis in #15215
  • shutter: validate decryption keys based on eon info and signatures by taratorio in #13725
  • shutter: add encrypted and decrypted txn pools by taratorio in #13864
  • shutter: implement provide txns by taratorio in #13865
  • txnprovider/shutter: integration tests and fixes by taratorio in #13983
  • shutter: test cmds to send shutter txns and check validator registrations by taratorio in #14187
  • Bump builder and base docker images by lystopad in #13869
  • Upgrade builder image to 1.24-bookworm by lystopad in #15082
  • Rework Dockerfile, release and snapshot workflows by lystopad in #15757
  • Update release.yml - debian package dependency by lystopad in #16228
  • add gdbme flag that starting erigon under gdb (for debug) by JkLondon in #13874
  • Fix getProof for historical calls by awskii in #15564

Full Changelog: v3.0.15...v3.1.0-rc1

New Contributors

Thanks to our first time code contributors:

Don't miss a new erigon release

NewReleases is sending notifications on new releases.