| 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 |
|