Repository navigation
Releases: Arkiv-Network/arkiv
Release list
v0.2.1 — expired-entity purge + persisted chain pruning map
Consensus-breaking against v0.2.0
Blocks now carry a protocol-generated purgeExpired(bytes32[]) transaction, which a v0.2.0 node rejects. Chains must be started fresh.
New in this release
- feat(reth): purge expired entities during block creation (#86) — a protocol-only
purgeExpired(bytes32[])call physically removes logically expired entities. The executor admits it only under an exact envelope (fixed protocol caller, nonce == block number, 1M gas limit,maxFeePerGas = u128::MAX, zero value, empty access/blob/authorization lists); a user transaction carrying the selector is rejected. Metered aspurge_cost = G_DELETE + attributes × G_ATTRIBUTE, capped at 10 keys per block. - feat(payload): persist chain pruning map (#93) — new
arkiv-reth-payload-buildercrate replacing the stock Ethereum payload builder. It keeps a durable expiry-candidate index (arkiv-pruning.dbin the datadir), advances it off the canonical-state stream, and prepends the signed purge transaction when building a payload. arkiv_debugEntityExists— a read that deliberately bypasses the logical expiry filter, at the tip or at a past block, so tests can tell "logically expired" from "physically gone".- docs: address review comments on the chain spec (#101)
- chore(release): bump workspace version to 0.2.1 (#110) —
mainstill carried0.1.0; the 0.2.0 bump lived only on the tagged lineage.
Carried over from v0.2.0
Content-identical, rebased onto main:
- feat(chainspec): floor the base fee at the genesis base fee (#94)
- fix(executor): settle fees as EIP-1559 — effective price, tip to beneficiary (#95)
- fix(executor): skip the gas balance bound when fee charging is disabled (#107)
Full changelog: v0.2.0...v0.2.1
v0.2.0 — main on reth 2.5 + base-fee floor and EIP-1559 fee settlement
v0.2.0 is the tip of main as of today (3378e0e, on reth v2.5.0) plus the three fee-related fixes that are still open as stacked PRs, and a workspace version bump.
It exists so tiramisu can be redeployed on the current codebase without waiting for those PRs to merge.
What's in it
Everything on main today — most notably the reth v2.2.0 → v2.5.0 upgrade (#78), the StateManager abstraction (#85), and the protocol-constants / arkiv_* RPC reorganisation (#79) — and on top of that:
- #94 —
feat(chainspec): floor the base fee at the genesis base fee
Newarkiv-reth-chainspeccrate:ArkivChainSpecoverridesEthChainSpec::next_block_base_feewithmax(eip1559(parent), genesis.baseFeePerGas). Every base-fee consumer in reth (payload builder, consensus validation, tx pool,eth_gasPrice/eth_feeHistory) goes through that one method, so the floor applies everywhere by construction. Without it an idle chain decays 12.5% per empty block down to the 7 wei protocol minimum. - #95 —
fix(executor): settle fees as EIP-1559 — effective price, tip to beneficiary
The no-EVM executor now charges the effective gas price and pays the priority tip to the block beneficiary, instead of burning the whole fee. - #98 —
fix(executor): skip the gas balance bound when fee charging is disabled
With fee charging off, the executor no longer bounds execution by the sender's gas balance.
Plus chore(release): workspace version 0.1.0 → 0.2.0.
⚠️ Consensus-breaking against v0.1.0
Both the base-fee floor and the fee-settlement change alter block validity. A v0.1.0 node rejects blocks produced under these rules, and vice versa. So:
- every producer and watcher of a network must be upgraded together, and
- existing chains cannot be continued across the upgrade — they have to be started fresh.
Images
ghcr.io/arkiv-network/arkiv-reth:v0.2.0
ghcr.io/arkiv-network/arkiv-reth-dev:v0.2.0
(linux/amd64 + linux/arm64)
Full changelog: v0.1.0...v0.2.0