All notable changes to arc-node are documented in this file.
Changes: v0.7.2...v0.7.3 -- release notes
- [CL] Add consensus and RPC Prometheus metrics on the
/metricsendpoint:arc_malachite_app_consensus_round_missed(counter, labeled by the missed round's proposer),arc_malachite_app_rpc_request_time, and app-request channel queue-time, process-time, and full-channel-rejection metrics - [EL] Add the Zero8 hardfork (dormant). Once active on a chain, a rejected delegatecall into a stateful Arc precompile is charged the uniform 200-gas early-revert penalty, matching the penalty already applied to other precompile authorization and validation reverts. Zero8 is not scheduled on any public chain
- [EL]
arc_getCertificatenow accepts a hex-encoded quantity string (e.g."0x7") for the block-height parameter in addition to a plain decimal number, aligning with the EVM hex-quantity convention used byeth_getBlockByNumber
- [EL] Complete the pending-block RPC filter so permissionless callers can no longer read the proposed pre-finalization block through case-variant
pendingtags, previously-uncovered block-content methods, or object-style block parameters - [Shared] Remediate cargo audit advisories via dependency bumps
Full documentation tree at this release: arc-node v0.7.3 docs. New or updated topics in this release:
- Revise the base-fee validation ADR to match the implemented code: rename
elasticity_multipliertoinverse_elasticity_multiplier, drop the unimplemented proportional check, and clarify thek_ratedescription
Changes: v0.7.1...v0.7.2 -- release notes
Note: testnet node operators must use v0.7.2 before timestamp 1781791200 (2026-06-18 14:00:00 UTC), when Zero7 activates on testnet. Earlier versions are not supported.
- [Config] EL JSON-RPC gas cap default lowered to 30M.
--rpc.gascapnow defaults to30000000(previously50000000).eth_callandeth_estimateGasrequests that need more than 30M gas now fail unless the cap is raised. Operators who never set--rpc.gascapand do not rely on calls above 30M gas are unaffected; pass--rpc.gascap <N>to restore a larger budget. See BREAKING_CHANGES.md for migration details. - [CLI] Replay-unprotected (pre-EIP-155) transactions are rejected over JSON-RPC by default. The new
--arc.rpc.allow-unprotected-txsflag defaults tofalse; raw transaction submission returns "only replay-protected (EIP-155) transactions allowed over RPC", matching Geth. Operators that must accept legacy unprotected transactions over RPC pass--arc.rpc.allow-unprotected-txs. See BREAKING_CHANGES.md for migration details. - [Config] JSON-RPC batch requests are capped at 100 entries by default. The new
--arc.rpc.max-batch-entriesflag defaults to100; batches with more entries are rejected with JSON-RPC error-32600before any per-entry handler runs, and0is rejected so the cap cannot be silently disabled. Operators whose tooling sends larger batches raise--arc.rpc.max-batch-entries <COUNT>. See BREAKING_CHANGES.md for migration details. - [Config] The invalid-transaction list is enabled by default.
--invalid-tx-list-enablenow defaults totrue(previouslyfalse). On a payload-builder panic, all pending transactions are added to the list and removed from the mempool; resubmit them after investigating. Opt out with--invalid-tx-list-enable=false. See BREAKING_CHANGES.md for migration details.
- [CL] Stop stale proposal streams from blocking live proposals
- [EL] Preserve cold account state when evaluating the SELFDESTRUCT beneficiary check
- [EL] Charge gas before performing storage I/O in precompile helpers
- [EL] Fail closed in the SELFDESTRUCT handler when a blocklist read fails
Full documentation tree at this release: arc-node v0.7.2 docs. New or updated topics in this release:
- Add an RPC provider node section to the public node-operation guide
Changes: v0.7.0...v0.7.1 -- release notes
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.
- [Config] EL RPC connection defaults tightened.
--rpc.max-connectionsdefault lowered from500to250;--rpc.max-subscriptions-per-connectiondefault lowered from1024to32. 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 thearc-node-executioncommand line. See BREAKING_CHANGES.md for migration details.
- [Shared] Enable global keccak cache and asm-backed keccak
- [Spammer] Expose per-run telemetry from the spammer
- [EL] Avoid double-hashing initCode on CREATE2 with non-zero value
- [EL] Activate testnet Zero5/Zero6 by timestamp instead of block height to preserve fork-id compatibility across mixed-version peers
Changes: v0.6.0...v0.7.0 -- release notes
Note: mainnet node operators must use v0.7.0. Earlier versions are not supported.
- [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.apiexpose namespaces outside{eth, net, web3, rpc}. - [Config] CL default log level changed from
debugtoinfo. Pass--log-level debugexplicitly if your monitoring depends on debug-level output. - [Config]
--followno longer requires--follow.endpointfor standard chains. The CL resolves a default RPC endpoint from the chain id at startup; runarc-node-consensus start --helpfor the per-chain defaults. Explicit--follow.endpointstill takes precedence. - [CLI] New
--txpool.rebroadcast-intervalflag (EL). Periodic re-announcement of pending transactions to peers (default60seconds,0to disable). Recovers from missed gossip announcements. - [CLI] New
--pprof.heap-profflag (EL and CL). Enables jemalloc heap profiling on demand when built with--features pprof. Heap profiling is now inactive by default. - [Config]
--execution-persistence-backpressure-thresholdmust be greater than zero and triggers when the gap reaches the threshold (previously exceeds). Default is16and is unchanged; operators who never set this flag explicitly are unaffected. See BREAKING_CHANGES.md for migration details. - [API] New
/readyreadiness probe andsync_statefield on the CL/statusendpoint. - [CLI] New
arc-node-consensus db rollbackcommand (alias:unwind) for operator-driven rollback. Dry-run by default; pass--executeto commit.--num-heightsand--to-heightare mutually exclusive. - [Config] Arc mainnet is a named chainspec (
--chain arc-mainnet, chain id5042).
-
[CLI]
--validatorflag 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 inv0.6.0. See BREAKING_CHANGES.md. -
[CLI]
--suggested-fee-recipientis required when--validatoris set. It is required that this address be set / non-zero.arc-node-consensus start \ --validator \ --suggested-fee-recipient 0xYOUR_ADDRESS \ ... -
[Format] Equivocation evidence log levels raised: persistence failures promoted from
warntoerror, successful persistence frominfotowarn. Both include validator addresses for forensics. -
[API] Validator public key exposed in the CL
/statusendpoint. -
[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.
- [CL] Add
--validatorconfiguration flag - [CL] Require
--suggested-fee-recipientwhen--validatoris set - [CL] Resolve default follow endpoint from chain id
- [CL] Add
/readyreadiness probe andsync_stateto/status - [CL] Add
db rollbackcommand (alias:unwind) for operator-driven rollback - [CL] Raise equivocation evidence log levels
- [CL] Add versioned wire encoding for consensus network messages
- [CL] Harden validator-set decoding against malformed public keys
- [CL] Count and log invalid payloads across all storage paths
- [CL] Model consensus fork history; narrow
ForkConditionto height-only - [CL] Use Arc-branded libp2p protocol names on mainnet; see BREAKING_CHANGES.md for cross-version peering implications
- [CL] Detect EL crashes over IPC and log a diagnostic instead of silently stalling
- [EL] Implement Zero7 hardfork:
CallFromsubcall precompile,Multicall3From,Memo - [EL] Apply EIP-2929 warm/cold pricing to precompile account loads; see BREAKING_CHANGES.md for the gas-estimation impact
- [EL] Add periodic transaction rebroadcast to recover from missed gossip
- [EL] Unconditionally use validator-provided beneficiary addresses
- [EL] Apply
0xefnon-deployable prefix (EIP-3541) to Arc precompile addresses in genesis, preventing EOAs or contracts from being deployed at those addresses - [EL] EEST fixture runner for EVM spec test validation
- [EL] Register
arc-mainnetas a named chainspec (Zero3-Zero6 active at block0) - [EL] Finalize mainnet genesis with USDC admin roles, denylist, prefunded ops wallet
- [Shared] Add
--pprof.heap-profflag for on-demand heap profiling - [Shared] Uniformize address and key rendering to
0x-prefixed lowercase hex - [Contracts] ProtocolConfig upgrade scripts; remove
rewardBeneficiaryfield (proposer-provided fee recipient is authoritative) - [Contracts] Deploy denylist contract on testnet (mainnet ships it pre-deployed in genesis)
- [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 andblock_gas_limit - [Bench]
arc-engine-benchwith IPC and RPC engine transports - [Bench] Nightly engine bench workflow
- [Spammer] Cache gas estimates for ERC-20 and Guzzler transactions
- [Spammer] Reuse with parallel nonce resync and reduced request timeout
- [Spammer] Improved send-stall visibility
- [CL] Prevent stream eviction by colluding validators
- [CL] Propagate
pol_roundasvalid_roundin assembled blocks - [CL] On restream, look up block by hash and preserve
round/valid_round - [CL] Fetch validator set at
certificate_height - 1inget_certificate_info - [CL] Align
RemoteSigningProviderEd25519 verification with Malachite - [CL] Bound repeated proto fields to prevent unbounded allocation
- [CL] Use checked arithmetic in
total_voting_power() - [CL] Account for EL earliest block in
GetHistoryMinHeight - [CL] Skip persistence wait during sync when block is already present or height decided
- [CL] Acknowledge
AppMsg::Decidedso sync advertises a new tip - [CL] Mark undecided block
Invalidon engine validation errors; persist verdict - [CL] Surface duplicate Init/Fin proposal parts as
InsertResult::Invalid - [CL] Improve EL/CL height-mismatch error with actionable guidance
- [CL] Update backpressure semantics
- [EL] Suppress pool-based pending-tx leaks in RPC middleware
- [EL] Charge EIP-2929 cold account access cost in
CallFromsubcalls - [EL] Blocklist SLOADs are unmetered on native value transfers
- [EL] Consume all gas for subcall in static context
- [EL] Charge gas for subcall completion phase
- [EL] Strictly decode ABI parameters in precompiles
- [EL] Implement EIP-2200 sentry for
SSTORE - [EL] Apply new-account surcharge via precompiles
- [EL] Extend early-revert penalty to auth reverts in Zero6
- [EL] Drop redundant
SLOADcharge instoreGasValuesCallunder Zero6 - [EL] Align
totalSupplyinput validation with other precompiles - [EL] Revert child state when subcall precompile rejects
- [EL] Resolve EIP-7702 delegation when loading subcall target bytecode
- [EL] Check EIP-7702 authorization-list authorities against the denylist
- [EL]
DenylistedAddressErrorshould not penalize peers - [EL] Include base fee in payload builder fee totals
- [EL] Use checked arithmetic for cumulative gas accounting in payload builder
- [EL] Panic on missing subcall continuation instead of reverting
- [Shared] Remediate cargo audit advisories
- [Contracts] Capture
Multicall3Fromprecompile reverts instead of propagating - [Quake] Validate manifest flags against consensus binary CLI struct; decouple monitoring lifecycle from
cleanandrestart - [Spammer] Lift gas-fee caps above testnet base-fee ceiling
- [Spammer] Fix raw tx encoding, TCP backpressure drain, zero-latency warning
Full documentation tree at this release: arc-node v0.7.0 docs. New or updated topics in this release:
- Add Docker instructions for running an Arc node
- Add single-host monitoring guide for Arc EL + CL
Released: 2026-04-08 -- release notes
Initial public open-source release of arc-node. Baseline for subsequent changelog entries.