Important
This release is required for the Allegro Moderato hardfork scheduled for Dec 22nd 4pm CET.. We ask node operators to upgrade to this release to follow the hard fork. This hardfork focus is on security and simplifications from our recent audits and internal reviews in the road to mainnet.
This release includes a Reth upgrade with improved performance.
The Allegro Moderato hardfork is primarily focused on removing system transactions and moving to immediate execution for both fee swaps and stablecoin DEX orders. This simplifies the architecture and improves efficiency. There are also important security fixes around spending limits and TIP20 validation. See all changes labelled F-allegro-moderato
Here's what's coming in this hardfork:
Architectural changes
Immediate Fee Swaps : Removes the end-of-block fee manager system transaction. Fee swaps now execute immediately during transaction execution, with fees accumulating in the FeeManager. Validators claim accumulated fees on-demand via distributeFees(). FeeSwap events are not emitted for immediate swaps.
Immediate Stablecoin DEX Orders: Orders are added to the active book immediately when place() or place_flip() is called, removing the need for the stablecoin DEX system transaction.
Fixes
Spending Limits Enforcement : Fixed spending limits to only apply to tx.origin spends, not contract transfers. This prevents failures when an EOA with access keys calls a contract that transfers tokens. Uses transient storage to pass tx.origin to precompiles.
TIP20 Fee Application Scope: Limited which TIP20 functions trigger fee rules.
TIP20 Token Validation: Validates is_tip20 in from_address post-hardfork to ensure only valid TIP20 tokens are used.
Fix setFeeToken to allow PathUSD: Fixed the setFeeToken() function on the TIPFeeManager to allow PathUSD to be set as the fee token.
Gas schedule updates
Gas Schedule & Nonces: Fixed 2D nonce gas schedule
Access Keys : Added gas schedule for access keys
What's Changed
- feat: add local benchmarking setup with nushell script by @shekhirin in #1502
- fix: expect errors in snippet by @struong in #1524
- feat: --delete-signing-share to delete signing share on startup by @SuperFluffy in #1527
- Update favicon, og-image by @achalvs in #1382
- feat(builder): instrumented state provider by @shekhirin in #1483
- chore: add fallback favicon by @o-az in #1531
- fix: disallow precompile static calls by @0xKitsune in #1517
- feat: add
noncemanagement guide by @gorried in #1526 - fix(bench): bench.nu samply and node args escaping by @shekhirin in #1529
- feat(cli):
--builder.disable-state-cacheby @shekhirin in #1532 - ci: use all cores for snapshot re-execution by @shekhirin in #1475
- feat: add
MetadataDatabaseby @joshieDo in #1029 - fix: precompile CI by @legion2002 in #1543
- chore: Cargo.toml patch reth deps, bench.nu debug profile by @shekhirin in #1545
- fix: make cursor work properly when query spans more than one orderbook by @Rjected in #1223
- chore(storage): no need to load account for tload/tstore by @rakita in #1467
- docs: filter out unsupported injected wallets by @struong in #1538
- fix(precompiles): enforce TIP20 blacklist on internal balance operations in StablecoinExchange by @fgimenez in #1289
- docs: point to Privy example by @struong in #1560
- chore: trim dependencies by @klkvr in #1547
- chore: introduce
rethfeature fortempo-primitivesby @klkvr in #1562 - feat(consensus): finalize DKG speculatively by @SuperFluffy in #1477
- feat(precompiles): remove stablecoin dex system tx by @0xKitsune in #1509
- feat(fee-manager): remove fee manager system tx by @0xKitsune in #1537
- test: fix flaky
payment_lane_with_mixed_loadtest by @0xKitsune in #1621 - perf(stablecoin-exchange): optimize LCA computation for multihop routing by @fgimenez in #1618
- feat: add
ReadOnlyStorageProviderto use precompiles anywhere by @0xrusowsky in #1546 - fix(docs): modify cargo install dir by @Zygimantass in #1389
- chore(consensus): everything is private unless it needs to be public by @SuperFluffy in #1633
- fix(precompiles): spending limits enforcement only for tx.origin spends by @legion2002 in #1565
- fix: add spending limit checks by @legion2002 in #1558
- fix(precompiles): prevent TIP20 transfers to zero addr by @0xrusowsky in #1616
- fix: multicall3 error, and add sync tests against ethereum mainnet by @legion2002 in #1629
- docs: For Wallet Developers guide by @struong in #1624
- chore(cli): add default allegretto_time to generate-genesis by @Rjected in #1536
- fix(precompiles): limit functions that TIP20 fees apply to by @0xrusowsky in #1549
- ci: pin solc v0.8.30 by @0xrusowsky in #1639
- feat: add gas schedule for access keys by @legion2002 in #1413
- fix(precompiles): update
changeTransferPolicyId()to validate policy existence by @0xKitsune in #1627 - deps: bump reth to 1.10.0-rc.2 by @mattsse in #1535
- chore: bump vocs to 1.4.0 by @struong in #1646
- ci: unpin solc version now that patch has been released by @0xrusowsky in #1647
- chore(hardfork): add allegro moderato harfork time and bump package by @Zygimantass in #1649
- fix(test): add am hardfork to pregenerated genesis by @Zygimantass in #1664
- fix(stablecoin-exchange): consolidate rounding with explicit direction to favor protocol by @fgimenez in #1583
- fix(revm): validate validator fee token preference to prevent user DoS by @fgimenez in #1615
- test: prove storage layout slot allocation fix by @0xrusowsky in #1654
- feat: refactor env variables to support devnet by @gorried in #1673
- fix: ensure compiler errors when multi-slot types overflow in slot alloc by @0xrusowsky in #1634
- fix: devnet wagmi config by @bpierre in #1676
- docs: tabulate faucet options by @struong in #1677
New Contributors
Full Changelog: v0.7.5...v0.8.0