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
- 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
// -----------------------------------
// 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
@@ -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
...
rule #revert ~> #return RETSTART RETWIDTH
- => #popCallStack ~> #popWorldState ~> #popSubstate
+ => #popCallStack ~> #popWorldState
~> 0 ~> #push ~> #refund GAVAIL ~> #setLocalMem RETSTART RETWIDTH 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
@@ -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 ...
- rule #revert ~> #codeDeposit _ => #popCallStack ~> #popWorldState ~> #popSubstate ~> #refund GAVAIL ~> 0 ~> #push ...
+ rule #exception ~> #codeDeposit _ => #popCallStack ~> #popWorldState ~> 0 ~> #push ...
+ 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
requires #sizeWordStack(OUT) <=Int maxCodeSize < SCHED >
- rule #mkCodeDeposit ACCT => #popCallStack ~> #popWorldState ~> #popSubstate ~> 0 ~> #push ...
+ rule #mkCodeDeposit ACCT => #popCallStack ~> #popWorldState ~> 0 ~> #push ...
SCHED
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
-
-
-
-
-
- 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 @@
-
- 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 @@
-
- 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)),``(``(`