|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to arc-node are documented in this file. |
| 4 | + |
| 5 | +## [v0.7.1] |
| 6 | + |
| 7 | +**Changes:** [v0.7.0...v0.7.1](https://github.com/circlefin/arc-node/compare/v0.7.0...v0.7.1) -- [release notes](https://github.com/circlefin/arc-node/releases/tag/v0.7.1) |
| 8 | + |
| 9 | +*Note: testnet node operators must use v0.7.1 before timestamp `1779894517` (2026-05-27 15:08:37 UTC), when Zero5/Zero6 activate on testnet. Earlier versions are not supported.* |
| 10 | + |
| 11 | +### For Node Operators |
| 12 | + |
| 13 | +- **[Config] EL RPC connection defaults tightened.** `--rpc.max-connections` default lowered from `500` to `250`; `--rpc.max-subscriptions-per-connection` default lowered from `1024` to `32`. Operators running tooling that opens many concurrent WebSocket connections, or that subscribes more than 32 times on a single connection, must raise these explicitly on the `arc-node-execution` command line. See [BREAKING_CHANGES.md](./BREAKING_CHANGES.md#v071) for migration details. |
| 14 | + |
| 15 | +### Features |
| 16 | + |
| 17 | +- [Shared] Enable global keccak cache and asm-backed keccak |
| 18 | +- [Spammer] Expose per-run telemetry from the spammer |
| 19 | + |
| 20 | +### Fixes |
| 21 | + |
| 22 | +- [EL] Avoid double-hashing initCode on CREATE2 with non-zero value |
| 23 | +- [EL] Activate testnet Zero5/Zero6 by timestamp instead of block height to preserve fork-id compatibility across mixed-version peers |
| 24 | + |
| 25 | +## [v0.7.0] |
| 26 | + |
| 27 | +**Changes:** [v0.6.0...v0.7.0](https://github.com/circlefin/arc-node/compare/v0.6.0...v0.7.0) -- [release notes](https://github.com/circlefin/arc-node/releases/tag/v0.7.0) |
| 28 | + |
| 29 | +### For Node Operators |
| 30 | + |
| 31 | +*Note: mainnet node operators must use v0.7.0. Earlier versions are not supported.* |
| 32 | + |
| 33 | +- **[Config] Pending transactions are hidden from RPC by default.** Renamed `--arc.hide-pending-txs` (opt-in to hide) to `--arc.expose-pending-txs` (opt-in to expose) and flipped the default. Added `--public-api`, a convenience flag for externally-exposed nodes that forces hiding and warns if `--http.api` / `--ws.api` expose namespaces outside `{eth, net, web3, rpc}`. |
| 34 | +- **[Config] CL default log level changed from `debug` to `info`.** Pass `--log-level debug` explicitly if your monitoring depends on debug-level output. |
| 35 | +- **[Config] `--follow` no longer requires `--follow.endpoint` for standard chains.** The CL resolves a default RPC endpoint from the chain id at startup; run `arc-node-consensus start --help` for the per-chain defaults. Explicit `--follow.endpoint` still takes precedence. |
| 36 | +- **[CLI] New `--txpool.rebroadcast-interval` flag (EL).** Periodic re-announcement of pending transactions to peers (default `60` seconds, `0` to disable). Recovers from missed gossip announcements. |
| 37 | +- **[CLI] New `--pprof.heap-prof` flag (EL and CL).** Enables jemalloc heap profiling on demand when built with `--features pprof`. Heap profiling is now inactive by default. |
| 38 | +- **[Config] `--execution-persistence-backpressure-threshold` must be greater than zero** and triggers when the gap *reaches* the threshold (previously *exceeds*). Default is `16` and is unchanged; operators who never set this flag explicitly are unaffected. See [BREAKING_CHANGES.md](./BREAKING_CHANGES.md#v070) for migration details. |
| 39 | +- **[API] New `/ready` readiness probe** and `sync_state` field on the CL `/status` endpoint. |
| 40 | +- **[CLI] New `arc-node-consensus db rollback` command** (alias: `unwind`) for operator-driven rollback. Dry-run by default; pass `--execute` to commit. `--num-heights` and `--to-height` are mutually exclusive. |
| 41 | +- **[Config] Arc mainnet is a named chainspec** (`--chain arc-mainnet`, chain id `5042`). |
| 42 | + |
| 43 | +### For Validators |
| 44 | + |
| 45 | +- **[CLI] `--validator` flag is required** for a CL to participate in block signing and voting. Without it, the node runs as a non-voting full node. This flag did not exist in `v0.6.0`. See [BREAKING_CHANGES.md](./BREAKING_CHANGES.md#v070). |
| 46 | +- **[CLI] `--suggested-fee-recipient` is required when `--validator` is set.** It is required that this address be set / non-zero. |
| 47 | + |
| 48 | + ``` |
| 49 | + arc-node-consensus start \ |
| 50 | + --validator \ |
| 51 | + --suggested-fee-recipient 0xYOUR_ADDRESS \ |
| 52 | + ... |
| 53 | + ``` |
| 54 | + |
| 55 | +- **[Format] Equivocation evidence log levels raised**: persistence failures promoted from `warn` to `error`, successful persistence from `info` to `warn`. Both include validator addresses for forensics. |
| 56 | +- **[API] Validator public key exposed in the CL `/status` endpoint.** |
| 57 | +- **[Format] Address and public-key rendering uniformly switched to `0x`-prefixed lowercase hex.** Logs, metrics, and JSON-RPC responses use this single canonical format (signatures continue to use Base64). Tooling that parsed EIP-55 checksummed addresses or non-prefixed hex must be updated. |
| 58 | + |
| 59 | +### Features |
| 60 | + |
| 61 | +- [CL] Add `--validator` configuration flag |
| 62 | +- [CL] Require `--suggested-fee-recipient` when `--validator` is set |
| 63 | +- [CL] Resolve default follow endpoint from chain id |
| 64 | +- [CL] Add `/ready` readiness probe and `sync_state` to `/status` |
| 65 | +- [CL] Add `db rollback` command (alias: `unwind`) for operator-driven rollback |
| 66 | +- [CL] Raise equivocation evidence log levels |
| 67 | +- [CL] Add versioned wire encoding for consensus network messages |
| 68 | +- [CL] Harden validator-set decoding against malformed public keys |
| 69 | +- [CL] Count and log invalid payloads across all storage paths |
| 70 | +- [CL] Model consensus fork history; narrow `ForkCondition` to height-only |
| 71 | +- [CL] Use Arc-branded libp2p protocol names on mainnet; see [BREAKING_CHANGES.md](./BREAKING_CHANGES.md#v070) for cross-version peering implications |
| 72 | +- [CL] Detect EL crashes over IPC and log a diagnostic instead of silently stalling |
| 73 | +- [EL] Implement **Zero7** hardfork: `CallFrom` subcall precompile, `Multicall3From`, `Memo` |
| 74 | +- [EL] Apply EIP-2929 warm/cold pricing to precompile account loads; see [BREAKING_CHANGES.md](./BREAKING_CHANGES.md#v070) for the gas-estimation impact |
| 75 | +- [EL] Add periodic transaction rebroadcast to recover from missed gossip |
| 76 | +- [EL] Unconditionally use validator-provided beneficiary addresses |
| 77 | +- [EL] Apply `0xef` non-deployable prefix (EIP-3541) to Arc precompile addresses in genesis, preventing EOAs or contracts from being deployed at those addresses |
| 78 | +- [EL] EEST fixture runner for EVM spec test validation |
| 79 | +- [EL] Register `arc-mainnet` as a named chainspec (Zero3-Zero6 active at block `0`) |
| 80 | +- [EL] Finalize mainnet genesis with USDC admin roles, denylist, prefunded ops wallet |
| 81 | +- [Shared] Add `--pprof.heap-prof` flag for on-demand heap profiling |
| 82 | +- [Shared] Uniformize address and key rendering to `0x`-prefixed lowercase hex |
| 83 | +- [Contracts] ProtocolConfig upgrade scripts; remove `rewardBeneficiary` field (proposer-provided fee recipient is authoritative) |
| 84 | +- [Contracts] Deploy denylist contract on testnet (mainnet ships it pre-deployed in genesis) |
| 85 | +- [Quake] Testnet orchestrator improvements: web topology viewer, node-group support in `load` / `spam`, mesh/health/performance/sanity test runner with report generation, manifest fields for EL/CL CPU and memory limits and `block_gas_limit` |
| 86 | +- [Bench] `arc-engine-bench` with IPC and RPC engine transports |
| 87 | +- [Bench] Nightly engine bench workflow |
| 88 | +- [Spammer] Cache gas estimates for ERC-20 and Guzzler transactions |
| 89 | +- [Spammer] Reuse with parallel nonce resync and reduced request timeout |
| 90 | +- [Spammer] Improved send-stall visibility |
| 91 | + |
| 92 | +### Fixes |
| 93 | + |
| 94 | +- [CL] Prevent stream eviction by colluding validators |
| 95 | +- [CL] Propagate `pol_round` as `valid_round` in assembled blocks |
| 96 | +- [CL] On restream, look up block by hash and preserve `round` / `valid_round` |
| 97 | +- [CL] Fetch validator set at `certificate_height - 1` in `get_certificate_info` |
| 98 | +- [CL] Align `RemoteSigningProvider` Ed25519 verification with Malachite |
| 99 | +- [CL] Bound repeated proto fields to prevent unbounded allocation |
| 100 | +- [CL] Use checked arithmetic in `total_voting_power()` |
| 101 | +- [CL] Account for EL earliest block in `GetHistoryMinHeight` |
| 102 | +- [CL] Skip persistence wait during sync when block is already present or height decided |
| 103 | +- [CL] Acknowledge `AppMsg::Decided` so sync advertises a new tip |
| 104 | +- [CL] Mark undecided block `Invalid` on engine validation errors; persist verdict |
| 105 | +- [CL] Surface duplicate Init/Fin proposal parts as `InsertResult::Invalid` |
| 106 | +- [CL] Improve EL/CL height-mismatch error with actionable guidance |
| 107 | +- [CL] Update backpressure semantics |
| 108 | +- [EL] Suppress pool-based pending-tx leaks in RPC middleware |
| 109 | +- [EL] Charge EIP-2929 cold account access cost in `CallFrom` subcalls |
| 110 | +- [EL] Blocklist SLOADs are unmetered on native value transfers |
| 111 | +- [EL] Consume all gas for subcall in static context |
| 112 | +- [EL] Charge gas for subcall completion phase |
| 113 | +- [EL] Strictly decode ABI parameters in precompiles |
| 114 | +- [EL] Implement EIP-2200 sentry for `SSTORE` |
| 115 | +- [EL] Apply new-account surcharge via precompiles |
| 116 | +- [EL] Extend early-revert penalty to auth reverts in Zero6 |
| 117 | +- [EL] Drop redundant `SLOAD` charge in `storeGasValuesCall` under Zero6 |
| 118 | +- [EL] Align `totalSupply` input validation with other precompiles |
| 119 | +- [EL] Revert child state when subcall precompile rejects |
| 120 | +- [EL] Resolve EIP-7702 delegation when loading subcall target bytecode |
| 121 | +- [EL] Check EIP-7702 authorization-list authorities against the denylist |
| 122 | +- [EL] `DenylistedAddressError` should not penalize peers |
| 123 | +- [EL] Include base fee in payload builder fee totals |
| 124 | +- [EL] Use checked arithmetic for cumulative gas accounting in payload builder |
| 125 | +- [EL] Panic on missing subcall continuation instead of reverting |
| 126 | +- [Shared] Remediate cargo audit advisories |
| 127 | +- [Contracts] Capture `Multicall3From` precompile reverts instead of propagating |
| 128 | +- [Quake] Validate manifest flags against consensus binary CLI struct; decouple monitoring lifecycle from `clean` and `restart` |
| 129 | +- [Spammer] Lift gas-fee caps above testnet base-fee ceiling |
| 130 | +- [Spammer] Fix raw tx encoding, TCP backpressure drain, zero-latency warning |
| 131 | + |
| 132 | +### Docs |
| 133 | + |
| 134 | +Full documentation tree at this release: [`arc-node` v0.7.0 docs](https://github.com/circlefin/arc-node/tree/v0.7.0/docs). New or updated topics in this release: |
| 135 | + |
| 136 | +- Add Docker instructions for running an Arc node |
| 137 | +- Add single-host monitoring guide for Arc EL + CL |
| 138 | + |
| 139 | +## [v0.6.0] |
| 140 | + |
| 141 | +**Released:** 2026-04-08 -- [release notes](https://github.com/circlefin/arc-node/releases/tag/v0.6.0) |
| 142 | + |
| 143 | +Initial public open-source release of `arc-node`. Baseline for subsequent changelog entries. |
0 commit comments