Pre-mainnet research network No public testnet yet Protocol manifest r28 Shielded transfers experimental Current status
Implemented

Execution, fees and the EVM

Every block is executed in full by every validator. Transactions use one format from genesis, Transaction V2. Fees follow an EIP-1559-style base fee that is burned. The EVM follows Shanghai semantics, and every known difference from go-ethereum is written down and pinned by a test.

§1Transaction V2#

V2 separates the signed intent, which says what to do with which nonce, fee caps and optional sponsor, from the authorization envelope, which says who authorizes it (DIRECT, ROOT or SESSION) and carries the witnesses. Signatures bind the chain and the genesis, so a transaction cannot be replayed on another network. Transparent transactions have no other format and no legacy decoder; shielded transactions use their own native envelope.

Native actions include transfer, contract call and creation, stake, unstake, delegate, claim rewards, share transfer, name operations, and the authorization and recovery controls described on Accounts.

§2Two kinds of failure#

SituationResult
Malformed, unauthorized, or over a consensus limitThe transaction is invalid, and a block that contains it is rejected.
Valid and authorized, but the action fails (revert, out of gas)Included with a failed receipt. Nonce and fees are consumed; the action's effects are rolled back, including authorization and shielded records.

A proposer skips a candidate that does not fit the current block's budget without evicting it from the pool.

§3Fee market#

effective price = min(max fee, base fee + priority fee cap)
actual fee      = effective price × gas used
burned          = base fee × gas used
proposer tip    = actual fee − burned
ParameterValue
Block gas limit30,000,000
Target utilizationhalf the gas limit
Largest base-fee change per block1/8
Initial base fee in the reference code109 base units per gas (internal/state/basefee.go)
Unit1 RSC = 1018 base units

The sender reserves max fee × gas limit before execution, and settlement charges actual use. Shielded transactions declare a flat fee that is converted to base units, checked against a fixed gas charge, and split into burn and tip the same way. In the EVM, BASEFEE returns the header base fee and GASPRICE the effective price. The eth_gasPrice, eth_maxPriorityFeePerGas and eth_feeHistory methods report this market; it does not imply Ethereum transaction-wire compatibility.

§4EVM compatibility#

The interpreter targets the Shanghai rule set. It is tested against go-ethereum on seeded random programs, on stateful random programs, and on the Ethereum state-test corpus. The harness fails on any divergence that is not recorded as a design deviation or a filed bug. Some state-test residue is still being classified.

DeviationWhat differsWhy
Precompile subsetOnly 0x01–0x04 from Ethereum: ECRecover, SHA-256, RIPEMD-160, identity. No modexp, BN254 pairing or BLAKE2.A smaller surface to review; native features replace common uses
ECRecover price9,000 gas instead of 3,000Pure-Go recovery measured at about 184 µs; at 3,000 gas a block of recoveries would take about 1.8 s of a 2 s slot
SELFDESTRUCTSweeps the balance to the beneficiary; never deletes code, storage, nonce or account, even in the creating transactionOne canonical rule and no deletion primitive in state
Native precompiles0x100–0x104 are specific to this chainP-256 verification, names, staking reads
Top-level creation addressDerived from the authorization mode, credential, authorization epoch and nonce, not from the account's creator nonceThe V2 authorization model
Porting note

Contracts that verify Groth16 or PLONK proofs with BN254 pairings, that use modexp, or that rely on metamorphic SELFDESTRUCT patterns will not behave as on Ethereum. Gas estimates for ecrecover are three times Ethereum's.

§5Precompiles#

AddressNameGasNotes
0x01ECRecover9,000Output identical to go-ethereum
0x02SHA-256Ethereum
0x03RIPEMD-160Ethereum
0x04IdentityEthereum
0x100P256VERIFY6,900EIP-7951 interface; 160-byte input; charged on failure too
0x101Name resolvestatefulActive when names are enabled
0x102Name reversestatefulActive when names are enabled
0x103Name ownerstatefulActive when names are enabled
0x104Stake vault3,000Read-only: balanceOf, totalSupply, totalAssets, convertToAssets, convertToShares, exchangeRate

§6Limits and gas details#

  • Runtime code up to 24,576 bytes; EIP-3860 init-code metering and cap; code deposit 200 gas per byte.
  • Call depth of 1,025 nested frames: entry at depth 1024 is allowed, entry past it fails.
  • SSTORE net metering with EIP-3529 refunds and EIP-2929 access costs. The transaction beneficiary is warm from the start.
  • The full unused CALL stipend is returned to the caller.
  • Runtime code that starts with 0xEF is rejected at deployment.
  • Worst adversarial family: about 0.76 s projected for a 30-million-gas block on the calibration host. See Assurance.

§7State and storage#

State lives in a persistent authenticated trie over BadgerDB. Account and storage changes are journaled, and a revert restores everything, including authorization and shielded records. A block and its state commit in one atomic batch: if the disk is full, the whole commit fails without moving the head, and the node reopens cleanly once space returns.

When shielded transfers are active, their state is part of the effective state root. A snapshot file carries no trust by itself; bootstrapping from one requires certification against a live peer's header.

Sources: internal/state/transition_v2.go, internal/state/basefee.go, internal/vm/evm.go, internal/vm/gas.go, internal/vm/precompiles.go; EVM differential specification; decision records on ECRecover and SELFDESTRUCT.

Cite this page
@misc{resilience-protocol-execution,
  title  = {{Execution, fees and the EVM}},
  author = {{Resilience Network}},
  year   = {2026},
  note   = {Reference implementation c3acec4, protocol manifest r28},
  url    = {https://resiliencenetwork.xyz/protocol/execution/}
}