Aside from bug fixes and general QoL updates, this release introduces an array of new performance improvements, netting an increase of around 60% in execution throughput. Improvements range from optimizing vm opcodes to merkelization, better database options, and taking advantage of appropriate SIMD instruction sets on processors that support them.
NOTE: upgrading to this release requires resyncing.
Installation and running instructions can be found in our docs
💥 BREAKING CHANGES
-
due to
8089824- fix jumpdests for large initcodes (PR #5254 by @iovoid):fix jumpdests for large initcodes (#5254)
-
due to
120e1c7- separate Account and storage Column families (PR #5055 by @Arkenan):separate Account and storage Column families (#5055)
-
due to
27be096- enable BlobDB for account bytecodes (PR #5300 by @MegaRedHand):enable BlobDB for account bytecodes (#5300)
✨ New Features
6e40a72- l1: omit copying bytes when encoding transactions (PR #5137 by @fmoletta)81a0cf3- l1: admin_addPeer endpoint (PR #5004 by @cdiielsi)4d99b56- l1,l2: setting avx2 flags for compilation and adding features asm to crates (PR #5189 by @pablodeymo)001e9a4- l1: named block_executor thread and subthreads (PR #5211 by @ElFantasma)3ab8004- l1: useadd_blocks_in_batchwhen importing blocks (PR #5204 by @fmoletta)↘️ addresses issue #5172 opened by @fedacking
5bbfc65- l1: upgrade execution breakdown pie chart and add new panels (PR #5220 by @rodrigo-o)↘️ addresses issue #5218 opened by @rodrigo-o
ce98532- l1,l2: name rayon threads for easier debugging (PR #5269 by @Oppen)f27da23- l1: add import-bench command for benchmarking block importing (PR #5215 by @fedacking)258982f- l2: revert current native token feature (PR #5008 by @tomip01)665a5da- l1: improve block execution aggregation logs (PR #5260 by @MegaRedHand)6fbd93b- l2: commit blocks instead of state diffs (PR #5135 by @avilagaston9)ff1442f- l1,l2: make tuple encoders single-pass to avoid double-encoding (PR #5319 by @VolodymyrBg)cea9f0c- l2: allow paying fees with custom token (PR #5024 by @tomip01)f1cfdf8- l2: add serde to AuthorizationTuple fields (PR #5339 by @damiramirez)9fc41e7- l1: rpc instrumentation and panels (PR #5311 by @rodrigo-o)4657f36- l1: add CLI flag to specify P2P listening address (PR #5297 by @MegaRedHand)
🐛 Bug Fixes
a9cd9b7- l2: setpendingPrivilegedTxIndexin initializer (PR #5161 by @ManuelBilbao)271e68a- l1, l2: tuning parameters of qfilter (PR #5166 by @pablodeymo)5b1c859- l1: unifiyfake_exponentialto a single U256 function (PR #5107 by @fedacking)5ffbd3f- l1: headers snapsync logs (PR #5082 by @fedacking)80aaef8- l1: fix queue length log (PR #5197 by @iovoid)11fe1c1- l1: have block execution stop when block's gas limit is surpassed by executing a transaction (PR #5185 by @cdiielsi)d413c55- l1: always use fullsync if db had data (PR #5196 by @fedacking)1d36a0b- l1: rlp decode impls for low size transactions (PR #5139 by @fmoletta)d280e5b- l1: fix breakdown pie chart (PR #5202 by @rodrigo-o)583914c- l1: resetctrvariable to 0 once committed (PR #5214 by @MegaRedHand)16b4297- l1: validate incoming pooled tx blobs (PR #4963 by @fmoletta)↘️ fixes issue #3745 opened by @MegaRedHand
a891b78- l2: peer table duplication (PR #5227 by @cdiielsi)f0922a0- l1: make function inner for InMemoryTrieDB (PR #5199 by @JereSalo)a6c7501- l1,l2: temporary fix for risc0 ecmul precompile (PR #5240 by @JereSalo)45a9871- l1: build initial empty block in block building (PR #5205 by @SDartayet)↘️ fixes issue #4997 opened by @MegaRedHand
47e286a- l1: revert build initial empty block in block building (#5205) (PR #5257 by @SDartayet)80be189- l1,l2: fix occasional error withdebug_executionWitness(PR #5212 by @JereSalo)fe53dcb- l2: shutdown node with ctrl+c (PR #5208 by @tomip01)8089824- levm: fix jumpdests for large initcodes (PR #5254 by @iovoid)4184393- l1,l2: make ethrex L1 + L2 + GPU build compile for ubuntu 22.04 (PR #5276 by @ilitteri)5a75700- l2: monitor does not ask for peers when node is not based (PR #5279 by @tomip01)f4905c2- l1,l2: build on ARM Linux (PR #5285 by @Oppen)cbb1fe5- l2: handle better when producing an empty batch (PR #5293 by @tomip01)e7f1385- l2: revert breaking when budget is reached for privileged txs (PR #5326 by @gianbelinche)9846e60- l1: fixed error message for gas limit (PR #5320 by @fedacking)43e64eb- l1: sleep between FCU and getPayload calls in dev-mode block producer (PR #5310 by @MegaRedHand)47a30fe- l1: do not usesecp256k1SP1 patch for the workspace (PR #5338 by @ilitteri)6e0cacd- l2: increase wake up time committer (PR #5341 by @tomip01)9143626- l2: increase L1 tx receipt retrieve retries (PR #5356 by @ilitteri)8825ef3- l2: checkpoint creation (PR #5321 by @avilagaston9)
⚡ Performance Improvements
1130d27- l1: avoid opening tries (PR #5145 by @iovoid)9e37483- l1: validate receipts in the same thread as the execution (PR #5170 by @iovoid)05211ba- l1: avoid validating node hash (PR #5167 by @iovoid)af963e8- levm: reuse stack pool (PR #5179 by @iovoid)4e239ae- l1: disable compression of database (PR #5223 by @iovoid)49d69bd- l1: batch merkelization requests if the queue is not empty (PR #5200 by @iovoid)d04bca6- levm: fixFlatKeyValuegeneration on full sync mode (PR #5274 by @azteca1998)85ef3d3- l1: use asm ffi keccak (PR #5247 by @edg-l)f5b968f- l1: rebuild_bloom - insert instead of merge (PR #5266 by @Arkenan)b31c7a4- levm: cacheBLOBBASEFEEopcode value (PR #5288 by @azteca1998)43a743f- l1: avoid copy when reading account code (PR #5289 by @iovoid)120e1c7- l1: separate Account and storage Column families (PR #5055 by @Arkenan)d9fff5e- l1: selective dirtying of trie (PR #5282 by @iovoid)27be096- l1: enable BlobDB for account bytecodes (PR #5300 by @MegaRedHand)e071bd5- levm: add base blob fee to env to avoid recalculating it (PR #5328 by @iovoid)93832c0- levm: specialized DUP (PR #5324 by @iovoid)
♻️ Refactors
7ff0ff2- l1: change p2p_enabled flag to p2p_disabled flag (PR #5228 by @cdiielsi)↘️ addresses issue #4979 opened by @MegaRedHand
ee07397- l1: bring all test modules in the rpc crate into a single test_util module (PR #5213 by @cdiielsi)↘️ addresses issue #5070 opened by @ElFantasma
d9cd9fd- l2: avoid peer handler logs (PR #5253 by @avilagaston9)↘️ addresses issue #5222 opened by @avilagaston9
1438c81- l1: remove unneeded clone andArc(PR #5252 by @MegaRedHand)2690a53- levm: use push1 instead of multi-push (PR #5304 by @iovoid)b6b7eac- levm: remove unneeded checks in swap (PR #5305 by @iovoid)4b48335- l1: avoid recursion inTrieLayerCache::commit(PR #5318 by @MegaRedHand)
✅ Tests
fdc6a91- l2: fetch fee vault addresses from the RPC (PR #5183 by @avilagaston9)
🔧 Chores
c5e99e0- l1: update mainnet genesis file for fusaka (PR #5162 by @mpaulucci)f86cb00- l1: mute devp2p tests until we can fix the flaky ones (PR #5171 by @fedacking)2f3a86f- l2: use SP1 patched crate for ecmul precompile (PR #5133 by @xqft)10f5a3d- l2: improve zkVM execution and proving time logs (PR #5201 by @ilitteri)4d3eb6c- l1,l2: bump version 6.0.0 (PR #5111 by @ManuelBilbao)8627e77- l1: remove unneeded clone of key in difflayers (PR #5251 by @iovoid)ec91257- l1,l2: disable printing of log tagets depending on log level (PR #5184 by @mpaulucci)6367f53- l2: optimize trie hashing andBranchNodeencoding for zkVMs (PR #4723 by @xqft)66cd9fb- l2: include zkVM ELFs and VKs in the releases (PR #5244 by @ilitteri)07692de- levm: lambdaworks update version 0.13 (PR #5206 by @pablodeymo)f936ec3- l1,l2: add workflow dispatch for triggering the release process (PR #5286 by @ilitteri)a39000d- l1: remove old snap sync dead code (PR #5283 by @Oppen)c95c4ec- l2: skip L2 Dev workflow in the merge queue (PR #5296 by @ilitteri)f3136fb- l1: do not include portable feature inc-kzgfor L1 (PR #5287 by @ilitteri)906d744- l1: fixed data path for mac (PR #5075 by @fedacking)9e0d0a5- l2: do not use docker to compile prover except on releases (PR #5315 by @ManuelBilbao)a539691- l1,l2: update Cargo.lock files (PR #5357 by @ilitteri)ffd9210- l2: granulize SP1 zkVM cycles report (PR #5226 by @ilitteri)