446 lines
16 KiB
JSON
446 lines
16 KiB
JSON
{
|
||
"meta": {
|
||
"run_id": "ra-20261008T1744-evm",
|
||
"rpc": "https://rpc.devnet.igneum.network",
|
||
"chain_id": 4465,
|
||
"network": "igneum-devnet-4",
|
||
"node_version": "igneumd 2.0.0",
|
||
"started": "2026-10-08T17:44:37.324Z",
|
||
"sender": "0x27C433aEec28f9Be4cCe17A8C645d65baDfCF891",
|
||
"funded": true,
|
||
"solc": "0.8.28+commit.7893614a.Emscripten.clang",
|
||
"finished": "2026-10-08T17:45:51.564Z"
|
||
},
|
||
"summary": {
|
||
"passed": 22,
|
||
"failed": 0,
|
||
"untested": 0
|
||
},
|
||
"deployed": {
|
||
"token": "0xd93f5e2091ccd544757a38ecf5e4fa176c141b62",
|
||
"probe": "0xc4de4cf5766650a5c029fa908e3eb9270a19ed7d",
|
||
"contextTx": {
|
||
"hash": "0x186def3bfbc8cb0a05e7533d7527c50f91bf034bd94db812cb93a9938b51a228",
|
||
"block": 3053,
|
||
"coinbase": "0x1450a9d804D29084d34b93afB001dE807Aa9920d",
|
||
"prevrandao": "3b9abd95a495129679ad25afa750aff9ec2d03999ed57582698e3f4c4f4db862"
|
||
}
|
||
},
|
||
"rows": [
|
||
{
|
||
"id": "contracts.erc20.deploy",
|
||
"item": "Representative contracts",
|
||
"register_case": "EVM-05",
|
||
"name": "an ERC-20 deploys (CREATE address as Ethereum computes it, code at the address)",
|
||
"verdict": "passed",
|
||
"detail": "at 0xd93f5e2091ccd544757a38ecf5e4fa176c141b62, block 3016, gas 436751 of 639078 estimated",
|
||
"evidence": {
|
||
"tx": "0x314c059b7e3b8e1b0ec0f9b48430ac8e8a4f71231fbea5dd4caefbc817fea679",
|
||
"address": "0xd93f5e2091ccd544757a38ecf5e4fa176c141b62",
|
||
"block": 3016,
|
||
"gasUsed": 436751,
|
||
"estimated": 639078
|
||
},
|
||
"at": "2026-10-08T17:44:42.491Z"
|
||
},
|
||
{
|
||
"id": "contracts.erc20.transfer",
|
||
"item": "Representative contracts",
|
||
"register_case": "EVM-05",
|
||
"name": "ERC-20 transfer: balances move, the Transfer log decodes, eth_call reads the new balance",
|
||
"verdict": "passed",
|
||
"detail": "5 CTT to 0x00000000, log decoded, balance read",
|
||
"evidence": {
|
||
"tx": "0xd8dbd0346f81f2ef54333c52f64e04cc042c71c291a3ffb602efe989695915ce",
|
||
"block": 3018
|
||
},
|
||
"at": "2026-10-08T17:44:47.181Z"
|
||
},
|
||
{
|
||
"id": "contracts.erc20.approve",
|
||
"item": "Representative contracts",
|
||
"register_case": "EVM-05",
|
||
"name": "ERC-20 approve then transferFrom by a spender (the sender approves itself as spender): allowance consumed, logs decode",
|
||
"verdict": "passed",
|
||
"detail": "allowance 3 then 1 after transferFrom of 2",
|
||
"evidence": {
|
||
"approve": "0x570bbe8618caabfc5fc06b05147c81fdb8858bb80fc1fd525bea6500822752c8",
|
||
"transferFrom": "0xe6031b34c1b277a753f50f00d656d0c158df29d72c7f0629817115362fb0cd5f"
|
||
},
|
||
"at": "2026-10-08T17:44:56.275Z"
|
||
},
|
||
{
|
||
"id": "contracts.probe.deploy",
|
||
"item": "Representative contracts",
|
||
"register_case": "EVM-05",
|
||
"name": "a probe contract deploys (counter, block context reader, revert, out-of-gas loop, CREATE2)",
|
||
"verdict": "passed",
|
||
"detail": "at 0xc4de4cf5766650a5c029fa908e3eb9270a19ed7d",
|
||
"evidence": {
|
||
"tx": "0x97e39c81a2351c52a3b132f6dd69adcb8a2a83c5185963d63ab8d7a530eebdfa",
|
||
"address": "0xc4de4cf5766650a5c029fa908e3eb9270a19ed7d",
|
||
"block": 3026
|
||
},
|
||
"at": "2026-10-08T17:45:00.836Z"
|
||
},
|
||
{
|
||
"id": "contracts.counter",
|
||
"item": "Representative contracts",
|
||
"register_case": "EVM-05",
|
||
"name": "a counter increments twice and reads 2 (state persists across chain blocks)",
|
||
"verdict": "passed",
|
||
"detail": "count 2 after blocks 3029 and 3032",
|
||
"evidence": {
|
||
"first": "0x1771f03c79e1821270c5a57aeb5f6b1803676310301b742a139a703c6e4fcd3a",
|
||
"second": "0xad3f659436b7c670c0bc3809871fed8052c3db54c5324f05fdadb19cab05c013"
|
||
},
|
||
"at": "2026-10-08T17:45:14.114Z"
|
||
},
|
||
{
|
||
"id": "fees.quotes",
|
||
"item": "Wallet fee estimation",
|
||
"register_case": "EVM-03",
|
||
"name": "eth_gasPrice, eth_maxPriorityFeePerGas and eth_feeHistory answer in Ethereum's shapes",
|
||
"verdict": "passed",
|
||
"detail": "gasPrice 196.130804856 gwei, priority 1 gwei, feeHistory 5 base fees",
|
||
"evidence": {
|
||
"gasPrice": "0x2daa4e9478",
|
||
"maxPriorityFeePerGas": "0x3b9aca00",
|
||
"feeHistory": {
|
||
"baseFeePerGas": [
|
||
"0x174876e800",
|
||
"0x174876e800",
|
||
"0x174876e800",
|
||
"0x174876e800",
|
||
"0x174876e800"
|
||
],
|
||
"gasUsedRatio": [
|
||
0,
|
||
0,
|
||
0.0008790333333333334,
|
||
0
|
||
],
|
||
"igneum": {
|
||
"provingBaseFeePerGas": [
|
||
"0x9184e72a000",
|
||
"0x9184e72a000",
|
||
"0x9184e72a000",
|
||
"0x9184e72a000"
|
||
]
|
||
},
|
||
"oldestBlock": "0xbd6",
|
||
"reward": [
|
||
[
|
||
"0x3b9aca00"
|
||
],
|
||
[
|
||
"0x3b9aca00"
|
||
],
|
||
[
|
||
"0x3b9aca00"
|
||
],
|
||
[
|
||
"0x3b9aca00"
|
||
]
|
||
]
|
||
}
|
||
},
|
||
"at": "2026-10-08T17:45:14.223Z"
|
||
},
|
||
{
|
||
"id": "fees.estimate.transfer",
|
||
"item": "Wallet fee estimation",
|
||
"register_case": "EVM-03",
|
||
"name": "a plain transfer: eth_estimateGas against the receipt's gasUsed (the quote folds proving gas; both above Ethereum's 21,000)",
|
||
"verdict": "passed",
|
||
"detail": "estimated 59650, used 21000 (35% of the estimate); Ethereum's figure is 21,000",
|
||
"evidence": {
|
||
"tx": "0x6e67cf099e06ee7045d3ea1b890f10f7ce071d47086fe18449285d8a3966c795",
|
||
"estimated": 59650,
|
||
"gasUsed": 21000,
|
||
"ethereum": 21000
|
||
},
|
||
"at": "2026-10-08T17:45:18.898Z"
|
||
},
|
||
{
|
||
"id": "fees.estimate.call",
|
||
"item": "Wallet fee estimation",
|
||
"register_case": "EVM-03",
|
||
"name": "a contract call: eth_estimateGas against gasUsed (a wallet that quotes from the node is covered)",
|
||
"verdict": "passed",
|
||
"detail": "estimated 134366, used 26371",
|
||
"evidence": {
|
||
"tx": "0xc14d3a767d124d3628d0ae5161b2c2d3bd4433195857d3444c67a056e7c131c6",
|
||
"estimated": 134366,
|
||
"gasUsed": 26371
|
||
},
|
||
"at": "2026-10-08T17:45:23.595Z"
|
||
},
|
||
{
|
||
"id": "fees.local21000",
|
||
"item": "Wallet fee estimation",
|
||
"register_case": "EVM-03",
|
||
"name": "the documented difference: a transfer sent with a local 21,000 gas limit (Ethereum's intrinsic cost) instead of the node's quote",
|
||
"verdict": "passed",
|
||
"detail": "the node accepted it and it succeeded with gasUsed 21000: a wallet with a hard-coded 21,000 works",
|
||
"evidence": {
|
||
"sent": true,
|
||
"hash": "0x1581f6088e6642cde28dc04ffc0017a0c0a0377e482279c59de9cf46e9022c32",
|
||
"status": "success",
|
||
"gasUsed": 21000
|
||
},
|
||
"at": "2026-10-08T17:45:27.957Z"
|
||
},
|
||
{
|
||
"id": "failed.revert",
|
||
"item": "Failed transactions",
|
||
"register_case": "EVM-05",
|
||
"name": "a revert with a reason: eth_call returns the reason, the sent transaction has status 0, gas is charged, the nonce advances",
|
||
"verdict": "passed",
|
||
"detail": "eth_call answers code 3 \"execution reverted\" with Error(string) data decoding to \"compat says no\"; the sent transaction: status 0, gasUsed 22292 of 200000, nonce 37 to 38",
|
||
"evidence": {
|
||
"tx": "0x90e50327309da43b7aab7a39c9c5970784bbc0476010d29ef0d65ce1bfc81344",
|
||
"gasUsed": 22292,
|
||
"block": 3044,
|
||
"call_error_code": 3,
|
||
"call_error_message": "execution reverted",
|
||
"revert_data": "0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000e636f6d7061742073617973206e6f000000000000000000000000000000000000"
|
||
},
|
||
"at": "2026-10-08T17:45:32.415Z"
|
||
},
|
||
{
|
||
"id": "failed.outofgas",
|
||
"item": "Failed transactions",
|
||
"register_case": "EVM-05",
|
||
"name": "an out-of-gas call: status 0 and the whole limit charged",
|
||
"verdict": "passed",
|
||
"detail": "status 0, gasUsed 150000 of the 150000 limit",
|
||
"evidence": {
|
||
"tx": "0x4d13892063cc12ce5b67209f0a8c1dfa438fcc54e916c6748a556220f744e5f0",
|
||
"gasUsed": 150000,
|
||
"limit": 150000
|
||
},
|
||
"at": "2026-10-08T17:45:36.717Z"
|
||
},
|
||
{
|
||
"id": "binding.chainid",
|
||
"item": "Transaction binding and replay",
|
||
"register_case": "EVM-02",
|
||
"name": "a transaction signed for another chain id (the previous devnet's 4464) is refused by the node",
|
||
"verdict": "passed",
|
||
"detail": "refused: wrong chain id: expected 4465, got Some(4464)",
|
||
"evidence": {
|
||
"chain_id_signed": 4464,
|
||
"error": {
|
||
"code": -32000,
|
||
"message": "wrong chain id: expected 4465, got Some(4464)"
|
||
}
|
||
},
|
||
"at": "2026-10-08T17:45:36.791Z"
|
||
},
|
||
{
|
||
"id": "binding.replay",
|
||
"item": "Transaction binding and replay",
|
||
"register_case": "EVM-02",
|
||
"name": "the same signed transaction sent twice: the second send is refused (nonce already used)",
|
||
"verdict": "passed",
|
||
"detail": "first send mined in block 3049; the replay refused: nonce too low: account nonce is 40, transaction has 39",
|
||
"evidence": {
|
||
"tx": "0xb1722ee04bcf1aa0ff1c7a76aaaf5c42902bcb32aeeb2d463c81922ce8f5a36f",
|
||
"block": 3049,
|
||
"replay": {
|
||
"code": -32000,
|
||
"message": "nonce too low: account nonce is 40, transaction has 39"
|
||
},
|
||
"nonce_after": 40
|
||
},
|
||
"at": "2026-10-08T17:45:41.296Z"
|
||
},
|
||
{
|
||
"id": "receipts.fields",
|
||
"item": "Receipts",
|
||
"register_case": "EVM-06",
|
||
"name": "a receipt carries every Ethereum field, logsBloom recomputes from its logs, contractAddress is set on creation",
|
||
"verdict": "passed",
|
||
"detail": "15 fields, bloom recomputed over 1 log(s), contractAddress 0xd93f5e20",
|
||
"evidence": {
|
||
"tx": "0x314c059b7e3b8e1b0ec0f9b48430ac8e8a4f71231fbea5dd4caefbc817fea679",
|
||
"fields": [
|
||
"blockHash",
|
||
"blockNumber",
|
||
"contractAddress",
|
||
"cumulativeGasUsed",
|
||
"effectiveGasPrice",
|
||
"from",
|
||
"gasUsed",
|
||
"igneum",
|
||
"logs",
|
||
"logsBloom",
|
||
"status",
|
||
"to",
|
||
"transactionHash",
|
||
"transactionIndex",
|
||
"type"
|
||
]
|
||
},
|
||
"at": "2026-10-08T17:45:41.335Z"
|
||
},
|
||
{
|
||
"id": "receipts.root",
|
||
"item": "Receipts",
|
||
"register_case": "EVM-06",
|
||
"name": "the block's receipts rebuild its receipts trie root (Ethereum's layout, the node's encoding) equal to the header's receiptsRoot",
|
||
"verdict": "passed",
|
||
"detail": "block 3018, 1 receipts, root 0xc443c3e57c60",
|
||
"evidence": {
|
||
"block": 3018,
|
||
"receipts": 1,
|
||
"receiptsRoot": "0xc443c3e57c6002f379352b6c2897b6ea03a4320255831fb502ffc3094b888836"
|
||
},
|
||
"at": "2026-10-08T17:45:41.411Z"
|
||
},
|
||
{
|
||
"id": "indexing.logs",
|
||
"item": "Indexing",
|
||
"register_case": "EVM-06",
|
||
"name": "eth_getLogs by address, by topic and by block range returns the receipts' logs with consistent logIndex and transactionIndex",
|
||
"verdict": "passed",
|
||
"detail": "4 logs by address, 3 Transfer logs by topic, each found in its receipt",
|
||
"evidence": {
|
||
"byAddress": 4,
|
||
"byTopic": 3,
|
||
"fromBlock": 3016
|
||
},
|
||
"at": "2026-10-08T17:45:41.709Z"
|
||
},
|
||
{
|
||
"id": "indexing.block",
|
||
"item": "Indexing",
|
||
"register_case": "EVM-06",
|
||
"name": "eth_getBlockByNumber with full transactions, eth_getBlockReceipts and eth_getTransactionByHash agree on indices and hashes",
|
||
"verdict": "passed",
|
||
"detail": "block 3018: 1 transactions, indices 0 to 0 continuous",
|
||
"evidence": {
|
||
"block": 3018,
|
||
"count": 1
|
||
},
|
||
"at": "2026-10-08T17:45:41.834Z"
|
||
},
|
||
{
|
||
"id": "assumptions.context",
|
||
"item": "Application assumptions",
|
||
"register_case": "EVM-04",
|
||
"name": "block.number, timestamp, chainid, basefee and blockhash(number-1) read from a contract match the block the call executed in",
|
||
"verdict": "passed",
|
||
"detail": "block 3053: number, timestamp, chainid 4465, basefee, blockhash(n-1) = parentHash, msg.sender and tx.origin all match",
|
||
"evidence": {
|
||
"tx": "0x186def3bfbc8cb0a05e7533d7527c50f91bf034bd94db812cb93a9938b51a228",
|
||
"block": 3053
|
||
},
|
||
"at": "2026-10-08T17:45:46.595Z"
|
||
},
|
||
{
|
||
"id": "assumptions.create2",
|
||
"item": "Application assumptions",
|
||
"register_case": "EVM-04",
|
||
"name": "CREATE2 lands at the address Ethereum computes (keccak(0xff, deployer, salt, keccak(initcode)))",
|
||
"verdict": "passed",
|
||
"detail": "child at 0xe3bC69915FB7318236c5ff31EF679aF6ae5b8699",
|
||
"evidence": {
|
||
"tx": "0x442569b23f8b35526f48016154f887c77478029d977742e53bf192ac19eeaf11",
|
||
"address": "0xe3bC69915FB7318236c5ff31EF679aF6ae5b8699"
|
||
},
|
||
"at": "2026-10-08T17:45:51.218Z"
|
||
},
|
||
{
|
||
"id": "difference.coinbase",
|
||
"item": "Differences: block context",
|
||
"register_case": "EVM-04",
|
||
"name": "block.coinbase is the miner of the DAG block that first included the transaction, not one miner per chain block (measured: coinbase against the block's igneum.mergeset)",
|
||
"verdict": "passed",
|
||
"detail": "coinbase 0x1450a9d8 = the including block's miner 0x1450a9d8; the chain block merged 1 block(s) with 1 distinct miner(s), chain block miner 0x1450a9d8",
|
||
"evidence": {
|
||
"tx": "0x186def3bfbc8cb0a05e7533d7527c50f91bf034bd94db812cb93a9938b51a228",
|
||
"coinbase": "0x1450a9d804D29084d34b93afB001dE807Aa9920d",
|
||
"includingMiner": "0x1450a9d804d29084d34b93afb001de807aa9920d",
|
||
"mergesetMiners": [
|
||
"0x1450a9d804d29084d34b93afb001de807aa9920d"
|
||
],
|
||
"chainBlockMiner": "0x1450a9d804d29084d34b93afb001de807aa9920d"
|
||
},
|
||
"at": "2026-10-08T17:45:51.299Z"
|
||
},
|
||
{
|
||
"id": "difference.randomness",
|
||
"item": "Differences: randomness",
|
||
"register_case": "EVM-04",
|
||
"name": "block.prevrandao: its value is derived from the chain's epoch seed (not Ethereum's beacon RANDAO); measured across consecutive blocks, and from a contract when a sender is funded",
|
||
"verdict": "passed",
|
||
"detail": "blocks 3051 to 3054: 1 distinct epoch seed(s), 4 distinct mixHash value(s) in the headers; the source is the chain's epoch seed, which holds for an epoch, so prevrandao is not fresh per block and must not seed a lottery; a contract reading it twice in one call got the same value, and at block 3053 it read 0x3b9abd95a495…",
|
||
"evidence": {
|
||
"blocks": [
|
||
{
|
||
"number": 3051,
|
||
"mixHash": "0x9855c45455bb5481bce8e7326bde56289d8455fac3ba088c09852cbc27f83a4d",
|
||
"epochSeed": "0xc0e88f47b504f36aa8310a2e0735cf6c48a85a00e10349cbc16420ded775d186"
|
||
},
|
||
{
|
||
"number": 3052,
|
||
"mixHash": "0x89c614f9b0eb3acaec820886309da7c17d92bddd467c12d2341b5d255c78d3be",
|
||
"epochSeed": "0xc0e88f47b504f36aa8310a2e0735cf6c48a85a00e10349cbc16420ded775d186"
|
||
},
|
||
{
|
||
"number": 3053,
|
||
"mixHash": "0x3b9abd95a495129679ad25afa750aff9ec2d03999ed57582698e3f4c4f4db862",
|
||
"epochSeed": "0xc0e88f47b504f36aa8310a2e0735cf6c48a85a00e10349cbc16420ded775d186"
|
||
},
|
||
{
|
||
"number": 3054,
|
||
"mixHash": "0xea8435d29cf98ef613ad6a526ee0a398158a68de04f855b296ce7d82187c57c2",
|
||
"epochSeed": "0xc0e88f47b504f36aa8310a2e0735cf6c48a85a00e10349cbc16420ded775d186"
|
||
}
|
||
],
|
||
"contract": {
|
||
"hash": "0x186def3bfbc8cb0a05e7533d7527c50f91bf034bd94db812cb93a9938b51a228",
|
||
"block": 3053,
|
||
"coinbase": "0x1450a9d804D29084d34b93afB001dE807Aa9920d",
|
||
"prevrandao": "3b9abd95a495129679ad25afa750aff9ec2d03999ed57582698e3f4c4f4db862"
|
||
}
|
||
},
|
||
"at": "2026-10-08T17:45:51.526Z"
|
||
},
|
||
{
|
||
"id": "difference.fees",
|
||
"item": "Differences: two-dimensional fees",
|
||
"register_case": "EVM-03",
|
||
"name": "a receipt carries pgasUsed, provingBaseFeePerGas, burnedProvingFee and burnedExecutionBaseFee; effectiveGasPrice covers both dimensions",
|
||
"verdict": "passed",
|
||
"detail": "gasUsed 51375, pgasUsed 1968, proving base fee 10000 gwei per pgas; paid 5188875000000000 wei, of which proving burn 19680000000000000, execution burn 5137500000000000, tip 41100000000000 (parts sum differs from gasUsed × effectiveGasPrice)",
|
||
"evidence": {
|
||
"tx": "0xd8dbd0346f81f2ef54333c52f64e04cc042c71c291a3ffb602efe989695915ce",
|
||
"gasUsed": 51375,
|
||
"pgasUsed": 1968,
|
||
"effectiveGasPrice": "0x178411b200",
|
||
"igneum": {
|
||
"burnedExecutionBaseFee": "0x1240876e889800",
|
||
"burnedProvingFee": "0x45eadb112e0000",
|
||
"developerShares": [
|
||
{
|
||
"payee": null,
|
||
"wei": "0x95855b99e00"
|
||
}
|
||
],
|
||
"includingBlock": "0x2113006670863f5924a156be6b07aedef8889fc57f931d9e986abbd90f9b9dcc",
|
||
"includingMiner": "0x53fe98022c2ac26d5d721457fb1c374b4d56144b",
|
||
"minerTip": "0x256156e67800",
|
||
"overBudget": false,
|
||
"pgasAborted": false,
|
||
"pgasUsed": "0x7b0",
|
||
"provingBaseFeePerGas": "0x9184e72a000"
|
||
},
|
||
"parts_equal_paid": false
|
||
},
|
||
"at": "2026-10-08T17:45:51.564Z"
|
||
}
|
||
]
|
||
}
|