Skip to content

Releases: Arkiv-Network/arkiv

v0.2.1 — expired-entity purge + persisted chain pruning map

Choose a tag to compare

@scx1332 scx1332 released this 04 Sep 17:46
0fd58ce

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 as purge_cost = G_DELETE + attributes × G_ATTRIBUTE, capped at 10 keys per block.
  • feat(payload): persist chain pruning map (#93) — new arkiv-reth-payload-builder crate replacing the stock Ethereum payload builder. It keeps a durable expiry-candidate index (arkiv-pruning.db in 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) — main still carried 0.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

Choose a tag to compare

@scx1332 scx1332 released this 03 Sep 09:15

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
    New arkiv-reth-chainspec crate: ArkivChainSpec overrides EthChainSpec::next_block_base_fee with max(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