Skip to content

Gas economics

Fidemark inherits its on-chain economics from Ethereum Attestation Service on Base L2. There’s no protocol fee on top: callers pay only the L2 gas required to execute their transaction.

Gas usage is deterministic: independent of the network’s fee level or ETH spot price. Phase-2 implementation, FidemarkResolver with indexed contentHash:

OperationGas
Schema registration (one-time, paid by Fidemark)~250,000
Single Human Proof attestation~380,000
Single AI Proof attestation~370,000
Revocation~85,000
Off-chain attestation (EIP-712 signature)0

Base mainnet base fee fluctuates. Three regimes you’ll see in practice (April 2026 reference):

RegimeEffective gas priceETH per attestation (380k gas)
Off-peak (nights, weekends)~1 Mwei (0.001 GWEI)~3.8 × 10⁻⁷ ETH
Typical~10 Mwei (0.01 GWEI)~3.8 × 10⁻⁶ ETH
Heavy congestion~100 Mwei (0.1 GWEI)~3.8 × 10⁻⁵ ETH
RegimeSingle attestationSchema registrationRevocation
Off-peak~$0.001~$0.0006~$0.0002
Typical~$0.009~$0.006~$0.002
Heavy congestion~$0.09~$0.06~$0.02

USD figures track ETH price linearly. To project at a different price, multiply each USD figure by current ETH price ÷ 2300.

The resolver’s per-attestation gas can likely drop to ~250–280k by:

  • Switching the proofMethod field from string to bytes32 (saves the keccak256 + SLOAD round-trip on the allowlist check. Schema-breaking) would ship as a v2 schema with a new resolver.
  • Trimming a few SLOADs by caching the schema discriminator earlier in onAttest.

Together: ~25–35% gas reduction. Deferred until real-world numbers warrant the migration cost.

  • High-volume pipelines (every model output, every page load): use off-chain attestations: zero gas, brought on-chain only when needed.
  • One-shot certifications (an article, a release artifact, an AI agent’s daily output): on-chain at typical fees is fine: under a cent.
  • Compliance/audit trails: typically off-chain with selective on-chain anchoring, since EU AI Act records don’t need every attestation on a public chain.

The protocol design reflects this: Phase-2 ships both flows from one SDK so callers can pick per use case.