Skip to content

chore: sync v0.7.3 to arc-node#211

Merged
ZhiyuCircle merged 1 commit into
release/0.7from
sync/v0_7_3
Jul 20, 2026
Merged

chore: sync v0.7.3 to arc-node#211
ZhiyuCircle merged 1 commit into
release/0.7from
sync/v0_7_3

Conversation

@circle-github-action-bot

Copy link
Copy Markdown
Contributor

Automated final release sync.

Release tag: v0.7.3
Release branch: release/0.7
Release kind: patch

  - c90a4450ce760cb216b09ac0c3e538ae787f4cec feat(NoStory): add consensus missed-round metric (main) (... by circle-github-action-bot <[internal]>
  - 899b612437b1277a978b27991b209a8acc21be64 chore(NoStory): cherry-pick #1352 and #2269 from develop ... by circle-github-action-bot <[internal]>
  - c4e591b3cea6d534ed04824d9bf5957e5f3e78a8 chore(NoStory): add private release orchestration (#2463) by circle-github-action-bot <[internal]>
  - 55f01331610be74dae36aaf2441b631e130d0374 ci(NoStory): bump remote-signer dev image to current ECR ... by circle-github-action-bot <[internal]>
  - c833791874111010d3859d400e91d06de90529ca fix: redact ZScaler infra comments from bloc... by circle-github-action-bot <[internal]>
  - 7658b8a33f4b0373758c5b9f0a9a0e96694549b4 ci(NoStory): port build-once + max-parallel to nightly ch... by circle-github-action-bot <[internal]>
  - 5d99fa7b4b2172a8e89f3d4d7125f50e2be84bd4 ci(NoStory): fix nightly random-manifests runner starvati... by circle-github-action-bot <[internal]>
  - 68ea1ae75db1b31a5d0fb2bf7a107b1a6c2f4f41 feat: charge delegatecall early-revert penal... by circle-github-action-bot <[internal]>
  - d26f9ef1a1dc12e708e6ba03ed8837c5bb1a1748 fix(NoStory): remediate cargo audit advisories (#2512) by circle-github-action-bot <[internal]>
  - 6210fc4dead75961fa3aa8676616f1c3b3dc3bfb chore(NoStory): update Malachite to `circlefin/malachite@... by circle-github-action-bot <[internal]>
  - 3bbe50280b9b17dd16ff1f52125017333b3ab3db feat: introduce Zero8 hardfork (dormant) (#2... by circle-github-action-bot <[internal]>
  - fcb501b8b1332bc31e90263ff7c33b8a5072bd17 fix: complete ArcRpcLayer pending-block filt... by circle-github-action-bot <[internal]>
  - 302caa2e7e8fe4d7123f8ef563deb98fa3f2cafa feat: accept hex block numbers in arc_getCertificate (#24... by circle-github-action-bot <[internal]>
  - e41047579cd220ec89fafc49b2af8217ae3868f9 doc: close spec and test gaps from public-re... by circle-github-action-bot <[internal]>
  - e9f80bbcafcc4bafed8f69e5973f4cebc61c1ec0 fix(NoStory): revise ADR-004 (#2377) by circle-github-action-bot <[internal]>
  - 8c98d6550b7cde7227f6e771217c7fae3dea02dd chore(NoStory): scope v0.7.2 Zero7 activation to testnet ... by circle-github-action-bot <[internal]>
  - 96fe12d20b34878c0c76fea4c8f858e557b284d4 fix: stop stale proposal streams from blocki... by circle-github-action-bot <[internal]>
  - 765a5c616657cc8ed6896ee5b750d9fdf8a0f3ef chore: redact internal references from publi... by circle-github-action-bot <[internal]>
  - d0d3f77633c5c0eaf4821035e07c1af43d983f95 chore(NoStory): activate Zero7 on devnet, testnet, mainne... by circle-github-action-bot <[internal]>
  - 5863e485b4d2a3145f4fa7664858f1a5a937a032 fix: preserve cold state for selfdestruct ch... by circle-github-action-bot <[internal]>
  - 60f8eb0bc20541e910e4cd0edc2b1defdbb91db0 fix(cchain-1841): by default disallow RPC-submissions of ... by circle-github-action-bot <[internal]>
  - 38d51243dbe3a84cc0a0101389e44fe2dc3de3b5 fix: default --rpc.gascap to 30M (#2248) by circle-github-action-bot <[internal]>
  - 79f2c3a5eabee8bda85c1e1db78a1c84cb92c5a0 feat: upgrade validator-registry for devnet/... by circle-github-action-bot <[internal]>
  - d7f029143f8c36cd543e05ef2f1ffd515d991fac audit: cap JSON-RPC batch size, default inva... by circle-github-action-bot <[internal]>
  - c58e2426fcc0dc4a47bf690d6f2e93e5949e9c44 chore(NoStory): bump Malachite to `8ee5d998` (#2206) by circle-github-action-bot <[internal]>
  - 181371e2e9ac17c36774b621717e96d69cec57fc fix(NoStory): add version info to spec test binary (#2222) by circle-github-action-bot <[internal]>
  - 42bc0df06c84d9b586fffd251e4270249cf640a3 fix: charge gas before storage I/O in precom... by circle-github-action-bot <[internal]>
  - fdada00b0105426e87fff70f9799aef2bd839186 chore(NoStory): cook snapshots in docker dependency layer... by circle-github-action-bot <[internal]>
  - a3005e2111e9c163e6042337d384b61cc8f01902 test(NoStory): stabilize per-validator fee accrual smoke ... by circle-github-action-bot <[internal]>
  - d7599099092f36c9220fd11616143b2c9674a8c1 fix(cchain-1866): fail closed in SELFDESTRUCT handler on ... by circle-github-action-bot <[internal]>
  - 6ecc47fb46c66d286436ed47a654b3366968e48e docs: add RPC provider node section to public... by circle-github-action-bot <[internal]>
  - 76a051f0f537f1f075d57c74f42305620a160e19 doc: sweep v0.7.1 CHANGELOG and BREAKING_CHA... by circle-github-action-bot <[internal]>
  - 60160bb1732fe95238383bf6a5d0869805981ac7 chore: import arc-node PR #64: docs: clean up README word... by circle-github-action-bot <[internal]>
  - 44eed3cf693b01951df1662671c7f18e090dede8 chore: import arc-node PR #69: minor refactor to use impl... by circle-github-action-bot <[internal]>
  - 01074a905e69604533e259464438a658291efd5c chore: publish mainnet genesis, drop cfg gat... by circle-github-action-bot <[internal]>
  - 250c5e7ded6a2a275806f43c5abc470d85143316 chore: Update docs for v0.7.1-rc2 (#2181) by circle-github-action-bot <[internal]>
  - a664dc6d97a8897513640141548d6b01addef0b6 fix(NoStory): fix fork id (#2176) by circle-github-action-bot <[internal]>
  - 8ad6031f2c04dc12f1224f9637008a9394b25cfc audit: RPC conn defaults & config (#2158) by circle-github-action-bot <[internal]>
  - 9813b75209ca3d90ce9da3fb3ac52acaa89fb50d chore: import arc-node PR #73: docs: fix duplicate "the" ... by circle-github-action-bot <[internal]>
  - 502b4c070d69ee21f464adfab2a01d1250239392 fix(cchain-1732): selectively overwrite create2 scheme wi... by circle-github-action-bot <[internal]>
  - a157d435fbf247a86e0a56c2a8a1a5a3cf753dc8 fix: wire latency emulation through to remot... by circle-github-action-bot <[internal]>
  - 7227417bf29513efb3b90938db16fea42967b63b doc: seed public CHANGELOG.md entry for v0.7... by circle-github-action-bot <[internal]>
  - 88dd1065b89aadd293b24fbcc80116e349b1258a chore: enable keccak-cache-global and asm-keccak (#2107) by circle-github-action-bot <[internal]>
  - fdf4bc1f9f9a5bfd43c27c8247b61e6575489410 fix(NO-STORY): random manifest's sentries should enable c... by circle-github-action-bot <[internal]>
  - a3e67b1240ae41a1a9e9939ee4f7d443089e30d6 chore: activate Zero5 + Zero6 on devnet and testnet (#2149) by circle-github-action-bot <[internal]>
  - 8aa29d4674aeafc387286bcbe351e52a3c614402 chore: touch up CHANGELOG and BREAKING_CHANGES (#2127) by circle-github-action-bot <[internal]>
  - 940bc43c399e5e484a79c1fe02dea697264c6948 doc: seed public CHANGELOG.md and BREAKING_C... by circle-github-action-bot <[internal]>
  - cb3d9264088e95c846b690bd1423e9d7c085fcd0 test: add nightly tx propagation check (#2092) by circle-github-action-bot <[internal]>
  - d86cb94fb29ba5bcefa3225884a75bc20a8452d8 fix: enforce subcall completion gas limit (#... by circle-github-action-bot <[internal]>
  - 34b9b7a6fc281846a2ee13bd541ec119c56f198d feat: expose per-run telemetry from the spam... by circle-github-action-bot <[internal]>
  - 5791a7cd77b7ecfab1d92f7431d35b6c6ce8ce5d fix: use configured EVM spec for instruction... by circle-github-action-bot <[internal]>
  - 3588ea94a31f211a133ceb7720e31d945029627a feat: fix simulation for mainnet (#2096) by circle-github-action-bot <[internal]>
  - 8a35d4a10f6fad51901cfa8929435b0b90df6c5e feat: finalize mainnet genesis for launch (#... by circle-github-action-bot <[internal]>
  - 1b549b00755f7242b0af57c0f19aedf838d28415 chore(NoStory): filter arc system accounts for computing ... by circle-github-action-bot <[internal]>
  - 54fc12f37aba4a94a0b2485bae4a76fe2c9682dd feat: register arc-mainnet as named chainspe... by circle-github-action-bot <[internal]>
  - 074e3961a38ae6518c89e1f61dc5cc250efded6b test: cover EIP-7702 subcall edge cases (#20... by circle-github-action-bot <[internal]>
  - 6e5a9d4e4ad949551be29a587f15a4c759c50a02 feat: merge load and remote load into single... by circle-github-action-bot <[internal]>
  - 2117d033739fb0a7103a058665b4c9e38575a20e fix(quake): build spammer docker image from full workspac... by circle-github-action-bot <[internal]>
  - 8651f7dfff116f0b963488cd0867cefb728ef1c3 feat: fill in remaining Genesis addresses (#... by circle-github-action-bot <[internal]>
  - fb98e5c6501934235797c2d13fa74b332ba80c41 feat: redeploy denylist on devnet (#2076) by circle-github-action-bot <[internal]>
  - 64f09104a53d23904e0ad13de73271db1a4ab29f feat: prefund Arc ops wallet (#2061) by circle-github-action-bot <[internal]>
  - 4f9bdfdbfd03aad21665985b6a5e6629696d4427 fix(noStory): Surface duplicate Init/Fin proposal parts a... by circle-github-action-bot <[internal]>
  - 149bd046971bfa66643b3353629d7366ce06c214 fix: resolve EIP-7702 delegation when loadin... by circle-github-action-bot <[internal]>
  - 849d6d00107e395b9bf17674a1b35ea23238dff0 fix(NoStory): exclude perf group from default quake test ... by circle-github-action-bot <[internal]>
  - a913a6e673b17e93539cc943d9226b19fc37662b fix: suppress pool-based pending tx leaks in... by circle-github-action-bot <[internal]>
  - 7786e17cff12870e70f4d22edc23a675dca2c850 refactor(NoStory): defer subcall continuation insert unti... by circle-github-action-bot <[internal]>
  - 72799da383cc053a51f9e2dcbb695ad34c9c7801 feat: defined USDC admin roles on Arc mainne... by circle-github-action-bot <[internal]>
  - 29bd97d1e653be8f210fe52f90bfe3577c914de7 feat: add dedicated chainspec bounds for mai... by circle-github-action-bot <[internal]>
  - c0340e06532ed3b1ea0bcd0a2b9b1f1658131e0e feat: support `extra_account_balance_usdc` a... by circle-github-action-bot <[internal]>
  - ae53603086f31148cd1b76a38ffaef54e675d004 feat: add EL and CL CPU/memory limits to man... by circle-github-action-bot <[internal]>
  - f6a449878ed4770fd4d5a56cd30559bff0b1f970 chore: reduce value-sync REQUEST_TIMEOUT fro... by circle-github-action-bot <[internal]>
  - a95fc9fa8639af94b104f67a007c0d361de8d52f fix: Quake persistent peer address expansion... by circle-github-action-bot <[internal]>
  - fd124ceeb9a90df5849827a595bba92608a0f6b8 chore(NoStory): bump Malachite to `0422137f` (#2018) by circle-github-action-bot <[internal]>
  - b3474282e26589d6bb15646e1b76a68875e126ba fix: Mark undecided block Invalid on engine ... by circle-github-action-bot <[internal]>
  - c8ecd7a501953278a1bc3a288fbdd83ad1792a0e feat: apply 0xef to Arc precompile addresses ... by circle-github-action-bot <[internal]>
  - c189e2b04f91abc2ee33d84f1d2184e237940d54 feat: deploy Denylist on devnet/testnet (#17... by circle-github-action-bot <[internal]>
  - 1a94334dd6dfa403e281a89da83373c5e19231c5 feat: introduce mainnet genesis (#1880) by circle-github-action-bot <[internal]>
  - b57e385ce79c8cdf3eeff69a7a863fee8641e5d3 fix: Add `init: true` to Quake Docker node c... by circle-github-action-bot <[internal]>
  - 3f03201132d08debb983d9133bd073deacda29c5 feat: add `node_volume_type` and `node_volum... by circle-github-action-bot <[internal]>
  - bf67fcf737d87796327ab1b761063a3163f7460a fix: pass secrets to Terraform via env vars ... by circle-github-action-bot <[internal]>
  - fe0af2f37f2b51a65da8233e63bd14b81f5914a5 fix(NoStory): `skip --auto-approve` when running terrafor... by circle-github-action-bot <[internal]>
  - ea7b852d520247f23a2c0c15748c78e9a4348e69 chore: default quake `arc.builder.deadline` ... by circle-github-action-bot <[internal]>
  - 5486ae04e83d2b72274602ff535eccfe6a1d1bbf fix: add new account surcharge via precompil... by circle-github-action-bot <[internal]>
  - cbbfc83bcc04ab6ec6f1a41cf3358a38e8464a61 feat(NoStory): add Zero7 hardfork for batch and memo cont... by circle-github-action-bot <[internal]>
  - 00abcf2eb3983f3c0dbb3c59e871e7d83386e1f3 feat: update protocol-config upgrade script ... by circle-github-action-bot <[internal]>
  - 0fe5e21e332a0f8378c6bfca3b1558fe96f8ff3d fix: impl EIP-2200 sentry for sstore (#2006) by circle-github-action-bot <[internal]>
  - 5c97f1fcc67c60aa24a817bbed144ab52b00ed01 test: integration tests with real in-process... by circle-github-action-bot <[internal]>
  - 688206ae733be82d8c9d573672d43c7913aba912 test(NoStory): stabilize per-validator fee accrual test (... by circle-github-action-bot <[internal]>
  - 63ec0aa0b651ec39ad55c5d11ca28cf387911ebc fix: correct count of pre funded accounts (#... by circle-github-action-bot <[internal]>
  - 4d424867d985f9272030bf38512fc4daa349518d fix: Skip persistence wait during sync if bl... by circle-github-action-bot <[internal]>
  - 3990dd2ef942b6bd0002d03b3f113dfd68b44d63 fix: consume all gas for subcall in static c... by circle-github-action-bot <[internal]>
  - 5319bc14c65192cb798dde24402520cab03a94d4 fix: regenerate localdev genesis after Pausa... by circle-github-action-bot <[internal]>
  - df8a0712979d217b7403c5e0f59532e1b2be4739 fix: address inconsistent behavioral convent... by circle-github-action-bot <[internal]>
  - ad39090013e7f428d1f44f85ae750e6356b4cefe fix(1782): Strictly decode ABI parameters in precompiles ... by circle-github-action-bot <[internal]>
  - 81445b37dcf83e486942dcd21753a3884c4e31fd fix: drop redundant SLOAD charge in storeGas... by circle-github-action-bot <[internal]>
  - 070d94218b243008f28e1cde64bf5bf84a2ac663 chore(NoStory): update PQ precompile dependency and guida... by circle-github-action-bot <[internal]>
  - a72d625f94cb1168239f6be15c5bf149d4274a1b fix: remove blocklist SLOAD gas cost (#1969) by circle-github-action-bot <[internal]>
  - 845e0178122511e9192645497d10c6478176b665 fix: revert Controller.getVotingPowerLimit w... by circle-github-action-bot <[internal]>
  - d8ae67e23b40a0764996913bce3fe04c5411e837 fix: capture Multicall3From precompile rever... by circle-github-action-bot <[internal]>
  - 92ed1fb989c63c53137a9946af45e914391501b1 fix: charge gas for subcall completion phase... by circle-github-action-bot <[internal]>
  (And 339 more changes)

GitOrigin-RevId: c90a4450ce760cb216b09ac0c3e538ae787f4cec
@osr21

osr21 commented Jul 20, 2026

Copy link
Copy Markdown

Automated release sync, but there is substantial technical content worth reviewing. Five things stand out:


1. Zero8 hardfork — what changes and what it means for DApp builders

Definition (hardforks.rs):

Zero8, // v0.8 hardfork — delegatecall rejections charge the uniform early-revert penalty

Behavior change (helpers.rs, check_delegatecall):

Before Zero8, a delegatecall targeting a precompile address gets a plain revert with full gas refund:

PrecompileErrorOrRevert::new_reverted(*gas_counter, ERR_DELEGATE_CALL_NOT_ALLOWED)

After Zero8, it charges the uniform early-revert penalty (200 gas) before reverting:

PrecompileErrorOrRevert::new_reverted_with_penalty(
    *gas_counter,
    PRECOMPILE_EARLY_REVERT_GAS_PENALTY, // 200
    ERR_DELEGATE_CALL_NOT_ALLOWED,
)

This aligns delegatecall rejections with the Zero6 precedent applied to unauthorized caller, blocklist, zero-address, zero-amount, and overflow reverts — all of which already charge the 200-gas penalty. Zero8 closes the last precompile rejection category that was still getting a free revert.

Testnet activation: zero_8_time is added as Option<u64> to ArcGenesisInfo but is not set in the testnet hardfork schedule in this PR. Testnet activation timestamp is deferred — a separate genesis config update will be needed. Localdev activates Zero8 at timestamp 0.

DApp builder impact: Any contract that uses delegatecall targeting an Arc precompile address in a way that gets rejected should expect 200 gas charged on reversion after Zero8 activates. Contracts that never delegatecall to precompile addresses are unaffected.


2. App-request processing moved to a dedicated task — StatusSnapshot staleness

The consensus app loop (app.rs) now spawns process_app_requests as a separate tokio::spawn task. The main loop publishes a StatusSnapshot over a watch::channel after each message, and the spawned task reads from that channel to serve /status and /certificate requests without blocking consensus.

This is a clean design. One implementation detail worth noting, documented in state.rs:

The snapshot is eventually consistent with State: it is republished after the consensus loop finishes handling a message, so a reader may observe a snapshot that is up to one consensus-message stale.

The /status handler uses the snapshot's (height, round) to query store.get_undecided_blocks(self.height, self.round). If consensus advances between snapshot publication and the DB query resolving, the (height, round) passed to get_undecided_blocks may be stale — the call could return an empty list even if proposals are pending at the new height. Consumers reading undecided_blocks_count from the response should treat it as an eventually-consistent approximation, not a precise live count.

GetCertificate variant changed from tuple to struct match:

// before
AppRequest::GetCertificate(height, reply) => { ... }
// after
AppRequest::GetCertificate { height, reply, .. } => { ... }

Any external test fixtures or tooling that pattern-matches on AppRequest will need updating.


3. app_request_full_count — the most operationally important new metric

Four new metrics are added. Three are latency histograms. The fourth is the one operators should alert on:

  • arc_malachite_app_app_request_full_count{request=...} — incremented when the app-request channel is full and an incoming request is rejected rather than queued.

A rising value means the spawned task is processing requests slower than they arrive. In practice this surfaces as /status or /certificate calls returning errors intermittently rather than being slow. Recommend alerting at any non-zero rate over a 1-minute window.

One gap: the channel capacity for the app-request queue is not visible in this diff. Knowing that bound would help operators tune the alert threshold and understand at what request rate the counter will start firing.


4. record_missed_rounds log volume under sustained proposer failure

record_missed_rounds (started_round.rs) emits one warn! per skipped round:

warn!(%missed_proposer, %height, %missed_round, "Consensus round missed");
metrics.inc_consensus_round_missed(missed_proposer);

The per-round counter is the right signal for dashboards. The per-round warn! becomes noisy when a proposer is offline for an extended window. At a 1-second block time with a 30-second timeout per round, a single offline validator during one height produces ~30 log lines in rapid succession at the next StartedRound event.

A structured summary log ("height N: rounds A–B skipped, proposer=0x...") alongside the existing per-round lines would reduce noise without losing information, since the counter already provides per-proposer granularity for dashboards.


5. Malachite consensus library rev bump — no changelog visible

All 13 arc-malachitebft-* crates are bumped from 8ee5d998 to 5cd137fb. The crates are pinned to a git commit rather than a semver tag, so no changelog is attached to this PR for what changed in the consensus engine. The only visible API surface change driven by this bump is the GetCertificate variant restructuring from tuple to struct form.

It would be useful to include a one-line note in the PR body or a linked commit range for 8ee5d998 → 5cd137fb, especially since this is a patch release where unexpected consensus behavior changes would be high-severity.

@ZhiyuCircle
ZhiyuCircle merged commit 79b6fdd into release/0.7 Jul 20, 2026
7 checks passed
@ZhiyuCircle
ZhiyuCircle deleted the sync/v0_7_3 branch July 20, 2026 15:26
@ZhiyuCircle ZhiyuCircle added the release Marks Copybara release PRs for public release finalization label Jul 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Marks Copybara release PRs for public release finalization

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants