Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions BREAKING_CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@ Compare and release-notes links resolve once the corresponding tag is published
### For Node Operators

- **[Format] JSON-RPC error text on insufficient-balance `eth_call` / `eth_estimateGas` changed with the reth 2.2 / revm 38 upgrade.**
- Value exceeds balance: the error previously read `insufficient funds for gas * price + value`; it now reflects revm 38's `OutOfFunds` variant.
- Simple (EOA-to-EOA) transfer with insufficient balance: reth 2.2 runs these RPC paths with `disable_fee_charge`, so the basic-transfer shortcut no longer applies the caller gas-allowance cap. The surfaced error shifted from `Missing or invalid parameters` to `gas required exceeds allowance`.
- Value exceeds balance: the surfaced text depends on the request shape. Requests that omit gas-price/fee fields reflect revm 38's `OutOfFunds` variant (`EVM error: OutOfFunds`); requests that set `gasPrice` or `maxFeePerGas` still fail the pre-execution balance check with the previous `insufficient funds for gas * price + value: have <have> want <want>` text. Client libraries such as ethers and viem populate fee fields automatically, so tooling must keep matching both strings.
- Calls whose sender balance cannot cover gas (contract or precompile targets): the surfaced error shifted from `Missing or invalid parameters` to `gas required exceeds allowance (<limit>)`. Because reth 2.2 runs these RPC paths with `disable_fee_charge`, the basic-transfer shortcut bypasses the caller gas-allowance cap entirely: a plain EOA-to-EOA transfer whose balance covers `value` now estimates successfully regardless of gas affordability.
- `gas required exceeds allowance (<limit>)` is the same string emitted when a request is clamped by `--rpc.gascap`; only `<limit>` distinguishes the sender's balance-derived allowance from the configured cap.
- Neither string is a stable API contract, but tooling that matches JSON-RPC error text on these paths must update its patterns. No consensus-affecting behavior changed; only the RPC error surface.
- **[CLI] `arc-node-consensus` admin RPC routes are disabled by default.**
- The unauthenticated `POST` and `DELETE /persistent-peers` routes are no longer mounted unless `--rpc.admin` is provided.
Expand Down
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ All notable changes to arc-node are documented in this file.

### For Node Operators

- **[Format] JSON-RPC error text for insufficient-balance `eth_call` and `eth_estimateGas` calls changed with the reth 2.2 / revm 38 upgrade.** Transactions whose value or gas cost exceeds the sender balance now surface revm 38's `OutOfFunds` text (previously `insufficient funds for gas * price + value`); simple EOA-to-EOA transfers with insufficient balance now surface `gas required exceeds allowance` (previously `Missing or invalid parameters`). Tooling that matches on these strings must update its patterns. No consensus-affecting behavior changed; only the RPC error surface. See [BREAKING_CHANGES.md](./BREAKING_CHANGES.md#v080) for migration details.
- **[Format] JSON-RPC error text for insufficient-balance `eth_call` and `eth_estimateGas` calls changed with the reth 2.2 / revm 38 upgrade.** Requests without gas-price/fee fields now surface revm 38's `OutOfFunds` text, while requests that set `gasPrice` or `maxFeePerGas` retain the previous `insufficient funds for gas * price + value` text; calls whose sender balance cannot cover gas surface `gas required exceeds allowance (<limit>)` (previously `Missing or invalid parameters`), the same string emitted when a request is clamped by `--rpc.gascap`. Tooling that matches on these strings must match both balance texts and disambiguate the allowance message by its numeric bound. No consensus-affecting behavior changed; only the RPC error surface. See [BREAKING_CHANGES.md](./BREAKING_CHANGES.md#v080) for migration details.
- **[CLI] `arc-node-consensus` admin RPC routes are disabled by default.** The new `--rpc.admin` flag enables the unauthenticated `POST` and `DELETE /persistent-peers` routes; read-only RPC routes remain available without it. Enable admin routes only on a trusted interface. See [BREAKING_CHANGES.md](./BREAKING_CHANGES.md#v080) for migration details.
- **[Config] Explicit invalid CL environment values now fail startup.** Eleven value-sync, consensus-queue, discovery, and remote-signing tunables can now be overridden through `ARC_*` environment variables. Unset or empty variables retain their defaults; malformed values and zero values for settings that must be positive abort startup. See [BREAKING_CHANGES.md](./BREAKING_CHANGES.md#v080) for migration details.
- **[CLI] Arc denylist checks are mandatory and their contract configuration is chain-derived.** Remove `--arc.denylist.enabled`, `--arc.denylist.address`, and `--arc.denylist.storage-slot`; `--arc.denylist.addresses-exclusions` remains available. See [BREAKING_CHANGES.md](./BREAKING_CHANGES.md#v080) for migration details.
Expand Down