Skip to content

v0.6.0

Choose a tag to compare

@Ekleog-Polygon Ekleog-Polygon released this 15 Sep 12:18
d0258b8
type value
VKEY 0x00d14f977a6ec393014f300ad78d0761dc29435d3fa1e2626fa466bd3343578e
VKEY_SELECTOR 0x0000000e

Changes since v0.5.1, through d0258b88ad4fa54f2079a1673eb119851ee7a0a8 (same commit as v0.6.0-rc.11).
The pessimistic-proof vkey and selector are unchanged since v0.5.1.

🚀 What's New

  • Nonce-based settlement service. Settlement is now driven by persisted settlement jobs and attempts: attempts are built per nonce, bumped on retry, tracked to their L1 result, and pending jobs are resumed on startup (#1549, #1550, #1551, #1569, #1570, #1571, #1572, #1576, #1578, #1580, #1582, #1585, #1393).
  • Settlement admin surface. admin_listSettlementJobs / admin_getSettlementJob for inspection; admin_abortSettlementTask / admin_reloadSettlementTask for task control; admin_insertSettlementAttempt, admin_markSettlementAttemptDefinitelyFailed, admin_removeSettlementAttemptResult, admin_forceRemoveSettlementJobResult for stored-state corrections; and admin_unlinkCertificateSettlementJob to recover a certificate whose settlement reverted on L1 (#1695, #1705, #1711, #1713, #1721, #1722, #1727, #1729, #1797). See docs/knowledge-base/src/settlement-operations.md.
  • Observability. Certificate stage histograms, per-network pending/proven/settled height metrics, settlement attempt/duration metrics and jobs gauge, backup metrics, a Grafana dashboard, and the software version in /health (#1619, #1633, #1662, #1674, #1679, #1717, #1785).
  • Storage backups hardened. Epoch backups are never dropped, newly accepted pending certificates are backed up immediately, and the backup lifecycle is logged truthfully (#1777, #1783, #1787).
  • RPC and configuration. interop_sendTx is disabled (#1637), interop_getNetworkInfo gains minimal certificate identifiers (#1740), the default settlement gas-limit multiplier is 1.3 (#1719), and a legacy [outbound.rpc] settlement config now warns when ignored (#1683).

✅ Testing & Validation

  • v0.6.0-rc.1 through v0.6.0-rc.11 ran on the bali (dev) environment between 2026-07-03 and 2026-09-14; v0.6.0-rc.11 has been settling certificates on bali since 2026-09-14.
  • This commit is the tip of release-0.6.0 (PR #1797, CI green): v0.6.0-rc.10 plus the admin_unlinkCertificateSettlementJob hotfix.

⚠️ Breaking Changes

  • Renames the settlement job mapping column family type
    from CertificateSettlementJobColumn to
    SettlementJobIdPerCertificateIdColumn. No migration version is added
    because the settlement CF is not expected to be present in persistent
    deployments.
    Original commit: (storage)add settlement job reverse mapping CF (#1599)
  • interop_sendTx no longer settles proofs; it always
    returns JSON-RPC error -10009 ("The interop_sendTx method is
    disabled").
    Original commit: (rpc)disable the interop_sendTx method (#1637)
  • admin_forceEditCertificate rejects
    set-settlement-tx-hash
    with INVALID_PARAMS for every certificate, instead of writing the
    header
    field. This includes certificates with no settlement job, where the
    operation
    previously pinned the L1 block used when reprocessing a Proven
    certificate;
    there is no replacement for that use.
    Original commit: (settlement)error-log job build failures, deprecate set-settlement-tx-hash (#1715)

📋 Configuration Changes

  • The default settlement gas-limit multiplier increases from 1.0 to 1.3.
    Explicitly configured values remain unchanged.
    Original commit: (settlement)increase default gas-limit headroom (#1719)

📦 Full Changelog

🚀 Features

  • (settlement) Persist terminal result metadata (#1549)
  • Verify whether address is owned (#1564)
  • (settlement) Persist settlement attempts (#1550)
  • (settlement) Persist settlement jobs (#1551)
  • (settlement) Submit settlement attempt to L1 (#1570)
  • (settlement) Build a signed settlement attempt with new nonce (#1569)
  • Wait for any new expected (wallet, nonce) to be on L1 (#1571)
  • (storage) Store certificate settlement job ids (#1578)
  • Impl next attempt deadline for nonce (#1576)
  • Get L1 result of a given settlement hash (#1572)
  • (settlement) Bump gas over previous attempt on nonce retry (#1580)
  • (settlement) Record certificate job ids before jobs (#1582)
  • (settlement) Resume pending jobs on startup (#1585)
  • (storage) Add settlement job reverse mapping CF (#1599)
  • Bind settlement service with certificate/network tasks (#1393)
  • Include software version in /health endpoint (#1619)
  • (rpc) Disable the interop_sendTx method (#1637)
  • Add histogram on certificate stages (#1662)
  • Add per-network pending/proven/settled height metrics (#1633)
  • Add grafana dashboard (#1674)
  • (telemetry) Add settlement metrics module (#1679)
  • (config) Warn on ignored legacy [outbound.rpc] settlement config (#1683)
  • (settlement) Classify task-control admin errors with RpcErrorCode (#1695)
  • (settlement) Expose abort/reload task controls on the admin RPC (#1705)
  • (types) Add ClientErrorType::AbandonedByAdmin (#1706)
  • (storage) Admin mutations for settlement attempts (#1711)
  • (settlement) Mark-definitely-failed and remove-attempt-result admin mutations (#1713)
  • (settlement) Insert-settlement-attempt admin mutation (#1721)
  • (settlement) Force-remove settlement job result (#1722)
  • (storage) Expose settlement job certificate reader (#1726)
  • (settlement) Respawn-capable reload and task liveness accessor (#1727)
  • (settlement) Admin RPC reads for settlement jobs (#1729)
  • (settlement) Emit attempt and duration metrics, add the jobs gauge (#1717)
  • (ci) Track requested PR reviews in issues and Project 47 (#1739)
  • (network-info) Add minimal certificate identifiers (#1740)
  • (storage) Add backup metrics (#1785)

🐛 Bug Fixes

  • (settlement) Load persisted settlement attempts (#1552)
  • (config) Accept bare filename config paths (#1553)
  • (contracts) Query aggchain hash at pre-settlement block (#1563)
  • (storage) Enforce proof acceptance policy (#1554)
  • (build) Stamp agglayer version in docker images via build-arg (#1568)
  • Back off before reorg new loop (#1581)
  • (settlement) Assign nonces from local queue (#1596)
  • (settlement) Handle task resumption invariants (#1601)
  • Prevent panic-loop on conflicting attempt results (#1617)
  • (rpc) Refuse certificate replacement while its settlement job has not reverted (#1616)
  • (settlement) Map Tenderly's -32001 "not found" to an absent tx (#1628)
  • Log expected settlement polling retries at debug level (#1627)
  • (storage) Apply declared column options when reopening the database (#1630)
  • (settlement) Serialize same-wallet nonce assignment across jobs (#1680)
  • Pin rust nightly version (#1686)
  • (deps) Switch insta to crates.io (#1689)
  • (settlement) Write reverse job mapping and harden startup recovery (#1682)
  • (settlement) Persist settlement job and certificate link atomically (#1712)
  • (settlement) Increase default gas-limit headroom (#1719)
  • (settlement) Avoid control allocation for completed recovery jobs (#1631)
  • (settlement) Reject notifications to cancelled tasks (#1730)
  • (storage) Back up the state DB when a certificate is proven (#1714)
  • (settlement) Error-log job build failures, deprecate set-settlement-tx-hash (#1715)
  • (settlement) Retry request timeout errors (#1741)
  • (settlement) Retry gateway timeout errors (#1746)
  • (deps) Address RUSTSEC-2026-0253/0258 and CI toolchain drift (#1772)
  • (storage) Split the backup queue so epoch backups are never dropped (#1777)
  • (storage) Log the backup lifecycle truthfully and time engine opens (#1783)
  • (storage) Back up newly accepted pending certificates (#1787)
  • (admin) Unlink a certificate from its reverted settlement job (#1797)

📚 Documentation

  • Remove stale PR-number references from comments (#1566)
  • (settlement) Settlement admin mutations runbook (#1725)
  • (settlement) Complete the settlement admin runbook (#1731)

🚜 Refactor

  • (agglayer-types) Route SP1 access through agglayer-sp1 facade (#1567)
  • (settlement) Isolate attempt hydration (#1560)
  • (storage) Reopen the database with declared column options in finalize (#1635)
  • (telemetry) Expose the metrics test harness via testutils (#1673)
  • (rpc) Centralize application error codes (#1703)
  • (settlement) Remove dead settlement client code (#1709)
  • (settlement) Promise only queued semantics for admin live-task notification (#1716)
  • (settlement) Use RAII teardown for settlement task registrations (#1724)
  • Remove Error derive from GenerationType (#1346)

🎨 Styling

  • Fix clippy 1.97 lints before CI runners update (#1670)

🧪 Testing

  • (integrations) Speed up and stabilize integration suite (#1473)
  • (settlement) Harden flaky tx-hash-by-nonce Anvil test (#1589)
  • (integrations) Assert stage histograms emit on settlement path (#1678)
  • (settlement) Strengthen settlement service coverage (#1733)

🤖 CI

  • Skip merge queue docker cache export (#1593)
  • Move docker build cache to a registry and split circuits stage (#1667)
  • Target agglayer v0.6.0 e2e stack (#1690)
  • Unpin nightly (#1691)

⚙️ Miscellaneous Tasks

  • Remove unused README variable (#1527)
  • Bump quinn-proto (#1588)
  • (settlement) Move inline test modules to sibling files (#1694)
  • Remove SonarQube/SonarCloud integration (#1672)
  • Bump ruint to 1.20.0 (#1723)

⏪ Reverts

  • Remove per-epoch certificate rate limiting (#1615)

🔒 Dependency updates

  • Bump openssl, rustls-webpki, rand for security fixes (#1573)
  • Bump crossbeam-epoch to 0.9.20 for RUSTSEC-2026-0204 (#1636)
  • Address RUSTSEC-2026-0253/0258 and CI toolchain drift (#1772)