Skip to content

Latest commit

 

History

History
686 lines (654 loc) · 80.2 KB

File metadata and controls

686 lines (654 loc) · 80.2 KB

Tests Inventory

Table of tests currently implemented or being implemented in the E2E repository.

LxLy Tests

Test Name Reference Notes
Initial setup Link
Process bridge scenarios with dynamic network routing and claim deposits in parallel Link
Reclaim test funds Link
bridge L2 ("$NETWORK_TARGET") originated token from L2 to L1 Link
bridge l2 originated token from L2 to L1 and back to L2 Link
bridge native eth from L1 to L2 ("$NETWORK_TARGET") Link
bridge native eth from l1 to l2 Link
cross-chain bridge between different L2 networks (target:"$NETWORK_TARGET") Link

AggLayer Tests

Test Name Reference Notes
Agglayer random cert test Link
Agglayer valid cert fake deposit test Link
Agglayer valid cert test Link
admin_getCertificate returns certificate data for valid certificate ID Link
admin_getCertificate returns error for invalid certificate ID Link
admin_removePendingCertificate with non-existent certificate Link
admin_removePendingProof with invalid certificate ID Link
admin_setLatestPendingCertificate with non-existent certificate Link
admin_setLatestPendingCertificate with valid certificate ID Link
admin_setLatestProvenCertificate with non-existent certificate Link
admin_setLatestProvenCertificate with valid certificate ID Link
aggregator with no funds Link
bridge L2 originated ERC20 from L2 to L1 Link
bridge native ETH from L1 to L2 Link
bridge native ETH from L2 to L1 Link
compare admin and regular API responses for same certificate Link
eth_getTransactionBySenderAndNonce returns a transaction on Reth L1 Link
eth_getTransactionBySenderAndNonce returns null for unused nonce Link
query interop_getCertificateHeader on agglayer RPC returns expected fields Link
query interop_getEpochConfiguration on agglayer RPC returns expected fields Link
query interop_getLatestKnownCertificateHeader on agglayer RPC returns expected fields Link
query interop_getLatestPendingCertificateHeader on agglayer RPC returns expected fields Link
query interop_getLatestSettledCertificateHeader on agglayer RPC returns expected fields Link
query interop_getTxStatus on agglayer RPC for latest settled certificate returns done Link
send 1 tx per block until a new certificate settles Link
send a tx using aggregator private key Link
send many async txs using aggregator private key Link
send many txs using aggregator private key Link
send tx with nonce+1 using aggregator private key Link
send tx with nonce+2 using aggregator private key Link
send txs from nonce+1 to nonce+11 using aggregator private key Link
send txs from nonce+2 to nonce+12 using aggregator private key Link
wait for a new certificate to be settled Link

CDK Erigon Tests

Test Name Reference Notes
RPC and sequencer handle two large transactions Link
counter overflowing transactions do not create new batches Link
send 0xFB opcode to sequencer and ensure failure Link
send CREATE with large size Link
send CREATE2 oom issue Link
send CREATE2 with large size Link
send IDENTITY precompile test Link
send SHA256 counter Link
send executable PUSH operand Link
send exhaustive recursive CREATE transaction Link
send large RETURN Link
send malformed PUSH opcode Link
send recursive CREATE transaction Link

CDK Tests

Test Name Reference Notes
Custom gas token deposit Link
Custom gas token withdrawal Link
Deploy and test UniswapV3 contract Link
Native gas token deposit to WETH - BridgeAsset Link
Native gas token deposit to WETH - BridgeMessage Link
Send EOA transaction Link
Test Allow List - Sending contracts deploy transaction when address is in allow list Link
Test Allow List - Sending contracts deploy transaction when address not in allow list Link
Test Allow List - Sending regular transaction when address is in allow list Link
Test Allow List - Sending regular transaction when address not in allow list Link
Test Block List - Sending contracts deploy transaction when address is in block list Link
Test Block List - Sending contracts deploy transaction when address not in block list Link
Test Block List - Sending regular transaction when address is in block list Link
Test Block List - Sending regular transaction when address not in block list Link
Test ERC20Mock contract Link
Verify batches Link

Pectra Tests

Test Name Reference Notes
EIP-2935: Checking blocks outside historical serve window Link
EIP-2935: Oldest possible historical block hash from state Link
EIP-2935: Random historical block hashes from state Link
EIP-7623: Check gas cost for 0x00 Link
EIP-7623: Check gas cost for 0x000000 Link
EIP-7623: Check gas cost for 0x0001 Link
EIP-7623: Check gas cost for 0x000100 Link
EIP-7623: Check gas cost for 0x00aa00bb00cc00dd00ee00ff00110022003300440055006600770088009900aa00bb00cc00dd00ee00ff00110022003300440055006600770088009900aa00bb00cc00dd00ee00ff001100220033004400550066007700880099 Link
EIP-7623: Check gas cost for 0xffff Link
EIP-7623: Check gas cost for empty calldata Link
EIP-7685: RequestsHash in block header Link
EIP-7691: Max blobs per block Link
EIP-7702 Delegated contract with log event Link
G1ADD test vectors KO Link
G1ADD test vectors OK Link
G1MSM test vectors KO Link
G1MSM test vectors OK (long test) Link
G1MUL test vectors KO Link
G1MUL test vectors OK Link
G2ADD test vectors KO Link
G2ADD test vectors OK Link
G2MSM test vectors KO Link
G2MSM test vectors OK (long test) Link
G2MUL test vectors KO Link
G2MUL test vectors OK Link
MAP_FP2_TO_G2 test vectors KO Link
MAP_FP2_TO_G2 test vectors OK Link
MAP_FP_TO_G1 test vectors KO Link
MAP_FP_TO_G1 test vectors OK Link
PAIRING_CHECK test vectors KO Link
PAIRING_CHECK test vectors OK Link

POS Tests

Test Name Reference Notes
0x01 ecRecover: recovered address matches known signer Link
0x01 ecRecover: recovers signer from a valid ECDSA signature Link
0x0100 p256Verify (secp256r1): Wycheproof test vector returns 1 (MadhugiriPro+) Link
0x02 SHA-256: 'abc' matches NIST vector Link
0x02 SHA-256: hash of empty string equals known constant Link
0x03 RIPEMD-160: hash of empty string equals known constant Link
0x04 identity: 256-byte patterned data round-trip Link
0x04 identity: returns input bytes unchanged Link
0x05 modexp: 2^256 mod 13 equals 3 Link
0x05 modexp: 8^9 mod 10 equals 8 Link
0x06 ecAdd (alt_bn128): G + G returns a valid non-zero curve point Link
0x07 ecMul (alt_bn128): 2·G matches ecAdd(G, G) Link
0x08 ecPairing (alt_bn128): empty input returns 1 (trivial pairing check) Link
0x09 blake2F: EIP-152 test vector 5 (12 rounds, 'abc' message) Link
0x0a KZG point evaluation: active on Cancun+ (rejects invalid input) Link
0x0a KZG: removed after LisovoPro — BALANCE charges cold gas (2600) Link
0x0a KZG: removed after LisovoPro — EXTCODESIZE charges cold gas Link
0x0a KZG: removed after LisovoPro — eth_call returns empty Link
0x0b BLS12-381 G1 Add: identity + G equals G (Prague+) Link
0x0c BLS12-381 G1 MSM: scalar-1 times G equals G (Prague+) Link
0x0d BLS12-381 G2 Add: identity + G2 equals G2 (Prague+) Link
0x0e BLS12-381 G2 MSM: scalar-1 times G2 equals G2 (Prague+) Link
0x0f BLS12-381 Pairing: e(G1_infinity, G2) returns 1 (Prague+) Link
0x10 BLS12-381 MapFpToG1: Fp element 1 maps to a non-trivial G1 point (Prague+) Link
0x11 BLS12-381 MapFp2ToG2: Fp2 element (0,1) maps to a non-trivial G2 point (Prague+) Link
1.2: BALANCE(0x0a) on-chain at LisovoPro — warm/cold gas baked into state root Link
1.2: BLS12-381 (0x0b–0x11) active after Madhugiri Link
1.2: BLS12-381 and p256Verify already active before Madhugiri (via upstream Prague) Link
1.2: BLS12-381 still active at MadhugiriPro Link
1.2: KZG (0x0a) state before Lisovo Link
1.2: KZG (0x0a) still inactive before Madhugiri Link
1.2: KZG point evaluation (0x0a) active in Lisovo era (on-chain tx) Link
1.2: KZG point evaluation (0x0a) is INACTIVE at LisovoPro (known: missing from precompile table) Link
1.2: all precompiles correct at Lisovo Link
1.2: all precompiles correct at LisovoPro Link
1.2: all precompiles unchanged at Giugliano (same as LisovoPro) Link
1.2: legacy precompiles (0x01–0x09) active at genesis forks Link
1.2: legacy precompiles + BLS + p256 still active at Dandeli Link
1.2: legacy precompiles still active at Rio Link
1.2: modexp (0x05) correctness at Madhugiri (EIP-7823/7883) Link
1.2: p256Verify (0x0100) active after MadhugiriPro Link
1.2: p256Verify (0x0100) is DROPPED at Madhugiri (known: missing from Madhugiri precompile table) Link
1.2: p256Verify (0x0100) still inactive in Madhugiri era (before MadhugiriPro re-adds it) Link
1.3: Agra — PUSH0 opcode succeeds in transaction after fork Link
1.3: Agra — initcode size limit enforced (EIP-3860) Link
1.3: Ahmedabad — contract > 24KB deploys successfully after fork Link
1.3: Ahmedabad — contract > 32KB fails to deploy Link
1.3: Dandeli — base fee dynamics change with 65% gas target Link
1.3: Giugliano — base fee remains non-zero through fork boundary Link
1.3: Giugliano — bor_getBlockGasParams returns gasTarget and baseFeeChangeDenominator Link
1.3: Giugliano — bor_getBlockGasParams returns null fields for pre-Giugliano block Link
1.3: Giugliano — chain progresses smoothly through fork boundary Link
1.3: Giugliano — gasTarget is consistent with gasLimit and target percentage Link
1.3: Lisovo — CLZ opcode reverts in transaction before fork Link
1.3: Lisovo — CLZ opcode succeeds and returns correct value after fork Link
1.3: LisovoPro — chain progresses smoothly through fork boundary Link
1.3: Madhugiri — transaction at exactly 33554432 gas is accepted Link
1.3: Madhugiri — transaction with gas > 33554432 is rejected (EIP-7825) Link
1.3: Napoli — MCOPY opcode succeeds in transaction after fork Link
1.3: Napoli — SELFDESTRUCT no longer removes code (EIP-6780) Link
1.3: Napoli — TSTORE/TLOAD succeed and produce correct state after fork Link
1.3: Rio — chain progresses smoothly through fork boundary Link
1.3: SHA-256 precompile gas stable across Madhugiri boundary Link
1.3: base fee exists and is non-zero across all fork boundaries Link
1.3: blake2F precompile gas stable across Dandeli boundary Link
1.3: ecRecover precompile gas stable across Lisovo boundary Link
1.3: no reorgs at fork boundaries — parent hashes are consistent Link
1.3: timestamps strictly increasing across all fork boundaries Link
50 concurrent eth_blockNumber requests all succeed and return consistent values Link
50 concurrent eth_getBalance requests all return valid results Link
50 concurrent eth_getLogs requests all return valid arrays Link
50 concurrent requests across additional RPC methods succeed Link
ADDMOD and MULMOD compute correctly Link
ADDRESS returns the contract's own address Link
BALANCE on a random non-precompile address costs cold gas (2600) Link
BALANCE on active precompile 0x01 (ecRecover) costs warm gas (~100), not cold (2600) Link
BALANCE on all active precompiles costs warm gas Link
BASEFEE opcode matches block baseFeePerGas Link
BASEFEE opcode returns value matching block header baseFeePerGas Link
BLOCKHASH(0) returns zero on Bor (genesis hash not available) Link
BYTE opcode extracts correct byte from word Link
Bor produces blocks on approximately 2-second sprint cadence Link
BorValidatorSet (0x1000) getBorValidators returns non-empty validator list Link
BorValidatorSet (0x1000) has deployed code and is callable Link
CALL with value to non-existent account skips G_NEW_ACCOUNT on Bor Link
CALLDATASIZE returns correct input length Link
CHAINID returns the correct chain ID (EIP-1344) Link
CLZ applied twice gives correct result Link
CLZ gas cost matches MUL (both cost 5 gas) Link
CLZ ignores trailing bits — only leading zeros matter Link
CLZ inside STATICCALL does not modify state Link
CLZ is cheaper than computing leading zeros via binary search Link
CLZ of alternating bit patterns Link
CLZ of consecutive values near power-of-2 boundary Link
CLZ of value with only the lowest bit set in each byte Link
CLZ opcode is active (feature probe) Link
CLZ result can be used by subsequent arithmetic (CLZ + SHR roundtrip) Link
CLZ returns correct values for all single-byte powers of 2 Link
CLZ returns correct values for powers of 2 across byte boundaries Link
CLZ with leading zero bytes followed by non-zero byte Link
CLZ works correctly inside CALL context Link
CLZ works correctly inside DELEGATECALL context Link
CLZ(0) returns 256 Link
CLZ(0x7FFF...FFFF) returns 1 — all bits set except MSB Link
CLZ(1) returns 255 Link
CLZ(2) returns 254 Link
CLZ(2^254) returns 1 Link
CLZ(2^255) returns 0 — highest bit set Link
CLZ(max uint256) returns 0 Link
CODESIZE returns correct runtime size Link
COINBASE opcode returns block miner address Link
CREATE deploys to the address predicted by cast compute-address Link
CREATE with maximum value transfer in constructor Link
CREATE2 address matches keccak256(0xff ++ deployer ++ salt ++ initCodeHash) Link
CREATE2 deploys child to predicted salt-derived address Link
CREATE2 redeploy after SELFDESTRUCT in creation tx succeeds Link
Calldata gas accounting: nonzero bytes cost more than zero bytes Link
Contract creation receipt has contractAddress field Link
Cross-contract storage isolation: two contracts store different values at slot 0 Link
DELEGATECALL preserves caller context: msg.sender stored via proxy Link
EIP-1559 sender decrease equals value plus effectiveGasPrice times gasUsed Link
EIP-2930 type-1 access list tx fuzz and verify liveness Link
EXTCODEHASH correctness for EOA, deployed contract, and nonexistent account Link
EXTCODEHASH for empty account returns zero on Bor Link
EXTCODESIZE on active precompile 0x01 (ecRecover) costs warm gas (~100) Link
EXTCODESIZE on all active precompiles costs warm gas Link
Empty batch JSON-RPC returns empty array Link
GASLIMIT opcode matches block gasLimit Link
Gas limit boundary: exact intrinsic gas (21000) succeeds for simple transfer Link
KZG Bor vector: valid proof returns FIELD_ELEMENTS_PER_BLOB BLS_MODULUS
KZG c-kzg vector correct_proof_0_0: zero polynomial at origin Link
KZG c-kzg vector correct_proof_1_0: constant polynomial (twos) at origin Link
KZG c-kzg vector correct_proof_2_0: non-trivial polynomial at origin Link
KZG c-kzg vector correct_proof_3_0: non-trivial polynomial at origin (alt) Link
KZG c-kzg vector correct_proof_4_0: Bor's commitment polynomial at origin Link
KZG c-kzg vector incorrect_proof_0_0: wrong proof for zero polynomial Link
KZG point evaluation precompile is active at 0x0a Link
KZG precompile callable from a deployed contract via STATICCALL Link
KZG precompile gas cost is 50000 (EIP-4844) Link
KZG rejects 192 bytes of all zeros Link
KZG rejects corrupted proof (bit-flip in Bor vector proof) Link
KZG rejects empty input (0 bytes) Link
KZG rejects mismatched versioned hash (all zeros) Link
KZG rejects mismatched versioned hash (corrupted first byte) Link
KZG rejects oversized input (193 bytes — one extra byte) Link
KZG rejects truncated input (32 bytes — only versioned hash) Link
KZG rejects truncated input (96 bytes — missing commitment and proof) Link
KZG rejects undersized input (191 bytes — one byte short) Link
KZG rejects versioned hash from different commitment Link
KZG rejects wrong y value (claim mismatch) Link
KZG rejects wrong z value (evaluation point mismatch) Link
KZG return value is identical across different valid proofs Link
LOG event emission and retrieval via eth_getLogs Link
MCOPY basic non-overlapping copy of 32 bytes Link
MCOPY overlapping backward copy (src > dst) has correct memmove semantics Link
MCOPY overlapping forward copy (src < dst) has correct memmove semantics Link
MCOPY to high offset triggers memory expansion and charges gas Link
MCOPY with zero length is a no-op Link
MRC20 native token wrapper (0x1010) has deployed code and balance function Link
Multiple storage slots in one transaction Link
NUMBER opcode returns correct block number Link
Nonce-too-low rejection Link
OOG during code-deposit phase fails the creation Link
ORIGIN returns the transaction sender EOA Link
P256 Wycheproof test vector #1 (signature malleability) verifies correctly Link
P256 Wycheproof test vector #60 (Shamir edge case) verifies correctly Link
P256 all-zero input returns empty (invalid point) Link
P256 empty input returns empty output Link
P256 extra input bytes beyond 160 are ignored (still verifies) Link
P256 invalid input still consumes gas (no gas refund on failure) Link
P256 invalid signature returns empty output Link
P256 point not on curve returns empty Link
P256 precompile callable from a deployed contract via STATICCALL Link
P256 precompile gas cost is 6900 (PIP-80 doubled from 3450) Link
P256 precompile is active at 0x0100 Link
P256 r=0 returns empty (r must be in range 1..n-1) Link
P256 s=0 returns empty (s must be in range 1..n-1) Link
P256 truncated input (less than 160 bytes) returns empty output Link
P256 valid signature returns 1 Link
P256 wrong public key for valid signature returns empty Link
PIP-11: eth_getBlockByNumber 'finalized' returns a valid block Link
PIP-11: finalized block advances as new blocks are produced Link
PIP-11: finalized block number is less than or equal to latest block number Link
PIP-16: block extraData field is non-empty and present Link
PIP-16: extraData is consistent across multiple recent blocks Link
PIP-20: StateReceiver (0x1001) has StateCommitted event signature Link
PIP-30 probe: deploy 24577-byte runtime to detect active MAX_CODE_SIZE Link
PIP-30: deploy 28000-byte runtime succeeds (between EIP-170 and PIP-30 limits) Link
PIP-30: deploy 32769-byte runtime is rejected (exceeds PIP-30 limit) Link
PIP-30: deploy exactly 32768-byte runtime succeeds at PIP-30 boundary Link
PIP-36: StateReceiver (0x1001) has replayFailedStateSync function Link
PIP-45: MRC20 system contract decimals() returns 18 Link
PIP-45: MRC20 system contract name() returns valid token name Link
PIP-45: MRC20 system contract symbol() returns valid token symbol Link
PIP-6/58: base fee change rate is tighter than Ethereum default (1/8) Link
PIP-6/58: base fee changes by at most 1/64 per block (denominator = 64) Link
PIP-6/58: base fee is always positive and non-zero Link
PIP-74: StateSyncTx has expected fields (from, to, input) Link
PIP-74: blocks with transactions include StateSyncTx in transactionsRoot Link
PIP-74: scan recent blocks for StateSyncTx (type 0x7F) transactions Link
PIP-79 active: baseFee deviates from old deterministic formula (Lisovo only) Link
PUSH0 pushes zero onto the stack (EIP-3855) Link
Parent hash chain integrity across 5 blocks Link
RETURNDATACOPY copies callee return data correctly Link
RETURNDATASIZE after CALL reflects callee return data length Link
RETURNDATASIZE before any call returns 0 Link
REVERT returns data and does not consume all gas Link
SAR arithmetic right shift sign-extends negative values (EIP-145) Link
SELFBALANCE returns contract's own balance Link
SELFDESTRUCT during construction leaves no code and zero balance Link
SELFDESTRUCT in same tx as creation destroys contract code Link
SELFDESTRUCT inside STATICCALL reverts Link
SELFDESTRUCT on pre-existing contract: code persists post-Cancun Link
SELFDESTRUCT sends balance to beneficiary Link
SELFDESTRUCT to self: balance preserved post-Cancun Link
SHL left shift: 1 << 4 = 16 (EIP-145) Link
SHR right shift: 0xFF >> 4 = 0x0F (EIP-145) Link
SIGNEXTEND correctly sign-extends byte 0 of 0x80 Link
SSTORE + SLOAD roundtrip: stored value is retrievable and unwritten slots are zero Link
SSTORE gas refund: clearing a storage slot uses less gas than setting it Link
SSTORE overwrite: new value replaces old Link
STATICCALL cannot modify state: SSTORE attempt reverts Link
StateReceiver system contract (0x0000000000000000000000000000000000001001) is callable Link
Sum of receipt gasUsed matches block gasUsed Link
TLOAD returns zero for unset transient slot Link
TSTORE + TLOAD roundtrip returns stored value Link
TSTORE gas cost is less than SSTORE for zero-to-nonzero write Link
TSTORE in DELEGATECALL shares caller transient storage context Link
TSTORE reverted by sub-call REVERT is undone Link
add new validator Link
all-opcode liveness smoke: deploy contracts exercising major opcode groups Link
base fee adjusts between blocks following EIP-1559 dynamics Link
base fee is present and positive on all recent blocks (PIP-79 invariant) Link
baseFee change rate is tighter than Ethereum mainnet (max ±5% vs ±12.5%) Link
baseFee does not diverge over a long block range Link
baseFee stays within ±5% bounds under transaction load Link
baseFeePerGas field exists in block headers Link
batch JSON-RPC returns array of matching results Link
batch JSON-RPC under concurrent load: 50 concurrent batch requests Link
block coinbase (miner field) is zero address on Bor Link
block timestamp monotonicity across 10 consecutive blocks Link
block-filling stress: rapid-fire large calldata txs Link
bor_getAuthor returns a valid address for latest block Link
bor_getCurrentValidators returns a non-empty validator list Link
bor_getSnapshot returns snapshot with validator data Link
bridge MATIC/POL from L1 to L2 and confirm L2 MATIC/POL balance increased Link
bridge MATIC/POL, ERC20, and ERC721 from L1 to L2 and confirm L2 balances increased Link
bridge an ERC721 token from L1 to L2 and confirm L2 ERC721 balance increased Link
bridge some ERC20 tokens from L1 to L2 and confirm L2 ERC20 balance increased Link
coinbase balance increases by at least the priority fee portion of gas cost Link
concurrent write/read race: tx submissions and state reads do not interfere Link
consecutive block baseFees are within ±5% of each other Link
contract-to-contract call fuzz: CALL/STATICCALL/DELEGATECALL Link
delegate MATIC/POL to a validator Link
deploy contract that returns 24577 runtime bytes is rejected by EIP-170 Link
deploy contract that returns exactly 24576 runtime bytes succeeds (EIP-170 boundary) Link
deploy contract that reverts in constructor leaves no code at deployed address Link
deploy contract with 0xEF leading runtime byte is rejected by EIP-3541 Link
deploy initcode exactly at EIP-3860 limit (49152 bytes) succeeds Link
deploy initcode one byte over EIP-3860 limit (49153 bytes) is rejected Link
deploy single STOP opcode contract succeeds and code at address is empty Link
enforce deterministic fallback behavior Link
enforce equal block distribution between block producers at the execution layer Link
enforce equal slot distribution between block producers at the consensus layer Link
enforce minimum one and maximum three selected producers per span Link
eth_call does not consume gas or advance nonce Link
eth_call to plain EOA returns 0x Link
eth_chainId returns a value matching cast chain-id Link
eth_estimateGas for EOA transfer returns 21000 Link
eth_estimateGas for failing call returns error Link
eth_feeHistory returns baseFeePerGas array and oldestBlock Link
eth_gasPrice returns a valid non-zero hex value Link
eth_getBalance at historical block returns correct value Link
eth_getBalance returns non-zero for funded account and zero for unused address Link
eth_getBlockByHash result matches eth_getBlockByNumber for latest block Link
eth_getBlockByNumber 'earliest' returns genesis block Link
eth_getBlockByNumber 'pending' returns valid response Link
eth_getBlockByNumber with fullTransactions=true returns full tx objects Link
eth_getBlockTransactionCountByNumber and ByHash agree on tx count Link
eth_getCode returns 0x for an EOA Link
eth_getCode returns non-empty bytecode for L2 StateReceiver contract Link
eth_getLogs for block 0 to 0 returns a valid array Link
eth_getLogs returns empty array for future block range Link
eth_getLogs with reversed block range returns error or empty array Link
eth_getProof returns valid Merkle proof structure Link
eth_getStorageAt returns zero for EOA and valid 32-byte word for contracts Link
eth_getTransactionByHash and ByBlockNumberAndIndex return consistent tx data Link
eth_getTransactionCount returns hex nonce matching cast nonce Link
eth_getTransactionReceipt has all required EIP fields Link
eth_getTransactionReceipt returns null for unknown transaction hash Link
eth_getUncleCountByBlockNumber returns 0 (PoS has no uncles) Link
eth_maxPriorityFeePerGas returns a valid hex value Link
eth_sendRawTransaction rejects invalid signature Link
eth_sendRawTransaction rejects wrong chainId Link
eth_syncing returns false on synced node Link
fuzz contract creations and assert individual tx outcomes Link
fuzz node with EIP-1559 type-2 transactions and verify processing Link
fuzz node with edge-case contract creation bytecodes and verify liveness Link
fuzz node with edge-case gas limits and verify liveness Link
fuzz node with mixed zero/non-zero calldata and verify liveness Link
fuzz node with non-zero calldata transactions and verify liveness Link
fuzz node with variable-size calldata transactions and verify liveness Link
fuzz scan: no unknown precompiles in 0x0001..PRECOMPILE_FUZZ_MAX Link
gasUsed <= gasLimit for latest block Link
higher concurrency watermark: 100 and 500 concurrent eth_blockNumber requests Link
insufficient balance rejection: tx with value+gas > balance is rejected Link
isolate the current block producer mid-span to trigger a producer rotation Link
large return data in constructor near EIP-170 limit (24000 bytes) succeeds Link
latest block contains required post-London fields and valid shapes Link
logsBloom is zero for genesis block (no log-emitting txs) Link
mixed concurrent RPC methods succeed without interfering with each other Link
multi-sender concurrent fuzz: 10 wallets fire txs simultaneously Link
multi-sender concurrent tx submissions: 10 wallets x 5 txs each Link
multiple CREATEs in single transaction: factory creates 5 children Link
nested contract creation: constructor deploys child via CREATE Link
net_version returns a non-empty numeric string Link
nonce increments by exactly 1 after each successful transaction Link
nonce replacement stress: higher gas replaces pending tx Link
nonce-gap stress: out-of-order submission resolves correctly Link
out-of-gas transaction still increments sender nonce Link
prune TxIndexer Link
recipient balance increases by exactly the value sent Link
remove validator Link
replay protection: same signed tx submitted twice does not double-spend Link
sender balance decreases by exactly gas cost plus value transferred Link
sha3Uncles field is empty-list RLP hash (PoS has no uncles) Link
spam messages at the consensus layer and ensure the protocol handles them gracefully Link
stack depth limit: 1024 nested calls revert Link
sustained RPC load over 30 seconds with monotonic block advancement Link
total value is conserved: sender decrease equals recipient increase plus gas cost Link
transaction at node-reported gas price succeeds Link
transaction with trivially low gas price (1 wei) is rejected Link
transient storage clears between transactions Link
transient storage is isolated per contract address Link
type 0 (legacy) receipt has correct type and gasPrice field Link
type 1 (EIP-2930) access list reduces gas for warm storage access Link
type 1 access list with multiple storage keys is accepted Link
type 2 (EIP-1559) effectiveGasPrice = baseFee + min(priorityFee, maxFee - baseFee) Link
type 2 maxFeePerGas below baseFee is rejected Link
undelegate MATIC/POL from a validator Link
update signer Link
update validator stake Link
update validator top-up fee Link
warm COINBASE access costs less than cold access to arbitrary address (EIP-3651) Link
web3_clientVersion returns a non-empty version string Link
zero-value self-transfer: only gas consumed, nonce increments Link

DApps Tests

Test Name Reference Notes
spot check Agora AUSD contract Link
spot check Arachnid's Deterministic Deployment Proxy contract Link
spot check BatchDistributor contract Link
spot check Create2Deployer contract Link
spot check CreateX contract Link
spot check ERC-4337 v0.6.0 EntryPoint contract Link
spot check ERC-4337 v0.6.0 SenderCreator contract Link
spot check ERC-4337 v0.7.0 EntryPoint contract Link
spot check ERC-4337 v0.7.0 SenderCreator contract Link
spot check Morpho AdaptiveCurveIrm contract Link
spot check Morpho Bundler3 contract Link
spot check Morpho Chainlink Oracle contract Link
spot check Morpho Metamorpho Factory contract Link
spot check Morpho Public Allocator contract Link
spot check Morpho blue contract Link
spot check MultiSend contract Link
spot check MultiSendCallOnly contract Link
spot check Multicall1 contract Link
spot check Multicall2 contract Link
spot check Multicall3 contract Link
spot check Permit2 contract Link
spot check PolygonZkEVMBridgeV2 contract Link
spot check RIP-7212 contract Link
spot check Safe contract Link
spot check SafeL2 contract Link
spot check SafeSingletonFactory contract Link
spot check Seaport 1.6 contract Link
spot check Seaport Conduit Controller contract Link
spot check Sushi Router contract Link
spot check Sushi V3 Factory contract Link
spot check Sushi V3 Position Manager contract Link
spot check Universal BTC contract Link
spot check Universal SOL contract Link
spot check Universal XRP contract Link
spot check Yearn AUSD contract Link
spot check Yearn WETH contract Link

Ethereum Test Cases

Test Name Reference Notes
execute ethereum test cases and ensure liveness Link

Execution Layer Tests

Test Name Reference Notes
Call special addresses Link
Deploy polycli loadtest contracts Link
Make conflicting contract calls Link
Make conflicting transaction to pool Link
Perform ERC20 Transfers Link
Perform some ERC721 Mints Link
Perform some Storage calls in the load tester contract Link
Perform some uniswap v3 calls Link
Setup Railgun Link
Setup SmoothCryptoLib Link
Testing ECDSAB4 - verify Link
Testing EIP6565 - BasePointMultiply Link
Testing EIP6565 - BasePointMultiply_Edwards Link
Testing EIP6565 - HashInternal Link
Testing EIP6565 - Verify Link
Testing EIP6565 - Verify_LE Link
Testing EIP6565 - ecPow128 Link
Testing RIP7212 - verify Link

Load Tests

Test Name Reference Notes
send 10,200 Uniswapv3 swaps sent and mined in 300 seconds Link
send 20,800 ERC721 mints and confirm mined in 240 seconds Link
send 41,200 ERC20 transfers and confirm mined in 240 seconds Link
send 85,700 EOA transfers and confirm mined in 60 seconds Link

CDK OP Geth Tests

Test Name Reference Notes
Check L2 OP Isthmus operator fees Link
Check L2 OP native bridge is disabled Link
Check L2 OP vaults totalProcessed wei Link
Check L2 supported forks Link
Contract call through forced tx Link
Disable OptimisticMode Link
Enable OptimisticMode Link
Rotate OP batcher key Link
Send a regular EOA forced tx with no l2 funds Link
Send a regular EOA forced tx Link
check address for custom gas token on L2 Link
send concurrent transactions and verify DA fee handling Link
sweep account with precise gas and DA fee estimation Link
test custom gas token bridge from L1 to L2 Link
test custom gas token bridge from L2 to L1 Link

Full System Tests

Test Name Reference Notes
CPU stress test with matrix operations Link
Disk Read/Write stress test Link
I/O stress test Link
Memory stress test Link
Run tests combinations Link

Other Tests

Test Name Reference Notes
Add single validator to committee Link
Bridge A -> Bridge B -> Claim A -> Claim B Link
Bridge A -> Bridge B -> Claim B -> Claim A Link
Bridge asset A -> Claim asset A -> Bridge asset B -> Claim asset B Link
Bridge message A → Bridge asset B → Claim asset A → Claim message B Link
Bridge message A → Bridge asset B → Claim message A → Claim asset B Link
Bridge message A → Claim message A → Bridge asset B → Claim asset B Link
Custom gas token deposit L1 -> L2 Link
Custom gas token withdrawal L2 -> L1 Link
ERC20 token deposit L1 -> L2 Link
ERC20 token deposit L2 -> L1 Link
Inject LatestBlock-N GER - A case PP (another test) Link
L1 → Rollup 1 (custom gas token) → Rollup 2 Link
L1 → Rollup 1 (custom gas token) → Rollup 3 -> Rollup 2 Link
L1 → Rollup 1 (native) → Rollup 3 Link
L1 → Rollup 3 (native/WETH) → Rollup 1 Link
Measure certificate generation intervals Link
Modexp calls not valid for fusaka Link
Modexp gas costs Link
Modexp regular calls Link
Native token transfer L1 -> L2 Link
RLP Execution block size limit 10M Link
Remove single validator from committee Link
Test Aggoracle committee Link
Test L2 to L2 bridge Link
Test Sovereign Chain Bridge Events Link
Test block gas limit increase to 60M Link
Test execute multiple claimMessages via testClaim with internal reentrancy and bridgeAsset call Link
Test inject invalid GER on L2 (bridges are valid) Link
Test invalid GER injection case A (FEP mode) Link
Test invalid GER injection case A (PP mode) Link
Test invalid GER injection case B2 (FEP mode) Link
Test invalid GER injection case B2 (PP mode) Link
Test new RPC endpoint eth_config Link
Test reentrancy protection for bridge claims - should prevent double claiming Link
Test triple claim internal calls -> 1 fail (same global index), 1 success (same global index) and 1 fail (different global index) Link
Test triple claim internal calls -> 1 fail, 1 success and 1 fail Link
Test triple claim internal calls -> 1 success, 1 fail and 1 success Link
Test triple claim internal calls -> 3 success Link
Test zkCounters Link
Transaction using new CLZ instruction Link
Transaction with more than 2^24 gas Link
Transfer message L2 to L2 Link
Transfer message Link
Verify batches Link
Verify certificate settlement Link
bridge transaction is indexed and autoclaimed on L2 Link
bridge transaction is indexed on L1 Link
foo Link
p256verify call Link
prover stress test Link
query finalized, safe, latest, and pending blocks return expected order Link
send ETH and verify pending nonce updates Link
send and sweep account with precise gas calculation Link
send multiple transactions with same nonce and verify rejection Link
send zero priced transactions and confirm rejection Link
trigger local balance tree underflow bridge revert Link

Kurtosis Tests

Test Name Reference Notes
Fork 9 validium w/ legacy stack and mock prover Link Although this is testable using an older Kurtosis tag, it is not actively maintained and tested in the Kurtosis CDK CI anymore.
Fork 9 rollup w/ legacy stack and mock prover Link Although this is testable using an older Kurtosis tag, it is not actively maintained and tested in the Kurtosis CDK CI anymore.
Fork 9 rollup w/ erigon stack and mock prover Link
Fork 9 validium w/ erigon stack and mock prover Link
Fork 11 rollup w/ erigon stack and mock prover Link
Fork 11 validium w/ erigon stack and mock prover Link
Fork 11 validium w/ legacy stack and mock prover Link Although this is testable using an older Kurtosis tag, it is not actively maintained and tested in the Kurtosis CDK CI anymore.
Fork 12 rollup w/ erigon stack and mock prover Link
Fork 12 validium w/ erigon stack and mock prover Link
Fork 12 soverign w/ erigon stack and SP1 Link
Fork 13 rollup w/ erigon stack and mock prover Link
Fork 13 validium w/ erigon stack and mock prover Link
CDK-OP-Stack wit network SP1 prover Link
CDK-OP-Stack with mock SP1 prover Link
CDK-OP-Stack without SP1 prover Link

External Test References

Test Name Reference Notes
Manual acceptance criteria Link
Access list tests Link Testable using Execution Spec Tests
Same block deployment and execution Link Testable using Execution Spec Tests
EIP-1559 Implementation Link Testable using Execution Spec Tests
EIP-6780 Implementation Link Testable using Execution Spec Tests
Every known opcode Link Testable using Execution Spec Tests
Blob, Accesslist, EIP-1559, EIP-7702 Link Testable using Execution Spec Tests
Smooth crypto test cases Link Some functions with libSCL_eddsaUtils.sol does not work
Ethereum test suite stress tests Link