diff --git a/Makefile b/Makefile index 1b0f53ef37..90d905e0f9 100644 --- a/Makefile +++ b/Makefile @@ -215,14 +215,26 @@ test-conformance: test-vm test-bchain vm_tests=$(wildcard tests/ethereum-tests/VMTests/*/*.json) slow_vm_tests=$(wildcard tests/ethereum-tests/VMTests/vmPerformance/*.json) -quick_vm_tests=$(filter-out $(slow_vm_tests), $(vm_tests)) +bad_vm_tests= $(wildcard tests/ethereum-tests/VMTests/vmBlockInfoTest/blockhash*.json) \ + $(wildcard tests/ethereum-tests/VMTests/vmEnvironmentalInfo/balance*.json) \ + $(wildcard tests/ethereum-tests/VMTests/vmSystemOperations/*call*.json) \ + $(wildcard tests/ethereum-tests/VMTests/vmSystemOperations/*Call*.json) \ + $(wildcard tests/ethereum-tests/VMTests/vmSystemOperations/*create*.json) \ + tests/ethereum-tests/VMTests/vmEnvironmentalInfo/env1.json \ + tests/ethereum-tests/VMTests/vmEnvironmentalInfo/extcodecopy0AddressTooBigRight.json \ + tests/ethereum-tests/VMTests/vmEnvironmentalInfo/ExtCodeSizeAddressInputTooBigRightMyAddress.json \ + tests/ethereum-tests/VMTests/vmRandomTest/201503110226PYTHON_DUP6.json \ + tests/ethereum-tests/VMTests/vmRandomTest/randomTest.json \ + tests/ethereum-tests/VMTests/vmSystemOperations/PostToNameRegistrator0.json \ + tests/ethereum-tests/VMTests/vmSystemOperations/PostToReturn1.json +quick_vm_tests=$(filter-out $(slow_vm_tests) $(bad_vm_tests), $(vm_tests)) test-all-vm: $(vm_tests:=.test) test-slow-vm: $(slow_vm_tests:=.test) test-vm: $(quick_vm_tests:=.test) -tests/ethereum-tests/VMTests/%.test: tests/ethereum-tests/VMTests/% build - MODE=VMTESTS $(TEST) $< tests/templates/output-success.txt +tests/ethereum-tests/VMTests/%.test: tests/ethereum-tests/VMTests/% build-ocaml + MODE=VMTESTS $(TEST) $< # BlockchainTests @@ -230,16 +242,18 @@ bchain_tests=$(wildcard tests/ethereum-tests/BlockchainTests/GeneralStateTests/* slow_bchain_tests=$(wildcard tests/ethereum-tests/BlockchainTests/GeneralStateTests/stQuadraticComplexityTest/*.json) \ $(wildcard tests/ethereum-tests/BlockchainTests/GeneralStateTests/stStaticCall/static_Call50000*.json) \ $(wildcard tests/ethereum-tests/BlockchainTests/GeneralStateTests/stStaticCall/static_Return50000*.json) \ - $(wildcard tests/ethereum-tests/BlockchainTests/GeneralStateTests/stStaticCall/static_Call1MB1024Calldepth_d1g0v0.json) - # $(wildcard tests/BlockchainTests/GeneralStateTests/*/*/*_Constantinople.json) + $(wildcard tests/ethereum-tests/BlockchainTests/GeneralStateTests/stStaticCall/static_Call1MB1024Calldepth_d1g0v0.json) \ + tests/ethereum-tests/BlockchainTests/GeneralStateTests/stRandom/randomStatetest177_d0g0v0.json \ + tests/ethereum-tests/BlockchainTests/GeneralStateTests/stSpecialTest/JUMPDEST_Attack_d0g0v0.json \ + tests/ethereum-tests/BlockchainTests/GeneralStateTests/stSpecialTest/JUMPDEST_AttackwithJump_d0g0v0.json quick_bchain_tests=$(filter-out $(slow_bchain_tests), $(bchain_tests)) test-all-bchain: $(bchain_tests:=.test) test-slow-bchain: $(bchain_tests:=.test) test-bchain: $(quick_bchain_tests:=.test) -tests/ethereum-tests/BlockchainTests/%.test: tests/ethereum-tests/BlockchainTests/% build - $(TEST) $< tests/templates/output-success.txt +tests/ethereum-tests/BlockchainTests/%.test: tests/ethereum-tests/BlockchainTests/% build-ocaml + $(TEST) $< # InteractiveTests @@ -248,8 +262,8 @@ interactive_tests:=$(wildcard tests/interactive/*.json) \ test-interactive: $(interactive_tests:=.test) -tests/interactive/%.json.test: tests/interactive/%.json tests/interactive/%.json.out build - $(TEST) $< $<.out +tests/interactive/%.json.test: tests/interactive/%.json build-ocaml build-java + $(TEST) $< tests/templates/output-success.json tests/interactive/gas-analysis/%.evm.test: tests/interactive/gas-analysis/%.evm tests/interactive/gas-analysis/%.evm.out build MODE=GASANALYZE $(TEST) $< $<.out @@ -262,7 +276,7 @@ proof_tests=$(wildcard $(proof_dir)/*/*-spec.k) test-proof: $(proof_tests:=.test) $(proof_dir)/%.test: $(proof_dir)/% build-java - $(TEST) $< tests/templates/proof-success.txt + $(TEST) $< split-proof-tests: tests/proofs/make.timestamp $(MAKE) -C tests/proofs $@ diff --git a/driver.md b/driver.md index 025794ab8d..ef26726c7b 100644 --- a/driver.md +++ b/driver.md @@ -83,8 +83,8 @@ To do so, we'll extend sort `JSON` with some EVM specific syntax, and provide a syntax EthereumCommand ::= "flush" // ---------------------------------- - rule #end ~> flush => #finalizeTx(false) ... - rule #exception ~> flush => #finalizeTx(false) ~> #exception ... + rule EXECMODE #end ~> flush => #finalizeTx(EXECMODE ==K VMTESTS) ... + rule EXECMODE #exception ~> flush => #finalizeTx(EXECMODE ==K VMTESTS) ~> #exception ... ``` - `startTx` computes the sender of the transaction, and places loadTx on the `k` cell. @@ -178,8 +178,8 @@ To do so, we'll extend sort `JSON` with some EVM specific syntax, and provide a syntax EthereumCommand ::= "#finishTx" // -------------------------------------- - rule #exception ~> #finishTx => #popCallStack ~> #popWorldState ~> #popSubstate ... - rule #revert ~> #finishTx => #popCallStack ~> #popWorldState ~> #popSubstate ~> #refund GAVAIL ... GAVAIL + rule #exception ~> #finishTx => #popCallStack ~> #popWorldState ... + rule #revert ~> #finishTx => #popCallStack ~> #popWorldState ~> #refund GAVAIL ... GAVAIL rule #end ~> #finishTx => #mkCodeDeposit ACCT ... ACCT @@ -190,7 +190,7 @@ To do so, we'll extend sort `JSON` with some EVM specific syntax, and provide a ... - rule #end ~> #finishTx => #popCallStack ~> #dropWorldState ~> #dropSubstate ~> #refund GAVAIL ... + rule #end ~> #finishTx => #popCallStack ~> #dropWorldState ~> #refund GAVAIL ... ACCT GAVAIL ListItem(TXID:Int) ... @@ -656,12 +656,17 @@ The `"rlp"` key loads the block information. rule check "account" : { (ACCT:Int) : { "code" : ((CODE:String) => #parseByteStack(CODE)) } } ... rule check "account" : { (ACCT:Int) : { "storage" : ({ STORAGE:JSONList } => #parseMap({ STORAGE })) } } ... - rule check "account" : { ACCT : { "balance" : (BAL:Int) } } => . ... + rule EXECMODE + check "account" : { ACCT : { "balance" : (BAL:Int) } } => . ... ACCT BAL ... + requires EXECMODE =/=K VMTESTS + + rule VMTESTS + check "account" : { ACCT : { "balance" : (BAL:Int) } } => . ... rule check "account" : { ACCT : { "nonce" : (NONCE:Int) } } => . ... diff --git a/evm-node.md b/evm-node.md index 57a6bc0f97..1b7937c8a5 100644 --- a/evm-node.md +++ b/evm-node.md @@ -186,12 +186,12 @@ Because the same account may be loaded more than once, implementations of this i ```{.k .node} syntax Exception ::= "#endVM" | "#endCreate" // -------------------------------------------- - rule #exception ~> #endVM => #popCallStack ~> #popWorldState ~> #popSubstate ~> 0 + rule #exception ~> #endVM => #popCallStack ~> #popWorldState ~> 0 _ => .WordStack - rule #revert ~> #endVM => #popCallStack ~> #popWorldState ~> #popSubstate ~> #refund GAVAIL ~> 0 + rule #revert ~> #endVM => #popCallStack ~> #popWorldState ~> #refund GAVAIL ~> 0 GAVAIL - rule #end ~> #endVM => #popCallStack ~> #dropWorldState ~> #dropSubstate ~> #refund GAVAIL ~> 1 + rule #end ~> #endVM => #popCallStack ~> #dropWorldState ~> #refund GAVAIL ~> 1 GAVAIL rule #endCreate => W ... W : WS diff --git a/evm.md b/evm.md index 4edae2815e..c6db3238de 100644 --- a/evm.md +++ b/evm.md @@ -42,15 +42,12 @@ In the comments next to each cell, we've marked which component of the YellowPap // ----------------------------------- .WordStack // H_RETURN - 0 // \mu_i - 0 .List .List - .List .Set .Set - + .Map // I_b .WordStack @@ -65,10 +62,12 @@ In the comments next to each cell, we've marked which component of the YellowPap .Map // \mu_m 0 // \mu_pc 0 // \mu_g + 0 // \mu_i 0 - false - + false + 0 + // A_* (execution substate) @@ -188,107 +187,57 @@ The `callStack` cell stores a list of previous VM execution states. - `#dropCallStack` removes the top element of the `callStack`. ```k - syntax State ::= "{" Int "|" Int "|" Map "|" WordStack "|" Int "|" WordStack "|" Int "|" WordStack "|" Map "|" Int "|" Int "|" Int "|" Bool "}" - // ----------------------------------------------------------------------------------------------------------------------------------------------- - syntax InternalOp ::= "#pushCallStack" // -------------------------------------- rule #pushCallStack => . ... - (.List => ListItem({ ACCT | GAVAIL | PGM | BYTES | CR | CD | CV | WS | LM | MUSED | PCOUNT | DEPTH | STATIC })) ... - ACCT - GAVAIL - PGM - BYTES - CR - CD - CV - WS - LM - MUSED - PCOUNT - DEPTH - STATIC + (.List => ListItem(CALLSTATE)) ... + CALLSTATE syntax InternalOp ::= "#popCallStack" // ------------------------------------- rule #popCallStack => . ... - (ListItem({ ACCT | GAVAIL | PGM | BYTES | CR | CD | CV | WS | LM | MUSED | PCOUNT | DEPTH | STATIC }) => .List) ... - _ => ACCT - _ => GAVAIL - _ => PGM - _ => BYTES - _ => CR - _ => CD - _ => CV - _ => WS - _ => LM - _ => MUSED - _ => PCOUNT - _ => DEPTH - _ => STATIC + (ListItem(CALLSTATE) => .List) ... + _ => CALLSTATE syntax InternalOp ::= "#dropCallStack" // -------------------------------------- - rule #dropCallStack => . ... (ListItem(_) => .List) ... + rule #dropCallStack => . ... + (ListItem(_) => .List) ... ``` ### The StateStack The `interimStates` cell stores a list of previous world states. -- `#pushWorldState` stores a copy of the current accounts at the top of the `interimStates` cell. +- `#pushWorldState` stores a copy of the current accounts and the substate at the top of the `interimStates` cell. - `#popWorldState` restores the top element of the `interimStates`. - `#dropWorldState` removes the top element of the `interimStates`. ```k - syntax Accounts ::= "{" AccountsCell "|" Set "}" - // ------------------------------------------------ + syntax Accounts ::= "{" AccountsCellFragment "|" Set "|" SubstateCellFragment "}" + // --------------------------------------------------------------------------------- syntax InternalOp ::= "#pushWorldState" // --------------------------------------- rule #pushWorldState => .K ... - ACCTS - ACCTDATA - (.List => ListItem({ ACCTDATA | ACCTS })) ... + (.List => ListItem({ ACCTDATA | ACCTS | SUBSTATE })) ... + ACCTS + ACCTDATA + SUBSTATE syntax InternalOp ::= "#popWorldState" // -------------------------------------- rule #popWorldState => .K ... - (ListItem({ ACCTDATA | ACCTS }) => .List) ... - _ => ACCTS - _ => ACCTDATA + (ListItem({ ACCTDATA | ACCTS | SUBSTATE }) => .List) ... + _ => ACCTS + _ => ACCTDATA + _ => SUBSTATE syntax InternalOp ::= "#dropWorldState" // --------------------------------------- rule #dropWorldState => . ... (ListItem(_) => .List) ... ``` -### The SubstateStack - -The `substateStack` cell stores a list of previous substate logs. - -- `#pushSubstate` stores a copy of the current substate at the top of the `substateStack` cell. -- `#popSubstate` restores the top element of the `substateStack`. -- `#dropSubstate` removes the top element of the `substateStack`. - -```k - syntax InternalOp ::= "#pushSubstate" - // ------------------------------------- - rule #pushSubstate => .K ... - SUBSTATE - (.List => ListItem( SUBSTATE )) ... - - syntax InternalOp ::= "#popSubstate" - // ------------------------------------ - rule #popSubstate => .K ... - _ => SUBSTATE - (ListItem( SUBSTATE ) => .List) ... - - syntax InternalOp ::= "#dropSubstate" - // ------------------------------------- - rule #dropSubstate => .K ... (ListItem(_) => .List) ... -``` - Control Flow ------------ @@ -749,24 +698,12 @@ After executing a transaction, it's necessary to have the effect of the substate rule #finalizeTx(true) => . ... .Set - rule #finalizeTx(false => true) ... - VMTESTS - ACCT - BAL => 0 - - ACCT - CURRBAL => CURRBAL +Word BAL - ... - - rule (.K => #newAccount MINER) ~> #finalizeTx(_)... - NORMAL MINER ACCTS requires notBool MINER in ACCTS rule #finalizeTx(false) ... - NORMAL GAVAIL => G*(GAVAIL, GLIMIT, REFUND) REFUND => 0 ListItem(MSGID:Int) ... @@ -778,7 +715,6 @@ After executing a transaction, it's necessary to have the effect of the substate requires REFUND =/=Int 0 rule #finalizeTx(false => true) ... - NORMAL ORG MINER GAVAIL @@ -803,7 +739,6 @@ After executing a transaction, it's necessary to have the effect of the substate requires ORG =/=Int MINER rule #finalizeTx(false => true) ... - NORMAL ACCT ACCT 0 @@ -1152,9 +1087,6 @@ These operators make queries about the current execution state. syntax UnStackOp ::= "BLOCKHASH" // -------------------------------- - rule BLOCKHASH N => #if N >=Int HI orBool HI -Int 256 >Int N #then 0 #else #parseHexWord(Keccak256(Int2String(N))) #fi ~> #push ... - HI - VMTESTS ``` When running as a `node`, the blockhash will be retrieved from the running client. @@ -1164,7 +1096,6 @@ Otherwise, it is calculated here using the "shortcut" formula used for running t rule BLOCKHASH N => #blockhash(HASHES, N, HI -Int 1, 0) ~> #push ... HI HASHES - NORMAL syntax Int ::= #blockhash ( List , Int , Int , Int ) [function] // --------------------------------------------------------------- @@ -1297,8 +1228,7 @@ For now, I assume that they instantiate an empty account and use the empty data. ... - rule BALANCE ACCT => #if EXECMODE ==K VMTESTS #then #newAccount ACCT #else . #fi ~> 0 ~> #push ... - EXECMODE + rule BALANCE ACCT => 0 ~> #push ... ACCTS requires notBool ACCT in ACCTS @@ -1311,8 +1241,7 @@ For now, I assume that they instantiate an empty account and use the empty data. ... - rule EXTCODESIZE ACCT => #if EXECMODE ==K VMTESTS #then #newAccount ACCT #else . #fi ~> 0 ~> #push ... - EXECMODE + rule EXTCODESIZE ACCT => 0 ~> #push ... ACCTS requires notBool ACCT in ACCTS ``` @@ -1331,8 +1260,7 @@ Should we pad zeros (for the copied "program")? ... - rule EXTCODECOPY ACCT MEMSTART PGMSTART WIDTH => #if EXECMODE ==K VMTESTS #then #newAccount ACCT #else . #fi ... - EXECMODE + rule EXTCODECOPY ACCT MEMSTART PGMSTART WIDTH => . ... ACCTS requires notBool ACCT in ACCTS ``` @@ -1407,7 +1335,7 @@ The various `CALL*` (and other inter-contract control flow) operations will be d | "#callWithCode" Int Int Map WordStack Int Int Int WordStack Bool | "#mkCall" Int Int Map WordStack Int Int Int WordStack Bool // -------------------------------------------------------------------------------- - rule #checkCall ACCT VALUE ~> #call _ _ _ GLIMIT _ _ _ _ => #refund GLIMIT ~> #pushCallStack ~> #pushWorldState ~> #pushSubstate ~> #exception ... + rule #checkCall ACCT VALUE ~> #call _ _ _ GLIMIT _ _ _ _ => #refund GLIMIT ~> #pushCallStack ~> #pushWorldState ~> #exception ... CD _ => .WordStack @@ -1451,18 +1379,16 @@ The various `CALL*` (and other inter-contract control flow) operations will be d requires notBool ACCTCODE in #precompiledAccounts(SCHED) andBool notBool ACCTCODE in ACCTS rule #callWithCode ACCTFROM ACCTTO CODE BYTES GLIMIT VALUE APPVALUE ARGS STATIC - => #pushCallStack ~> #pushWorldState ~> #pushSubstate + => #pushCallStack ~> #pushWorldState ~> #transferFunds ACCTFROM ACCTTO VALUE ~> #mkCall ACCTFROM ACCTTO CODE BYTES GLIMIT VALUE APPVALUE ARGS STATIC ... - rule EXECMODE - #mkCall ACCTFROM ACCTTO CODE BYTES GLIMIT VALUE APPVALUE ARGS STATIC:Bool - => #initVM ~> #if EXECMODE ==K VMTESTS #then #end #else #execute #fi + rule #mkCall ACCTFROM ACCTTO CODE BYTES GLIMIT VALUE APPVALUE ARGS STATIC:Bool + => #initVM ~> #execute ... - ... (.Set => #if EXECMODE ==K VMTESTS #then SetItem({ ACCTTO | GLIMIT | VALUE | ARGS }) #else .Set #fi) CD => CD +Int 1 _ => ARGS _ => APPVALUE @@ -1486,24 +1412,21 @@ The various `CALL*` (and other inter-contract control flow) operations will be d syntax KItem ::= "#return" Int Int // ---------------------------------- rule #exception ~> #return _ _ - => #popCallStack ~> #popWorldState ~> #popSubstate ~> 0 ~> #push + => #popCallStack ~> #popWorldState ~> 0 ~> #push ... _ => .WordStack rule #revert ~> #return RETSTART RETWIDTH - => #popCallStack ~> #popWorldState ~> #popSubstate + => #popCallStack ~> #popWorldState ~> 0 ~> #push ~> #refund GAVAIL ~> #setLocalMem RETSTART RETWIDTH OUT ... OUT GAVAIL - rule EXECMODE - #end ~> #return RETSTART RETWIDTH - => #popCallStack - ~> #if EXECMODE ==K VMTESTS #then #popWorldState #else #dropWorldState #fi - ~> #dropSubstate + rule #end ~> #return RETSTART RETWIDTH + => #popCallStack ~> #dropWorldState ~> 1 ~> #push ~> #refund GAVAIL ~> #setLocalMem RETSTART RETWIDTH OUT ... @@ -1591,8 +1514,9 @@ For each `CALL*` operation, we make a corresponding call to `#call` and a state- syntax InternalOp ::= "#create" Int Int Int Int WordStack | "#mkCreate" Int Int WordStack Int Int | "#checkCreate" Int Int - // -------------------------------------------- - rule #checkCreate ACCT VALUE ~> #create _ _ GAVAIL _ _ => #refund GAVAIL ~> #pushCallStack ~> #pushWorldState ~> #pushSubstate ~> #exception ... + | "#incrementNonce" Int + // ------------------------------------------- + rule #checkCreate ACCT VALUE ~> #create _ _ GAVAIL _ _ => #refund GAVAIL ~> #pushCallStack ~> #pushWorldState ~> #exception ... CD _ => .WordStack @@ -1602,28 +1526,25 @@ For each `CALL*` operation, we make a corresponding call to `#call` and a state- requires VALUE >Int BAL orBool CD >=Int 1024 - rule #checkCreate ACCT VALUE => . ... - EXECMODE + rule #checkCreate ACCT VALUE => #incrementNonce ACCT ... CD ACCT BAL - NONCE => #if EXECMODE ==K VMTESTS #then NONCE #else NONCE +Int 1 #fi ... requires notBool (VALUE >Int BAL orBool CD >=Int 1024) rule #create ACCTFROM ACCTTO GAVAIL VALUE INITCODE - => #pushCallStack ~> #pushWorldState ~> #pushSubstate + => #pushCallStack ~> #pushWorldState ~> #newAccount ACCTTO ~> #transferFunds ACCTFROM ACCTTO VALUE ~> #mkCreate ACCTFROM ACCTTO INITCODE GAVAIL VALUE ... - rule EXECMODE - #mkCreate ACCTFROM ACCTTO INITCODE GAVAIL VALUE - => #initVM ~> #if EXECMODE ==K VMTESTS #then #end #else #execute #fi + rule #mkCreate ACCTFROM ACCTTO INITCODE GAVAIL VALUE + => #initVM ~> #execute ... SCHED @@ -1632,7 +1553,6 @@ For each `CALL*` operation, we make a corresponding call to `#call` and a state- _ => #asMapOpCodes(#dasmOpCodes(INITCODE, SCHED)) _ => INITCODE _ => ACCTFROM - ... (.Set => #if EXECMODE ==K VMTESTS #then SetItem({ 0 | OLDGAVAIL +Int GAVAIL | VALUE | INITCODE }) #else .Set #fi) CD => CD +Int 1 _ => .WordStack _ => VALUE @@ -1643,38 +1563,42 @@ For each `CALL*` operation, we make a corresponding call to `#call` and a state- ... .Set => SetItem(ACCTFROM) SetItem(ACCTTO) ... + rule #incrementNonce ACCT => . ... + + ACCT + NONCE => NONCE +Int 1 + ... + + syntax KItem ::= "#codeDeposit" Int | "#mkCodeDeposit" Int | "#finishCodeDeposit" Int WordStack // --------------------------------------------------- - rule #exception ~> #codeDeposit _ => #popCallStack ~> #popWorldState ~> #popSubstate ~> 0 ~> #push ... _ => .WordStack - rule #revert ~> #codeDeposit _ => #popCallStack ~> #popWorldState ~> #popSubstate ~> #refund GAVAIL ~> 0 ~> #push ... + rule #exception ~> #codeDeposit _ => #popCallStack ~> #popWorldState ~> 0 ~> #push ... _ => .WordStack + rule #revert ~> #codeDeposit _ => #popCallStack ~> #popWorldState ~> #refund GAVAIL ~> 0 ~> #push ... GAVAIL - rule EXECMODE - #end ~> #codeDeposit ACCT => #mkCodeDeposit ACCT ... + rule #end ~> #codeDeposit ACCT => #mkCodeDeposit ACCT ... rule #mkCodeDeposit ACCT - => #if EXECMODE ==K VMTESTS #then . #else Gcodedeposit < SCHED > *Int #sizeWordStack(OUT) ~> #deductGas #fi + => Gcodedeposit < SCHED > *Int #sizeWordStack(OUT) ~> #deductGas ~> #finishCodeDeposit ACCT OUT ... - EXECMODE SCHED OUT => .WordStack requires #sizeWordStack(OUT) <=Int maxCodeSize < SCHED > - rule #mkCodeDeposit ACCT => #popCallStack ~> #popWorldState ~> #popSubstate ~> 0 ~> #push ... + rule #mkCodeDeposit ACCT => #popCallStack ~> #popWorldState ~> 0 ~> #push ... SCHED OUT => .WordStack requires #sizeWordStack(OUT) >Int maxCodeSize < SCHED > rule #finishCodeDeposit ACCT OUT - => #popCallStack ~> #if EXECMODE ==K VMTESTS #then #popWorldState #else #dropWorldState #fi ~> #dropSubstate + => #popCallStack ~> #dropWorldState ~> #refund GAVAIL ~> ACCT ~> #push ... - EXECMODE GAVAIL ACCT @@ -1683,15 +1607,14 @@ For each `CALL*` operation, we make a corresponding call to `#call` and a state- rule #exception ~> #finishCodeDeposit ACCT _ - => #popCallStack ~> #if EXECMODE ==K VMTESTS #then #popWorldState #else #dropWorldState #fi ~> #dropSubstate + => #popCallStack ~> #dropWorldState ~> #refund GAVAIL ~> ACCT ~> #push ... - EXECMODE GAVAIL FRONTIER - rule #exception ~> #finishCodeDeposit _ _ => #popCallStack ~> #popWorldState ~> #popSubstate ~> 0 ~> #push ... + rule #exception ~> #finishCodeDeposit _ _ => #popCallStack ~> #popWorldState ~> 0 ~> #push ... SCHED requires SCHED =/=K FRONTIER ``` diff --git a/kevm b/kevm index 23190a86da..b9f372a973 100755 --- a/kevm +++ b/kevm @@ -83,51 +83,42 @@ run_interpreter() { interpreter="$build_dir/ocaml/driver-kompiled/interpreter" kast="$(mktemp)" output="$(mktemp)" - kast_output="$(mktemp)" - local exit_status="0" - trap "rm -rf $kast $output $kast_output" INT TERM EXIT + trap "rm -rf $kast $output" INT TERM EXIT "$kevm_dir/kast-json.py" "$test_file" > "$kast" $interpreter "$build_dir/ocaml/driver-kompiled/realdef.cma" -c PGM "$kast" textfile \ -c SCHEDULE "$cSCHEDULE" text -c MODE "$cMODE" text \ - --output-file "$output" \ - || exit_status="$?" - if [[ "$exit_status" != '0' ]]; then - k-bin-to-text "$output" "$kast_output" - cat "$kast_output" - return "$exit_status" - fi + --output-file "$output" } run_test() { local test_file="$1" ; shift - local expected_file="$1" ; shift - local output_file="$(mktemp "$test_file.out.XXXXXX")" - local exit_status=0 - trap "rm -rf $output_file" INT TERM EXIT case "$test_file" in - *proofs/* ) run_proof "$test_file" "$@" > "$output_file" \ - || exit_status="$?" + *proofs/* ) run_proof "$test_file" "$@" ;; - *interactive/*) run_krun ocaml "$test_file" --interpret "$@" > "$output_file" \ - || exit_status="$?" + *interactive/*) local expected_file="$1" ; shift + local output_file="$(mktemp "$test_file.out.XXXXXX")" + trap "rm -rf $output_file" INT TERM EXIT + run_krun ocaml "$test_file" --interpret "$@" > "$output_file" \ + || pretty_diff "$expected_file" "$output_file" ;; - * ) run_interpreter "$test_file" > "$output_file" \ - || exit_status="$?" + * ) run_interpreter "$test_file" ;; esac - [[ "$exit_status" == 0 ]] \ - || pretty_diff "$expected_file" "$output_file" } run_test_profile() { local test_file="$1" ; shift - local expected_file="$1" ; shift local start_time="$(date '+%s')" - run_test "$test_file" "$expected_file" "$@" \ - && echo "$test_file" >> "$now_passing" \ - || echo "$test_file" >> "$now_failing" + local exit_status='0' + run_test "$test_file" "$@" || exit_status="$?" local end_time="$(date '+%s')" + if [[ "$exit_status" == '0' ]]; then + echo "$test_file" >> "$now_passing" + else + echo "$test_file" >> "$now_failing" + fi echo "$((end_time - start_time)) $test_file" >> "$run_times" + exit "$exit_status" } # Main diff --git a/tests/interactive/CallRecursiveContract_d0g0v0.json b/tests/interactive/CallRecursiveContract_d0g0v0.json new file mode 100644 index 0000000000..34e71b575a --- /dev/null +++ b/tests/interactive/CallRecursiveContract_d0g0v0.json @@ -0,0 +1,758 @@ +{ + "CallRecursiveContract_d0g0v0_Byzantium" : { + "_info" : { + "comment" : "", + "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", + "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", + "source" : "src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json", + "sourceHash" : "8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e" + }, + "blocks" : [ + { + "blockHeader" : { + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "", + "gasLimit" : "0x05f5e100", + "gasUsed" : "0x05d602", + "hash" : "0xad7a4536c5842f5caab4605d78e66b40b287d8eb3777d1692a8de6a6014d854f", + "mixHash" : "0x2997a2caefcc0da8b12b7ba0dc1621e28ff004cdcc4c30106952936ac7a49467", + "nonce" : "0xbb247707a7e8a083", + "number" : "0x01", + "parentHash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", + "receiptTrie" : "0x29cd73fe1868f13a298f87d55ffc3c35f6c1251f98fd58835f99a95c718fbd31", + "stateRoot" : "0xc2eed555afd349166225c89bb46ab3428f34fe9388ce2a8b5b1b4409412dc8f9", + "timestamp" : "0x03e8", + "transactionsTrie" : "0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "rlp" : "0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0c2eed555afd349166225c89bb46ab3428f34fe9388ce2a8b5b1b4409412dc8f9a0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a029cd73fe1868f13a298f87d55ffc3c35f6c1251f98fd58835f99a95c718fbd31b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e1008305d6028203e880a02997a2caefcc0da8b12b7ba0dc1621e28ff004cdcc4c30106952936ac7a4946788bb247707a7e8a083f862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0", + "transactions" : [ + { + "data" : "0x00", + "gasLimit" : "0x061a80", + "gasPrice" : "0x01", + "nonce" : "0x00", + "r" : "0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d", + "s" : "0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca", + "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", + "v" : "0x1c", + "value" : "0x01" + } + ], + "uncleHeaders" : [ + ] + } + ], + "genesisBlockHeader" : { + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x42", + "gasLimit" : "0x05f5e100", + "gasUsed" : "0x00", + "hash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "nonce" : "0x0102030405060708", + "number" : "0x00", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22", + "timestamp" : "0x03b6", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "genesisRLP" : "0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", + "lastblockhash" : "0xad7a4536c5842f5caab4605d78e66b40b287d8eb3777d1692a8de6a6014d854f", + "network" : "Byzantium", + "postState" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x01", + "code" : "0x3060025560206000600039602060006000f0", + "nonce" : "0x29", + "storage" : { + "0x02" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" + } + }, + "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { + "balance" : "0x29a2241af631d602", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + }, + "0x4b0b4b3c7fd3dd5cea1d04dcf027dea29f84acb1" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x02", + "storage" : { + "0x02" : "0x4b0b4b3c7fd3dd5cea1d04dcf027dea29f84acb1" + } + }, + "0x60f971aa65f7e520dcb750823e2c239e61c3736b" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x02", + "storage" : { + "0x02" : "0x60f971aa65f7e520dcb750823e2c239e61c3736b" + } + }, + "0x6fc9df08d2206eff4f4c378aeb2a1f8c570952b9" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x02", + "storage" : { + "0x02" : "0x6fc9df08d2206eff4f4c378aeb2a1f8c570952b9" + } + }, + "0x74a77e95f3228f0b4d116d5a12e09aaf99ce54ae" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x02", + "storage" : { + "0x02" : "0x74a77e95f3228f0b4d116d5a12e09aaf99ce54ae" + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x096c3d", + "code" : "", + "nonce" : "0x01", + "storage" : { + } + }, + "0xf0064be0919341a45680ec0d592eaee47df671ac" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x02", + "storage" : { + "0x02" : "0xf0064be0919341a45680ec0d592eaee47df671ac" + } + } + }, + "pre" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x00", + "code" : "0x3060025560206000600039602060006000f0", + "nonce" : "0x28", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0f4240", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + } + } + }, + "CallRecursiveContract_d0g0v0_EIP150" : { + "_info" : { + "comment" : "", + "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", + "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", + "source" : "src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json", + "sourceHash" : "8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e" + }, + "blocks" : [ + { + "blockHeader" : { + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "", + "gasLimit" : "0x05f5e100", + "gasUsed" : "0x05d602", + "hash" : "0xc8417a58a1b28973bf904f682286f7f75ce10f60efdb4ed6994aa2758a432a7a", + "mixHash" : "0x08537f394aad708dd1c0a270f66f815ce3dc8826a265c1610fcc11ffa4a68965", + "nonce" : "0xbf62a424947e2578", + "number" : "0x01", + "parentHash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", + "receiptTrie" : "0x094fb672162ff0a137b3e30810321528a5a6cc10634df85054e4856fee261a17", + "stateRoot" : "0x0289aea08a0161f13694a60100228ab183174df65a4dbe5c95b1193b8aa4a292", + "timestamp" : "0x03e8", + "transactionsTrie" : "0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "rlp" : "0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa00289aea08a0161f13694a60100228ab183174df65a4dbe5c95b1193b8aa4a292a0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a0094fb672162ff0a137b3e30810321528a5a6cc10634df85054e4856fee261a17b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e1008305d6028203e880a008537f394aad708dd1c0a270f66f815ce3dc8826a265c1610fcc11ffa4a6896588bf62a424947e2578f862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0", + "transactions" : [ + { + "data" : "0x00", + "gasLimit" : "0x061a80", + "gasPrice" : "0x01", + "nonce" : "0x00", + "r" : "0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d", + "s" : "0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca", + "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", + "v" : "0x1c", + "value" : "0x01" + } + ], + "uncleHeaders" : [ + ] + } + ], + "genesisBlockHeader" : { + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x42", + "gasLimit" : "0x05f5e100", + "gasUsed" : "0x00", + "hash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "nonce" : "0x0102030405060708", + "number" : "0x00", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22", + "timestamp" : "0x03b6", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "genesisRLP" : "0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", + "lastblockhash" : "0xc8417a58a1b28973bf904f682286f7f75ce10f60efdb4ed6994aa2758a432a7a", + "network" : "EIP150", + "postState" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x01", + "code" : "0x3060025560206000600039602060006000f0", + "nonce" : "0x29", + "storage" : { + "0x02" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" + } + }, + "0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180" + } + }, + "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { + "balance" : "0x4563918244f9d602", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + }, + "0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee" + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x096c3d", + "code" : "", + "nonce" : "0x01", + "storage" : { + } + }, + "0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3" + } + }, + "0xdfceaa082d190ab34e3c37943de35ae8fc01f300" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0xdfceaa082d190ab34e3c37943de35ae8fc01f300" + } + }, + "0xf0064be0919341a45680ec0d592eaee47df671ac" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0xf0064be0919341a45680ec0d592eaee47df671ac" + } + } + }, + "pre" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x00", + "code" : "0x3060025560206000600039602060006000f0", + "nonce" : "0x28", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0f4240", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + } + } + }, + "CallRecursiveContract_d0g0v0_EIP158" : { + "_info" : { + "comment" : "", + "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", + "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", + "source" : "src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json", + "sourceHash" : "8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e" + }, + "blocks" : [ + { + "blockHeader" : { + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "", + "gasLimit" : "0x05f5e100", + "gasUsed" : "0x05d602", + "hash" : "0x6476515a7c61709a2b089e0f2ecb62fa09d41b1fa1ae2459b36e8bb18c545747", + "mixHash" : "0x83a666d0df6cd0a56408696cad96d75cad4bf8068866a65920a29fa9f61550d0", + "nonce" : "0x42f2a8307bda5084", + "number" : "0x01", + "parentHash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", + "receiptTrie" : "0xf09f9453977e0f663e221d4f499c3a69374a3e9114d96a24e5a5f43a66fdf8bf", + "stateRoot" : "0x40d37713bc5484e4042bebda7f367f88d1b7888e16428b359b4c57a2e42aa69d", + "timestamp" : "0x03e8", + "transactionsTrie" : "0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "rlp" : "0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa040d37713bc5484e4042bebda7f367f88d1b7888e16428b359b4c57a2e42aa69da0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a0f09f9453977e0f663e221d4f499c3a69374a3e9114d96a24e5a5f43a66fdf8bfb901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e1008305d6028203e880a083a666d0df6cd0a56408696cad96d75cad4bf8068866a65920a29fa9f61550d08842f2a8307bda5084f862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0", + "transactions" : [ + { + "data" : "0x00", + "gasLimit" : "0x061a80", + "gasPrice" : "0x01", + "nonce" : "0x00", + "r" : "0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d", + "s" : "0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca", + "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", + "v" : "0x1c", + "value" : "0x01" + } + ], + "uncleHeaders" : [ + ] + } + ], + "genesisBlockHeader" : { + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x42", + "gasLimit" : "0x05f5e100", + "gasUsed" : "0x00", + "hash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "nonce" : "0x0102030405060708", + "number" : "0x00", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22", + "timestamp" : "0x03b6", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "genesisRLP" : "0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", + "lastblockhash" : "0x6476515a7c61709a2b089e0f2ecb62fa09d41b1fa1ae2459b36e8bb18c545747", + "network" : "EIP158", + "postState" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x01", + "code" : "0x3060025560206000600039602060006000f0", + "nonce" : "0x29", + "storage" : { + "0x02" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" + } + }, + "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { + "balance" : "0x4563918244f9d602", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + }, + "0x4b0b4b3c7fd3dd5cea1d04dcf027dea29f84acb1" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x02", + "storage" : { + "0x02" : "0x4b0b4b3c7fd3dd5cea1d04dcf027dea29f84acb1" + } + }, + "0x60f971aa65f7e520dcb750823e2c239e61c3736b" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x02", + "storage" : { + "0x02" : "0x60f971aa65f7e520dcb750823e2c239e61c3736b" + } + }, + "0x6fc9df08d2206eff4f4c378aeb2a1f8c570952b9" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x02", + "storage" : { + "0x02" : "0x6fc9df08d2206eff4f4c378aeb2a1f8c570952b9" + } + }, + "0x74a77e95f3228f0b4d116d5a12e09aaf99ce54ae" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x02", + "storage" : { + "0x02" : "0x74a77e95f3228f0b4d116d5a12e09aaf99ce54ae" + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x096c3d", + "code" : "", + "nonce" : "0x01", + "storage" : { + } + }, + "0xf0064be0919341a45680ec0d592eaee47df671ac" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x02", + "storage" : { + "0x02" : "0xf0064be0919341a45680ec0d592eaee47df671ac" + } + } + }, + "pre" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x00", + "code" : "0x3060025560206000600039602060006000f0", + "nonce" : "0x28", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0f4240", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + } + } + }, + "CallRecursiveContract_d0g0v0_Frontier" : { + "_info" : { + "comment" : "", + "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", + "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", + "source" : "src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json", + "sourceHash" : "8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e" + }, + "blocks" : [ + { + "blockHeader" : { + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "", + "gasLimit" : "0x05f5e100", + "gasUsed" : "0x061a80", + "hash" : "0x56b01bc48896d0f148e3cbeb25d2acca2fb269f58c76259f12b6371b34cf55e0", + "mixHash" : "0xf2a65eacc585c243da6a578441843d140dd0f249a877b0ded6144c9377d0754b", + "nonce" : "0xe33515169624bac0", + "number" : "0x01", + "parentHash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", + "receiptTrie" : "0x148ccddbf11792db5ae8678da605f39100dd3a61ccb30746f764c0da5f07fab6", + "stateRoot" : "0x55f734e7ea6efcad82a24fa8642ca33400d5d51513ab41b99f6e195ded745b83", + "timestamp" : "0x03e8", + "transactionsTrie" : "0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "rlp" : "0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa055f734e7ea6efcad82a24fa8642ca33400d5d51513ab41b99f6e195ded745b83a0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a0148ccddbf11792db5ae8678da605f39100dd3a61ccb30746f764c0da5f07fab6b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e10083061a808203e880a0f2a65eacc585c243da6a578441843d140dd0f249a877b0ded6144c9377d0754b88e33515169624bac0f862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0", + "transactions" : [ + { + "data" : "0x00", + "gasLimit" : "0x061a80", + "gasPrice" : "0x01", + "nonce" : "0x00", + "r" : "0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d", + "s" : "0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca", + "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", + "v" : "0x1c", + "value" : "0x01" + } + ], + "uncleHeaders" : [ + ] + } + ], + "genesisBlockHeader" : { + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x42", + "gasLimit" : "0x05f5e100", + "gasUsed" : "0x00", + "hash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "nonce" : "0x0102030405060708", + "number" : "0x00", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22", + "timestamp" : "0x03b6", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "genesisRLP" : "0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", + "lastblockhash" : "0x56b01bc48896d0f148e3cbeb25d2acca2fb269f58c76259f12b6371b34cf55e0", + "network" : "Frontier", + "postState" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x01", + "code" : "0x3060025560206000600039602060006000f0", + "nonce" : "0x29", + "storage" : { + "0x02" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" + } + }, + "0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180" + } + }, + "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { + "balance" : "0x4563918244fa1a80", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + }, + "0x8e3411c91d5dd4081b4846fa2f93808f5ad19686" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0x8e3411c91d5dd4081b4846fa2f93808f5ad19686" + } + }, + "0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee" + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0927bf", + "code" : "", + "nonce" : "0x01", + "storage" : { + } + }, + "0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3" + } + }, + "0xdfceaa082d190ab34e3c37943de35ae8fc01f300" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0xdfceaa082d190ab34e3c37943de35ae8fc01f300" + } + }, + "0xf0064be0919341a45680ec0d592eaee47df671ac" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0xf0064be0919341a45680ec0d592eaee47df671ac" + } + } + }, + "pre" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x00", + "code" : "0x3060025560206000600039602060006000f0", + "nonce" : "0x28", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0f4240", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + } + } + }, + "CallRecursiveContract_d0g0v0_Homestead" : { + "_info" : { + "comment" : "", + "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", + "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", + "source" : "src/BlockchainTestsFiller/GeneralStateTests/stInitCodeTest/CallRecursiveContract_d0g0v0Filler.json", + "sourceHash" : "8d529644ca8ea1a246d92e2a632eea5e3d047412caa3e9eecdabef4cddd0803e" + }, + "blocks" : [ + { + "blockHeader" : { + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "", + "gasLimit" : "0x05f5e100", + "gasUsed" : "0x061a80", + "hash" : "0x4b932565479299ee989f7bc9da55d2a3982052fe528791316164e8a9aa7f56db", + "mixHash" : "0x097d08e84b142edbdf167b1768103abcbaaf43d90f9ad99f8d06ab39a4444e20", + "nonce" : "0xf42704efd7c8c55b", + "number" : "0x01", + "parentHash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", + "receiptTrie" : "0x148ccddbf11792db5ae8678da605f39100dd3a61ccb30746f764c0da5f07fab6", + "stateRoot" : "0x55f734e7ea6efcad82a24fa8642ca33400d5d51513ab41b99f6e195ded745b83", + "timestamp" : "0x03e8", + "transactionsTrie" : "0xd4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "rlp" : "0xf90261f901f9a06c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa055f734e7ea6efcad82a24fa8642ca33400d5d51513ab41b99f6e195ded745b83a0d4be89a2f61318fc9713ec59a5f4dc08476e084155c765e911baf3180b66a493a0148ccddbf11792db5ae8678da605f39100dd3a61ccb30746f764c0da5f07fab6b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405f5e10083061a808203e880a0097d08e84b142edbdf167b1768103abcbaaf43d90f9ad99f8d06ab39a4444e2088f42704efd7c8c55bf862f860800183061a8094095e7baea6a6c7c4c2dfeb977efac326af552d8701001ca0767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072da06d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0cac0", + "transactions" : [ + { + "data" : "0x00", + "gasLimit" : "0x061a80", + "gasPrice" : "0x01", + "nonce" : "0x00", + "r" : "0x767b4aeef3b7b464066b6622894304ddbe828ff6f7d35b4a208479b84190072d", + "s" : "0x6d23402c4c7144e986f0a9dbbb8bfc7fd8e1d75f13bb85d5cce03b46f0a8b0ca", + "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", + "v" : "0x1c", + "value" : "0x01" + } + ], + "uncleHeaders" : [ + ] + } + ], + "genesisBlockHeader" : { + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x42", + "gasLimit" : "0x05f5e100", + "gasUsed" : "0x00", + "hash" : "0x6c44ba6d50081eedac235864ef83628b46a1a93f57c34e03e4782e7a04e3bf3f", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "nonce" : "0x0102030405060708", + "number" : "0x00", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0x9c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22", + "timestamp" : "0x03b6", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "genesisRLP" : "0xf901fbf901f6a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa09c33b65c5ead10d16ec24c6d6dcdff561dae7610857513f507152c6d05e15d22a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405f5e100808203b642a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421880102030405060708c0c0", + "lastblockhash" : "0x4b932565479299ee989f7bc9da55d2a3982052fe528791316164e8a9aa7f56db", + "network" : "Homestead", + "postState" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x01", + "code" : "0x3060025560206000600039602060006000f0", + "nonce" : "0x29", + "storage" : { + "0x02" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" + } + }, + "0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0x1a4c83e1a9834cdc7e4a905ff7f0cf44aed73180" + } + }, + "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { + "balance" : "0x4563918244fa1a80", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + }, + "0x8e3411c91d5dd4081b4846fa2f93808f5ad19686" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0x8e3411c91d5dd4081b4846fa2f93808f5ad19686" + } + }, + "0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0x9ca74ad1a326b79d9ec9c080deb56062e975a7ee" + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0927bf", + "code" : "", + "nonce" : "0x01", + "storage" : { + } + }, + "0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0xbbba3a14689a28fd82f09d4e01bc87d9654e95c3" + } + }, + "0xdfceaa082d190ab34e3c37943de35ae8fc01f300" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0xdfceaa082d190ab34e3c37943de35ae8fc01f300" + } + }, + "0xf0064be0919341a45680ec0d592eaee47df671ac" : { + "balance" : "0x00", + "code" : "", + "nonce" : "0x01", + "storage" : { + "0x02" : "0xf0064be0919341a45680ec0d592eaee47df671ac" + } + } + }, + "pre" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x00", + "code" : "0x3060025560206000600039602060006000f0", + "nonce" : "0x28", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0f4240", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + } + } + } +} \ No newline at end of file diff --git a/tests/interactive/add0.json b/tests/interactive/add0.json deleted file mode 100644 index def37aade9..0000000000 --- a/tests/interactive/add0.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "add0" : { - "_info" : { - "comment" : "", - "filledwith" : "cpp-1.3.0+commit.6e0ce939.Linux.g++", - "lllcversion" : "Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++", - "source" : "src/VMTestsFiller/vmArithmeticTest/add0Filler.json", - "sourceHash" : "dcc7fc8aebdc2d7334440cfe6c63172941b4164c1ba8c32897318ca0cdfb7a1c" - }, - "callcreates" : [ - ], - "env" : { - "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", - "currentDifficulty" : "0x0100", - "currentGasLimit" : "0x0f4240", - "currentNumber" : "0x00", - "currentTimestamp" : "0x01" - }, - "exec" : { - "address" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", - "caller" : "0xcd1722f2947def4cf144679da39c4c32bdc35681", - "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055", - "data" : "0x", - "gas" : "0x0186a0", - "gasPrice" : "0x5af3107a4000", - "origin" : "0xcd1722f2947def4cf144679da39c4c32bdc35681", - "value" : "0x0de0b6b3a7640000" - }, - "gas" : "0x013874", - "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "out" : "0x", - "post" : { - "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055", - "nonce" : "0x00", - "storage" : { - "0x00" : "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe" - } - } - }, - "pre" : { - "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { - "balance" : "0x0de0b6b3a7640000", - "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055", - "nonce" : "0x00", - "storage" : { - } - } - } - } -} \ No newline at end of file diff --git a/tests/interactive/add0.json.out b/tests/interactive/add0.json.out deleted file mode 100644 index 69deaaca3b..0000000000 --- a/tests/interactive/add0.json.out +++ /dev/null @@ -1,209 +0,0 @@ - - - #finalizeTx ( false ) ~> check "add0" : { "post" : { "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { "balance" : "0x0de0b6b3a7640000" , "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055" , "nonce" : "0x00" , "storage" : { "0x00" : "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe" , .JSONList } , .JSONList } , .JSONList } , .JSONList } ~> check "add0" : { "out" : "0x" , .JSONList } ~> check "add0" : { "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" , .JSONList } ~> check "add0" : { "gas" : "0x013874" , .JSONList } ~> check "add0" : { "callcreates" : [ .JSONList ] , .JSONList } ~> clear ~> run { .JSONList } ~> success .EthereumSimulation - - - 1 - - - NORMAL - - - DEFAULT - - - .Map - - - - - .WordStack - - - 0 - - - 0 - - - .List - - - .List - - - .List - - - .Set - - - .Set - - - - 0 |-> PUSH ( 32 , 115792089237316195423570985008687907853269984665640564039457584007913129639935 ) - 33 |-> PUSH ( 32 , 115792089237316195423570985008687907853269984665640564039457584007913129639935 ) - 66 |-> ADD - 67 |-> PUSH ( 1 , 0 ) - 69 |-> SSTORE - - - 127 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 127 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 1 : 96 : 0 : 85 : .WordStack - - - 87579061662017136990230301793909925042452127430 - - - 1170859069521887415590932569929099639409724315265 - - - .WordStack - - - 1000000000000000000 - - - .WordStack - - - .Map - - - 70 - - - 79988 - - - 99988 - - - false - - - - - .Set - - - .List - - - 0 - - - - 100000000000000 - - - 1170859069521887415590932569929099639409724315265 - - - 0 - - - 0 - - - 244687034288125203496486448490407391986876152250 - - - 0 - - - 0 - - - 0 - - - .WordStack - - - 256 - - - 0 - - - 1000000 - - - 0 - - - 1 - - - .WordStack - - - 0 - - - 0 - - - [ .JSONList ] - - - .List - - - - - SetItem ( 87579061662017136990230301793909925042452127430 ) - SetItem ( 244687034288125203496486448490407391986876152250 ) - - - AccountCellMapItem ( - 87579061662017136990230301793909925042452127430 - , - - 87579061662017136990230301793909925042452127430 - - - 1000000000000000000 - - - 127 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 127 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 255 : 1 : 96 : 0 : 85 : .WordStack - - - 0 |-> 115792089237316195423570985008687907853269984665640564039457584007913129639934 - - - 0 - - ) AccountCellMapItem ( - 244687034288125203496486448490407391986876152250 - , - - 244687034288125203496486448490407391986876152250 - - - 0 - - - .WordStack - - - .Map - - - 0 - - ) - - - .List - - - .List - - - .MessageCellMap - - - - diff --git a/tests/interactive/gas-analysis/sumTo10.evm.out b/tests/interactive/gas-analysis/sumTo10.evm.out index c81633c990..a0e23227a4 100644 --- a/tests/interactive/gas-analysis/sumTo10.evm.out +++ b/tests/interactive/gas-analysis/sumTo10.evm.out @@ -23,28 +23,19 @@ .WordStack - - 2 - - - 0 - .List .List - - .List - .Set .Set - + 0 |-> PUSH ( 1 , 0 ) 2 |-> PUSH ( 1 , 0 ) @@ -169,13 +160,19 @@ 999979991 + + 2 + 999999991 false - + + 0 + + .Set diff --git a/tests/proofs b/tests/proofs index ef26a7cd6d..455a504cf0 160000 --- a/tests/proofs +++ b/tests/proofs @@ -1 +1 @@ -Subproject commit ef26a7cd6d06ca337da6ec4ca4f4b554bd28d8d0 +Subproject commit 455a504cf04fef7984561970335bfa011045e233 diff --git a/tests/interactive/log3_MaxTopic_d0g0v0.json.out b/tests/templates/output-success.json similarity index 92% rename from tests/interactive/log3_MaxTopic_d0g0v0.json.out rename to tests/templates/output-success.json index 635449eaef..3fe267ceb8 100644 --- a/tests/interactive/log3_MaxTopic_d0g0v0.json.out +++ b/tests/templates/output-success.json @@ -19,28 +19,19 @@ .WordStack - - 0 - - - 0 - .List .List - - .List - .Set .Set - + .Map @@ -71,13 +62,19 @@ 0 + + 0 + 0 false - + + 0 + + .Set diff --git a/tests/templates/output-success.kast b/tests/templates/output-success.kast new file mode 100644 index 0000000000..b5532f1bba --- /dev/null +++ b/tests/templates/output-success.kast @@ -0,0 +1 @@ +``(``(.K),``(#token("0","Int")),``(`SUCCESS_ETHEREUM-SIMULATION`(.KList)),``(`DEFAULT_EVM`(.KList)),``(`.Map`(.KList)),``(``(``(`.WordStack_EVM-DATA`(.KList)),``(`.List`(.KList)),``(`.List`(.KList)),``(`.List`(.KList)),``(`.Set`(.KList)),``(`.Set`(.KList)),``(``(`.Map`(.KList)),``(`.WordStack_EVM-DATA`(.KList)),``(#token("0","Int")),``(#token("0","Int")),``(`.WordStack_EVM-DATA`(.KList)),``(#token("0","Int")),``(`.WordStack_EVM-DATA`(.KList)),``(`.Map`(.KList)),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("false","Bool")),``(#token("0","Int"))),``(``(`.Set`(.KList)),``(`.List`(.KList)),``(#token("0","Int"))),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(`.WordStack_EVM-DATA`(.KList)),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(`.WordStack_EVM-DATA`(.KList)),``(#token("0","Int")),``(#token("0","Int")),``(`[_]_EVM-DATA`(`.List{"_,__EVM-DATA"}`(.KList))),``(`.List`(.KList))),``(``(`.Set`(.KList)),``(`.AccountCellMap`(.KList)),``(`.List`(.KList)),``(`.List`(.KList)),``(`.MessageCellMap`(.KList))))) \ No newline at end of file diff --git a/tests/templates/output-success.txt b/tests/templates/output-success.txt deleted file mode 100644 index dd657d19cb..0000000000 --- a/tests/templates/output-success.txt +++ /dev/null @@ -1 +0,0 @@ -``(``(.K),``(#token("0","Int")),``(`SUCCESS_ETHEREUM-SIMULATION`(.KList)),``(`DEFAULT_EVM`(.KList)),``(`.Map`(.KList)),``(``(``(`.WordStack_EVM-DATA`(.KList)),``(#token("0","Int")),``(#token("0","Int")),``(`.List`(.KList)),``(`.List`(.KList)),``(`.List`(.KList)),``(`.Set`(.KList)),``(``(`.Map`(.KList)),``(`.WordStack_EVM-DATA`(.KList)),``(#token("0","Int")),``(#token("0","Int")),``(`.WordStack_EVM-DATA`(.KList)),``(#token("0","Int")),``(`.WordStack_EVM-DATA`(.KList)),``(`.Map`(.KList)),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("false","Bool"))),``(``(`.Set`(.KList)),``(`.List`(.KList)),``(#token("0","Int"))),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(`.WordStack_EVM-DATA`(.KList)),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(#token("0","Int")),``(`.WordStack_EVM-DATA`(.KList)),``(#token("0","Int")),``(#token("0","Int")),``(`[_]_EVM-DATA`(`.List{"_,__EVM-DATA"}`(.KList))),``(`.List`(.KList))),``(``(`.Set`(.KList)),``(`.AccountCellMap`(.KList)),``(`.List`(.KList)),``(`.List`(.KList)),``(`.MessageCellMap`(.KList)))))