# Version History

The following version history documents the Sonic client (the node software that powers the Sonic mainnet) including its virtual machine, database storage, and consensus mechanism.

<table data-full-width="true"><thead><tr><th width="99.26171875">Version</th><th width="135.3671875">End of Development</th><th width="124.578125">Release Date</th><th>Change Logs</th><th>Commits</th></tr></thead><tbody><tr><td>v2.1.6</td><td>Mar 12, 2026</td><td>Mar 12, 2026</td><td><ul><li>Geth dependency updated to v1.16.9. Integrated security patches for CVE-2026-26314 and CVE-2026-26315. </li><li><p><strong>Important:</strong> Recommend recreating p2p node key after install by removing <code>&#x3C;datadir>/p2p/nodekey</code> before restarting. </p><ul><li>Note: this changes the p2p node ID, which may break static peering setups.</li></ul></li></ul></td><td><p></p><ul><li>26dd110c – Update version to v2.1.6 (#714)</li><li>56146a6a – Geth dependency upgrade release 2.1.6 (#666)</li><li>8a0a07c4 – Update license (#651)</li><li>6897a5f6 – Update version to v2.1.6-rc.1 (#641)</li></ul></td></tr><tr><td>v2.1.5</td><td>Feb 5, 2026</td><td>Feb 5, 2026</td><td><ul><li>Added optional event throttling for validator nodes with low stake to reduce network resource usage. </li><li>Extended <code>eth_subscribe</code> RPC to optionally return full transaction details.</li></ul></td><td><p></p><ul><li>65a5ef18 – Update version to v2.1.5 (#640)</li><li>4c1ac99a – Rename event throttler flag (#633)</li><li>5b8f9d08 – Add metrics to monitor skipping event emission (#629)</li><li>65a11bbd – Integrate event throttler (#626)</li><li>c5f7b2ca – Add event throttler simulation (#623)</li><li>69402690 – Add event throttling object (#622)</li><li>58d24883 – Extend event throttler attendance testing (#621)</li><li>113be16f – Event emission throttling: Introduce attendance list (#620)</li><li>fce3382a – Add dominant set computation for event throttling (#617)</li><li>c3f8ce88 – Update event throttler config (#618)</li><li>4dba6a77 – Move emitter config to its own package (#615)</li><li>63ae97b1 – Event throttling config (#610)</li><li>41764525 – Add integration test for network progress with validator stake changes (#587)</li><li>cdc44bef – Add option to define validator stakes in integration testing (#568)</li><li>c33999e4 – eth_subscribe: Add option to return full transactions (#589) (#613)</li><li>0b0ed7d8 – Update version to v2.1.5-rc.1 development ready (#606)</li></ul></td></tr><tr><td>v2.1.4</td><td>Nov 25, 2025</td><td>Nov 25, 2025</td><td><ul><li>Fix log timestamps serialization (RPC). </li><li>Fix consistency of log transaction indices when querying logs using block hash (RPC). </li><li>Transaction Pool rejects transactions from non-EOA accounts.</li></ul></td><td><p></p><ul><li>d71420e9 – Update version to v2.1.4 (#602)</li><li>7b0077b2 – Add missing transaction indexing in log retrieval by hash (#578)</li><li>413c9133 – Add checks to txpool (#581)</li><li>b4f7090f – Fix logs blocktimestamp JSON encoding (#573)</li><li>f4ae9adf – Update version to v2.1.4-rc.1 development ready (#580)</li></ul></td></tr><tr><td>v2.1.3</td><td>Nov 5, 2025</td><td>Nov 5, 2025</td><td><ul><li>Reduce overhead from handling sponsored transactions in the transaction pool under heavy load. </li><li>Reuse transaction sender to reduce signature overheads. </li><li>Mitigation for P2P events broadcasting lag stalling block processing.</li></ul></td><td><p></p><ul><li>da095a25 – Update version to v2.1.3 (#579)</li><li>50ae700b – Dockerize Jenkins pipeline (#459) (#575)</li><li>2d8a2f1b – Increase default EventsBufferLimit to avoid sync lags (#555)</li><li>6a50a595 – Signers cleanup (#550)</li><li>ce5321bc – Cache results of isSubsidised (#543)</li><li>657d0441 – Update version to v2.1.3-rc.1 development ready (#548)</li></ul></td></tr><tr><td>v2.1.2</td><td>Oct 8, 2025</td><td>Oct 8, 2025</td><td><ul><li>Added Gas Subsidy support. </li><li>Fixed backward compatibility of gas limit updates.</li></ul></td><td><p></p><ul><li>7f4da1db – Update version to v2.1.2 (#547)</li><li>3b848aa5 – Fix backward compatibility of gas limit updates (#522)</li><li>163cacd0 – Add integration test: Subsidies funds deducted after sponsored tx (#535)</li><li>06162836 – Filter transactions with lost sponsorship in reorg (#534)</li><li>308646cb – Integrate getGasConfig call into Subsidies Registry contract (#523)</li><li>471fd56c – Validate sponsored transactions when added to transaction pool (#524)</li><li>0118bafe – Enforce inclusion of sponsored transactions into Pending set (#518)</li><li>f55eb775 – Deploy gas subsidies registry contract when upgrades enabled (#517)</li><li>6b3ce61c – Fix TransactionIndices in receipts if transactions introduced by state processor (#516)</li><li>a96cc9f7 – Add support for sponsored transactions (#514)</li><li>7d314e26 – Add GasSubsidies flag to tx_pool transaction validation (#515)</li><li>56fd50c5 – Introduce transaction processing context (#513)</li><li>66391d4d – Add fee overflow check to IsCovered utility (#512)</li><li>3e437b31 – Update subsidies registry interface (#507)</li><li>f8a26e11 – Factor out transaction processing from StateProcessor (#497)</li><li>6c28c32d – Introduce feature flag for gas subsidies (#481)</li><li>77d5e2be – Upgrade SFC version used in fake nets (#482)</li></ul></td></tr><tr><td>v2.1.1</td><td>Sep 23, 2025</td><td>Sep 23, 2025</td><td><ul><li>Fix empty logs bloom (RPC). Add CreateTransaction helper function. </li><li>Set chain ID for internal transactions in RPC. </li><li>Remove deprecated default command arguments. </li><li>Improve unit and integration tests.</li></ul></td><td><p></p><ul><li>4f798e29 – Update version to v2.1.1</li><li>0610ae03 – Increment release candidate version (#471)</li><li>98616c44 – RPC api: Fix empty logs bloom (#464)</li><li>3b8ea018 – Wait for processed transaction to leave tx pool (#463)</li><li>b9bc7173 – Add CreateTransaction helper function (#461)</li><li>9a6fb277 – Set chain ID for internal transaction in RPC (#454)</li><li>ec813b69 – Remove deprecated default command arguments (#442)</li><li>b2734b74 – Migrate gossip handler fuzzer (#441)</li><li>a26e5715 – Single proposer pkg (#436)</li><li>c48e3469 – Add integration test for RPC calls at different block heights (#428)</li><li>cb174be7 – Update version to v2.1.1-rc.1 (#450)</li></ul></td></tr><tr><td>v2.1.0</td><td>Aug 20, 2025</td><td>Aug 20, 2025</td><td><ul><li>Ethereum Prague upgrade support: EIP-7702 account abstraction, EIP-2537 BLS precompiles, EIP-2935 historic block hashes, EIP-7623 increased calldata gas cost. </li><li>Input validation for network rule updates. Updated go-ethereum to geth 1.16. </li><li>Legacy code quality improvements. </li><li>Protocol security enhancements. </li><li>Bug fixes.</li></ul></td><td><p></p><ul><li>8c95f202 – Update version on v2.1 branch to v2.1.0 (#447)</li><li>9ba90a92 – Add integration test for type 4 transaction (set EOA code, EIP-7702) (#72)</li><li>1119b125 – Implement EIP-7702 support in RPC calls (#81)</li><li>c37a7dc9 – Update transaction validation for Prague revision (#56)</li><li>7ce78679 – SetCodeTx: changes to transaction pool (#74)</li><li>83895ddc – Modify RPC callbacks to execute EIP-2935 History Storage Contract (#146)</li><li>bc15eca9 – EIP-2935: Implement processor routine to call history storage contract (#133)</li><li>9d020e70 – Add feature changes and test for EIP-7623 (#110)</li><li>4e353186 – Add implementation of a BLS library (#29)</li><li>93ee70c3 – Update ChainConfig to enable Prague fork (#44)</li><li>f523066a – Update geth dependency to version 1.16.0 (#349)</li><li>73f8bf9a – Update geth dependency to 1.15.11 (#321)</li><li>b263f56d – Network rule validation (#142)</li><li>9aa56547 – Integrate single-proposer protocol in emitter and block processor (#232)</li><li>6e812476 – Introduce brio hardfork (#292)</li><li>f9d6754b – Remove FeatureSet in favour of Upgrades (#238)</li><li>07ee5460 – Add allegro hard-fork flag (#20)</li><li>484ae8ce – Add license to Sonic files (#334)</li><li>47639163 – Replace outdated Fantom mentions by Sonic (#327)</li><li>ba4f4a93 – Rename Opera mentions to Sonic (#351)</li></ul></td></tr><tr><td>v2.0.7</td><td>June 26, 2025</td><td>TBA</td><td><br>• Improved error handling in <code>debug_traceBlock</code> — now uses error field and supports empty blob cases</td><td><ul><li>252c9ee0 – Fix error handling in debug_traceBlock (#307)</li></ul></td></tr><tr><td>v2.0.6</td><td>May 6, 2025</td><td>May 26, 2025</td><td><ul><li>Synchronized access to cached block hashes to prevent rare incorrect RPC returns</li><li>Added <code>NoArchiveError</code> check before sending block notifications</li><li>Updated Tosca dependency</li></ul></td><td><ul><li>e44b0188 – Update Tosca dependency</li><li>00c1f2af – Synchronize cached block hash access (#209)</li><li>124dc66e – Add <code>NoArchiveError</code> check for notifications (#214)</li><li>a4e31329 – Update to v2.0.6-dev (#217)</li><li>4551d1fc – Prepare v2.0.5 release (#201)</li></ul><p><br></p></td></tr><tr><td>v2.0.5</td><td>April 11, 2025</td><td>April 28, 2025</td><td><ul><li>Verified archive block height before sending subscriber notifications</li><li>Switched <code>eth_call</code> simulation to GETH for large code handling in state override</li><li>Fixed test infrastructure and updated Go to v1.24</li></ul></td><td><ul><li>ea9e3631 – Add missing dependency</li><li>2d9284a8 – Use GETH for eth_call with large code (#189)</li><li>135b69cc – Fix BlockInArchiveTest infra &#x26; Go 1.24</li><li>e95926e4 – Update indirect dependencies (#121)</li><li>e3f7b4c8 – Check archive height before notifications (#149)</li><li>48cdac00 – Update to v2.0.5-dev (#171)</li></ul></td></tr><tr><td>v2.0.4</td><td>March 15, 2025</td><td>March 26, 2025</td><td><ul><li>Enabled transaction replay on empty blocks</li><li>Added block overrides for RPC calls</li><li>Updated <code>NoBaseFee</code> VM parameter for transaction replay</li></ul></td><td><ul><li>#26 – Replay transactions on empty blocks</li><li>#30 – Add block overrides for RPC</li><li>#104 – Update NoBaseFee VM config</li></ul></td></tr><tr><td>v2.0.3</td><td>Feb 6, 2025</td><td>Feb 19, 2025</td><td><ul><li>Updated go-ethereum dependency to add on-curve check for unmarshaled public keys</li><li>Improved intrinsic gas error detection</li><li>Added <code>SetStorage</code> on Carmen adapter</li><li>Allowed profiler/tracer stop calls even if never started</li></ul></td><td><ul><li>ecc88ecd – Fix version commit/date (#15)</li><li>2340cc37 – Accept profiler/tracer stop calls (#17)</li><li>325fb5ea – Implement <code>SetStorage</code> on Carmen adapter (#2)</li><li>8cc06953 – Update go-ethereum for on-curve check (#5)</li><li>f9eb911a – Fix intrinsic gas error recognition (#4)</li><li>46908a5c – Update module name to 0xsoniclabs/sonic (#1)</li></ul></td></tr><tr><td>v2.0.2</td><td>Jan 23, 2025</td><td>Jan 31, 2025</td><td><ul><li>Enhanced RPC gas capping</li><li>Added <code>getAccount</code> RPC method</li><li>Improved finalized/safe block tag handling</li><li>Reduced event payload fetching during streaming</li><li>Minor bug fixes</li></ul></td><td><ul><li>19dc2691 – Remove <code>dev</code> from meta version (#394)</li><li>3f86ba1c – RPC gas capping (#391)</li><li>b9545c63 – Implement getAccount RPC (#370)</li><li>1a233d03 – Update version to v2.0.2 (#387)</li><li>79519713 – Fix error propagation (#389)</li><li>cda79533 – Handle finalized/safe block tags (#388)</li><li>0e1599a6 – Skip event payload fetch in streaming (#372)</li><li>7265d537 – Use data from proof (#371)</li></ul></td></tr><tr><td>v2.0.1</td><td>-</td><td>Dec 2, 2024</td><td>-</td><td>-</td></tr><tr><td>v2.0.0</td><td>-</td><td>Nov 29, 2024</td><td>-</td><td>-</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.soniclabs.com/technology/version-history.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
