github.1485827954.workers.dev/ethereum/go-ethereum@v1.14.3/eth/tracers/internal/tracetest/makeTest.js (about) 1 // makeTest generates a test for the configured tracer by running 2 // a prestate reassembled and a call trace run, assembling all the 3 // gathered information into a test case. 4 var makeTest = function(tx, traceConfig) { 5 // Generate the genesis block from the block, transaction and prestate data 6 var block = eth.getBlock(eth.getTransaction(tx).blockHash); 7 var genesis = eth.getBlock(block.parentHash); 8 9 delete genesis.gasUsed; 10 delete genesis.logsBloom; 11 delete genesis.parentHash; 12 delete genesis.receiptsRoot; 13 delete genesis.sha3Uncles; 14 delete genesis.size; 15 delete genesis.transactions; 16 delete genesis.transactionsRoot; 17 delete genesis.uncles; 18 19 genesis.gasLimit = genesis.gasLimit.toString(); 20 genesis.number = genesis.number.toString(); 21 genesis.timestamp = genesis.timestamp.toString(); 22 23 genesis.alloc = debug.traceTransaction(tx, {tracer: "prestateTracer"}); 24 for (var key in genesis.alloc) { 25 var nonce = genesis.alloc[key].nonce; 26 if (nonce) { 27 genesis.alloc[key].nonce = nonce.toString(); 28 } 29 } 30 genesis.config = admin.nodeInfo.protocols.eth.config; 31 32 // Generate the call trace and produce the test input 33 var result = debug.traceTransaction(tx, traceConfig); 34 delete result.time; 35 36 var context = { 37 number: block.number.toString(), 38 difficulty: block.difficulty, 39 timestamp: block.timestamp.toString(), 40 gasLimit: block.gasLimit.toString(), 41 miner: block.miner, 42 }; 43 if (block.baseFeePerGas) { 44 context.baseFeePerGas = block.baseFeePerGas.toString(); 45 } 46 47 console.log(JSON.stringify({ 48 genesis: genesis, 49 context: context, 50 input: eth.getRawTransaction(tx), 51 result: result, 52 }, null, 2)); 53 }