Skip to content

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

Latest

Choose a tag to compare

@scx1332 scx1332 released this 04 Sep 17:46
· 0 commits to main since this release
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