Вы находитесь на странице: 1из 97

Priority:

Research
Research
enhancment
bug
Research
guido
enhancment
maybe
maybe
maybe
maybe
maybe
someday (Felix)
someday
someday
someday
someday
someday
someday

beforeMetropolis
testcase
testcase
testcase
testcase
testcase
retesteth
Yooichi
enhancment
Yoichi
enhancment
bug
enhancment

slow updates
research
afterMetropolis
afterMetropolis
testcase

done
done
done
done
done
now
done
now

now
done
now
done
done
done
done
done
now
now
now
done
????
done
now
now

done
done
done
done
done
done
done
done
done
done
done
done
done

done
done
done

done
done
done
done
done
done

done
done
done
done
done
done
done
done
done
done
done
done
done
done
done
done

done
done
now
now
done
done
done

done
done
done
done

done
done
question
done
now
done
now
now

done
done
research done
done
done
done
progress done

done
done
done
done
done
done
done

done
done
done
done
done
done
done

done

done
done
done
done
done
done
done
done
done
done
done
done
done
>>
>>
>>
>>
>>

done
done
>>
done
done
enhancment
>>
>>
>>
>>
>>
done
>>
done

issue
done
done
done
done
done

done
done
done
done

done
done
done
done
done
done
done
done

done
done
done
done
done
done
done
done
done
done
done
done
done

done
done
done
done
done
done
done
done
done
done
done
done
done
done
done
done

Jared
Yooichi
Yoichi
Jared
Yooichi

done
done
done
done
done
done
done
done
done
done
done
done
done
done
Youichi

done
done
done
done
done
done
done
done
done
done

done (Yoichi)
done
done (Yoichi)
done
done
done (Yoichi)
done (Yoichi)
done
done (Yann)
done
done
done
done
TODO:
both:: define boost test suites in a macro (so not to loose a test folder in BCGenST <> GenST
testeth on threads
disable random test at macOS9 build
add -a option to RPC tests in test repo. https://github.com/ethereum/cpp-ethereum/issues/4582
libFuzz path coverage with fuzzed tests
integrade libfuzer corpus files into random tests generator
genesis block larger thatn 0 in blockchain tests
add docs on Blockchain test fillers
review revert tests. classify scenarious
more comments and descriptions of functions in the codebase
optimize changeLog copy operations in stateTests for --statediff (dont copy the vector in functions while return if --state
add parity to fuzztesting
add transaction RLP to state tests
Add RPC test asking for non-existing transaction receipt. RPC tests research. why RPC tests failing on Azure?
fix gasUsed https://github.com/ethereum/tests/blob/develop/BlockchainTests/bcValidBlockTest.json#L711 : a gasUse
make testeth to correct wrong boost cases names (print suggestions). enhancment
Limit memory usage on tests to 1 GB, move other tests to --memory flag
migrate from json_spirit to faster json engine. research if it's faster first
TODO: implement dataObject on smart pointers (retesteth)

check callcode oog on initial fee


more blockgas limit tests around minimum gaslimit
all possible situations with precompiled (see in crossTests)
check that returndatabuffer is empty when create fails with RETURN, STOP, REVERT, SELFDESTRURCT
add transaction test with chainid > 110
`codesize` works when deploying, but `extcodesize` does not.
RPC test suite TODO: implement rpc response sheme check (after Constantinople)
enhance tests for zeroKnowledge. Add odd input like for modexp
make genesis config to load accounts code from external file
not setting returndata buffer after `REVERT`
add unit test with all valid opcodes as LLLC being checked that are compiled correctly to Travis
JUMPDEST in LLL might be broken. need to rewrite those tests. connsider using Julya + yaml sources
change invalid transaction state tests into forged blockchain tests

YP review and better documentation for evm


lllc alternatives ? test sources in yml files and julya syntax
copy VMTests into GeneralStateTests or convert VMTests into hive tests (better)
review the blockchain tests that dropp invalid transactions before including it into block
https://github.com/ethereum/tests/issues/380

testeth should error when data or code not prefixed by 0x (branch testethdata0x)
testeth should error when test filename is too long
retesteth docker
-DSANITIZE=thread
TMPDIR=/dev/shm

test sources should have info wether transaction should produce a valid block. so to wait a client for a block or give it som
if it is set to large value there should be a way to tell that block is expected to be invalid. or that a mining operation resul
testeth should have an idea of what client is currently doing ( verifying a block / or that a block is rejected as invalid)

https://github.com/ethereum/tests/issues/553 (move statetests with DIFFICULTY AND GASLIMIT to BC)

restore retesteth --filltests support on time-long tests. the check double keys function is heavy
retesteth docker autobuild?
retesteth fix socket error on large amount of data (read interrupt on the middle of a file)
optimize bcExploitTest (on aleth side)
both:: check for test folders that does not have a testsuite defined for it
test_minBlocks(x,y) where y is timeout parameter
aleth should export transaction with 27/28

fix testfillers for retesteth retesteth:40, tests:603


retesteth parse fork names from config files, retesteth:39, tests:602
retesteth check empty folders, retesteth print test suggestions, retesteth::38
retesteth wiki docs, tests:601
retesteth multithread support for TCP sockets retesteth:36, tests:599
remove redundunt expect section from tests tests:599
aleth NoReward Engine, aleth::5618
retesteth stability on running, filling, blockchainfilling the state tests retesteth:36, tests:599

retesteth restore state tests to blockchain tests generation: retesteth:36


Swarm summit madrid
retesteth blockchain tests filling support (from state tests)
retesteth refactoring exceptions: retesteth:33
retesteth add ipc-debug config: retesteth::27
retesteth support: help Alexy to make geth to work with retesteth, retesteth wiki, tests:598
testeth support: communication talks, skype meetings, PR review
testeth print test name suggestions upon wrong input of -t, aleth::5588, retesteth::35
contact other clients Devs for test RPC implementation, look for test hiring person, external communications
testeth: add stTimeConsuming tests. aleth::5576
Communication talks and calls with other devs for retesteth integration (trinity/go/python)
Core Devs in Berlin
test_mineblocks timeout aleth::5563
testeth add check of unused testsuite folders
retesteth refactoring, retesteth::27
testeth support: communication talks, skype meetings, PR review

retesteth docker image build instructions


testeth support: aleth::5530, aleth::5529, aleth::5527
retesteth BlockchainTests execution support, retesteth::24, tests::594
retesteth restore circle builds, retesteth::24, integrate cable
debug and improve retesteth stability on theads, thread safe support
retesteth calculate correct hash for a json/yaml test file
debug retesteth failures with latest aleth
testeth stateHash of a state with mining rewards for StateTests, aleth::5520
retesteth yaml support, retesteth::22
cpp::5514
retesteth fix to work with latest aleth (retesteth::22), fix tests::590
testeth support: communication talks, skype meetings, PR review
tests::573

constantinopleFix tests finalization


testeth support: communication talks, skype meetings, PR review
issue aleth::5459

ConstantinopleFix . aleth::5443, tests::582, tests::583


remove ethashclient aleth::5434
Retesteth::22, Tests::572
Tests::578, 579, 580
cpp issue::5414, CPP::5416, Tests::577
testeth support: communication talks, skype meetings, PR review

sar combinations tests, Tests::574


retesteth rpc tests:: 572, Retesteth::22
Tests::566, Tests::567, Tests::568, Tests::569
testeth support: communication talks, skype meetings, PR review
Tests::563, testeth --showhash option
CPP::5382, 5383
fix blockchain test filling issue, CPP::5194, Tests::561
update retesteth to support latest aleth version
make expect sections for Byzantium, Constantinople in GeneralStateTests
extcodehash tests: Tests::552, Tests::551
update retesteth: support new test hash function.
blockchain transition tests, Tests:547 + fix python json check
difficulty bomb tests (BasicTests/difficultyConstantinople)
more sstore tests combinations:
testeth support: tests PR discussions, PR review
testeth support: communication talks on tests after devcon

testeth support: help other devs with failing tests


Tests::526, 528, 529, 535 stSStoreTest
Tests::484 stExtcodehash tests
CPP::5194, fix issues in cpp and update tests, CPP::5314, Tests::525
difficulty verification on NoProof: fix tests, fix testeth (CPP::5311, Tests::520)
refactor and finish CPP::5154, Tests::517
CPP::5299, 5304

testeth support CPP::5241, Issues review, coordination calls


create2 tests. debug issues. tests::496, tests::497, tests::499, tests::502, Tests::505, Tests::506, Tests::508, Tests::509
add PUSH32 test as a state test (0xpush32 but 31 bytes following check the gasusage)
refill ass tests and fix the issues, Tests::511, CPP::5154

make extcodehash tests rodamap


make create2 tests roadmap
fix data races in Client.cpp CPP::5161
retesteth support client configs in external files, run tests on different clients
testeth support: CPP:5219
testeth support: fix sar tests, CPP::5188, CPP::5219, issue review, retesteth WIKI: github.com/ethereum/retesteth/wiki/
remove Ethash.cpp CPP::5179 (on hold)
create2 tests. CPP::5194, Tests::486, Tests::490, Tests::491, Tests::494, Tests::495

tests PR:475 more tests around CREATE going OOG


synchronous block mining and transaction export CPP PR:5111, CPP:5112
RPC tests for clients in retesteth, CPP PR:5114
HTTP over TCP support in retesteth
Allow codeFromFile field cpp issue 5136
blockchain tests without PoW check. CPP::5147
TODO:: fix filler hash check on different OS

replace test_addBlock with test_importRawBlock CPP::5082


CPP::5030 json verification of chain params. fix issues from the review
testeth support CPP::5083, CPP::5086
cpp client RPC tests support: CPP::5082, CPP::5085
fix mining on blockchain tests. fix debug messages. mining block1for
unit tests for test_importRawBlock
cpp client RPC tests support: CPP::5098, CPP::5100

string test_getLogHash(txHash) CPP::4986


testeth refactoring: CPP::5011. updating for new changes
fix testeth to work on retesteth test branch
optimize retesteth: remove race condition and fix thread sanitizer issues
CPP::5030 json verification of chain params
CPP:5041 fix testeth --exectimelog option
retesteth + cpp blockchain tests support

prs to CPP: additional tests for cpp pull requests. CPP::4922


retesteth on threads refactoring
implement transaction signing in retesteth
prs to CPP: move transaction checks from sealEngine to sealEngineFace
prs to CPP: test_closeClient method (dropped)
CPP PR: 4934 (fix testeth random code test)
retesteth close popen client instances by sending SIGTERM
refactor retesteth to use existing eth_ rpc methods instead test_getPostState

Investigate cpp client issues on tests via rpc. develop rpc methods
rewrite old testeth test execution logic
ethCC event
retesteth refactoring. rewrite old logic of testeth.
test filling through RPC
fix cpp client issue with OOG transactions
review test failures with RPC methods
fix remaining tests failing via rpc
merge changes to cpp-ethereum
optimize retesteth: make retesteth to run on threads
Berlin Team Meeting
Fix empty expect section tests
Split testeth from cpp-ethereum, start testeth via rpc project, +++
configure github repo/automatition scripts for retesteth project
read the contents of json into data structures, rewrite importTest.cpp
configure cpp client test rpc methods
read state test and execute it with cpp client via rpc
fix cpp client on failing tests via rpc

add more tests where function arguments are 0 but not const. (chfast request)
support wasm in testeth
add wasm test suite to testeth
better testeth error when json is malformed
testeth support PR review 4754, 4783, 4779
reduce the amount of tests which are not useful
move makeBlockchainTests out of state tests into separate function
replace networks vector with set in testeth
expand expect section network field
testeth should fill tests only on networks that set in expect section
optimize and update the tests
debug macos random state test issue
store randomcode seed on macos
review cpp-ethereum testeth issues

https://github.com/ethereum/cpp-ethereum/pull/4683
fix remaining issues, finish and merge pull requests
read .yaml test sources
fix travis '.' output when using testeth debug options
ethvm/ethvm --network Constantinople --code 67FFFFFFFFFFFFFFFF600160006000FB
@winsvega I've found a bug in EVMJIT -- incorrectly putting CREATE returned address in RETURNBUFFER.
Can you check there is a opposite case somewhere in tests: when CREATE fails and returns error message and this mess
testeth should trow an error if code field in compiled test is empty while not being empty in source file
convert testeth sources with clang format
create random test refactoring
replace lll code in transaction data

create random test from seed option


fix test name check when using --singletest
https://github.com/ethereum/tests/blob/develop/src/GeneralStateTestsFiller/stStaticCall/static_CALL_ZeroVCallSuic
make createRandomTest options loadable from config file
run --singletest <pathToFile> a test withoug filler
make general transaction tests
testeth should throw a warning id -d -g -v not found a transaction in compiled test
add options to createRandomTest

if there is a test but there is no filler for that test. testeth should throw a warning. check filler hash in the final test
Fix test fillers
check that test .json is update with Filler.json compare hash of the filler
"_info" : { "comment" : "Simple test", from source test. should go to the filled test
add TMPDIR=/dev/shm to runalltests script
split large test suitest into smaller ones for better in threads execution
add modexp with fuzzed input discovered by guido fuzztool
add a test with bytecode 6001600160000360003e00
check that transaction arrays are not empty in testeth
refactor fuzzTesting code in cpp-ethereum
make determenate randomCode generator (from seed)
create with huge value in staticcall
move zeroSigTransaction tests into a pending PR in tests repo

split Transaction and VMtests into separate files


rebuild testeth docker
tests support: PR review, discussions and calls. testeth refactoring, keep hive tests updated
add --version option for testeth
enhance tests for zeroKnowledge we could easily add gas below 100000 and slightly above 100000 and above 180
update precompiled gas prices, regenerate hive tests (2d)
add Transaction test for V value range 1f....0xffff. add crashing transaction from issue https://github.com/ethereum/tes
separate bench tests under --all flag
fix total difficulty leafs test. check that cpp throws when address collision
fix ctest cmake to parse all suites with any depth
more extcodecopy tests
review Issues in tests repo. resolve whats possible
make difficulty tests for Byzantium as .json files
optimize testeth + "/" + filepath construction to boost crossplatform "/"
fix createRandomTest no output issue, make random code options constant
refactor executeTests function in testeth

add tests for all opcodes in init code that are valid
the test case would contain two pairs (g1a, g2a), (g1b, g2b)
Throw an exception if collision happens createJS_ExampleContract
add test where SSTORE in init code
make getTestPath to return boost::path

--jsontrace testeth option


disable Frontier and Homestead tests run (move it under --perfomance --all flag)
update hive tests for Byzantium and Constantinople
fix tests for Metropolis -> Byzantium and Constantinople split
remove checkstate option (enable it by default)
update testeth documentation to cpp-ethereum/docs
clean up // comment fields from the tests on filling stage
setup a test server for random and swarm tests
make a random test generation option for the testeth
logs field in general state tests with a hash + remove old fields from state test fillers (random tests: logs, out)
setup fuzzserver and configure geth and testeth to run random tests
add randomTest642 a call to 007 precompile issue fails on geth
fuzz testing using testeth. compare results with geth
tests support: PR review, discussions and calls. testeth refactoring
fix hive tests

geneal blockchain tests


make faster blockchain mining generation
testeth stop execution if unknown network is specified for --singlenet
add implicit field specifiyng the network for blockhain tests
remove old state test code
check that sum of gas (preState) == sum of gas (postState) {State Tests}
upgrade TransitionNetTest to Frontier->Homestead, Homestead->EIP150, EIP150->EIP158, EIP158->Metropolis or m
fix test fillers with transaction creation by old rules on Metropolis
fetching up tests with latest develop (regenerate Hive tests)
add a test run of a blockchain tests generated from state tests (hive tests to develop) (!will double the test time)

testeth throw if gen state test has multiple json object in one file.
limit gasLimit to reasonable value. Vitalik suggested 250M gas cap for the tests (stBounds)
check odd length of hex fields when filling the tests. fix pairing test missed 0
move Blockhash tests from stateGeneral to Blockchain tests
do not touch other test files when using --singletest with state tests
add vitalik fillers for modexp https://github.com/ethereum/pyethereum/tree/state_revamp/precompile_tests_temp
reveiw RevertDepthCreateAddressCollisionFiller
add information field to the final test file (filled with client: cpp-ethereum. commit version)
fix eip86Create PR failing on frontier tests
merge EIP86 PR to develop
revive random code option in testeth
more staticcall tests
check all blockchain tests on Metropolis
(impossible because of regparse scan for tests)
boost test does not suuport multithreading
try fix it. no way to reproduce or log the error
it does not help
guido did it himself. any help needed? would be nice to research
https://github.com/ethereum/cpp-ethereum/issues/4515#issuecomment-330246206
not supported
CPP Progress
https://github.com/ethereum/cpp-ethereum/issues/4050

turn if --statediff not set)

https://github.com/ethereum/tests/issues/377
711 : a gasUsed: "0x64" in genesis . Is that the intent of the test?

ask if anyone still have issues with that

https://github.com/ethereum/tests/issues/438#event-1540782928

check that it is true

https://github.com/ethereum/cpp-ethereum/issues/4519

Pksa: 670 STRJ


Ann: 19 etc
https://github.com/winsvega/yellowpaper/blob/master/evm.rst
testeth should support lllc / wasm / julya compilation
EVM Manual
https://workflowy.com/s/Pnm.ca8tPgXP3c#/61425dc12501
add new testcase group https://github.com/winsvega/yellowpaper/blob/master/evm.rst

https://github.com/ethereum/cpp-ethereum/issues/4287
https://github.com/ethereum/cpp-ethereum/issues/4090

k or give it some time to figure out that block is invalid. tests depend on client response about successfull block mining time.
eration resulted in bad block (better option)

0
56

8
4
6
8
8
4
2
16

16
0
4
8
4
21
4
20
146/22

165/54

135/6.5

110/39.3

135
115

210

testeth/wiki/RPC-Methods
https://github.com/ethereum/retesteth/issues
https://github.com/ethereum/retesteth

https://github.com/ethereum/retesteth/pull/11
https://github.com/ethereum/retesteth/pull/11
https://github.com/ethereum/tests/pull/389
https://github.com/ethereum/cpp-ethereum/pull/4744
https://github.com/ethereum/cpp-ethereum/pull/4754
https://github.com/ethereum/cpp-ethereum/pull/4764
https://github.com/ethereum/cpp-ethereum/pull/4794

https://github.com/ethereum/cpp-ethereum/pull/4777
https://github.com/ethereum/cpp-ethereum/pull/4801
https://github.com/ethereum/cpp-ethereum/pull/4804
https://github.com/ethereum/cpp-ethereum/pull/4809
https://github.com/ethereum/tests/pull/413
https://github.com/ethereum/cpp-ethereum/pull/4787
https://github.com/ethereum/cpp-ethereum/pull/4789

debug

https://github.com/ethereum/cpp-ethereum/pull/4696
https://github.com/ethereum/tests/pull/386
https://github.com/ethereum/tests/pull/375/files#diff-851d485e8819932e5b34a7a273b632c0R35
and this message should be placed in RETURNBUFFER.
cancelled by Pawel
https://github.com/ethereum/cpp-ethereum/pull/4724
https://github.com/ethereum/cpp-ethereum/pull/4735

check the return value of staticcall https://github.com/ethereum/tests/blo


basicOptions + refactoring + more options
refactoring
rebase
merge

https://github.com/ethereum/tests/pull/365/files#diff-577295cbb9de725d230ee76a0e099ae3R67

nd above 180000 to existing general state tests.

ethereum/tests/issues/143
difficulty does not affect the blockchain tests. reduced mining threads to 1.
still lots of exec time spent on starting and stopping the mining thread
blockchain test network now defined in "network" section in .json files
TransitionNetTest not affected.
tropolis or maybe general transition test?

https://github.com/ethereum/cpp-ethereum/issues/4130
uecomment-330246206

ethereum/cpp-ethereum/issues/4050

Returned:
Loan: 30 eth (6700) + 30 eth (8500) -607500
(1M rur)

om/s/Pnm.ca8tPgXP3c#/61425dc12501
winsvega/yellowpaper/blob/master/evm.rst

t response about successfull block mining time.

June 2018

May 2018
May 2018
May 2018
May 2018
May 2018
May 2018
May 2018
April 2018
April 2018
April 2018
April 2018
April 2018
April 2018
April 2018
April 2018

March 2019
March 2019
March 2019
March 2019
March 2019
March 2019
March 2019
March 2019
March 2019
March 2019
March 2019
March 2019
March 2019

February 2019
February 2019
February 2019

January 2019
January 2019
January 2019
January 2019
January 2019
January 2019

December 2018
December 2018
December 2018
December 2018
December 2018
December 2018
November 2018
November 2018
November 2018
November 2018
November 2018
November 2018
November 2018
November 2018
November 2018
November 2018

October 2018
October 2018
October 2018
October 2018
October 2018
October 2018
October 2018

September 2018
September 2018
September 2018
September 2018

August 2018
August 2018
August 2018
August 2018
August 2018
August 2018
August 2018
August 2018

July 2018
July 2018
July 2018
July 2018
July 2018
July 2018
July 2018

June 2018
June 2018
June 2018
June 2018
June 2018
June 2018
June 2018

May 2018
May 2018
May 2018
May 2018
May 2018
May 2018
May 2018

April 2018
April 2018
April 2018
April 2018
April 2018
April 2018
April 2018
April 2018

March 2018
March 2018
March 2018
March 2018
March 2018
March 2018
March 2018
March 2018
March 2018
February 2018
February 2018
February 2018
February 2018
February 2018
February 2018
February 2018
February 2018

January 2018
January 2018
January 2018
January 2018
January 2018
January 2018
January 2018
January 2018
January 2018
January 2018
January 2018
January 2018
January 2018
January 2018

December 2017
December 2017
December 2017
December 2017
December 2017
December 2017

December 2017
December 2017
December 2017
December 2017

November 2017
November 2017
November 2017
November 2017
November 2017
November 2017
November 2017
November 2017

October 2017
October 2017
October 2017
October 2017
October 2017
October 2017
October 2017
October 2017
October 2017
October 2017
October 2017
October 2017
October 2017

September 2017
September 2017
September 2017
September 2017
September 2017
September 2017
September 2017
September 2017
September 2017
September 2017
September 2017
September 2017
September 2017
September 2017
September 2017
September 2017

September 2017
September 2017
September 2017
September 2017
September 2017

August 2017
August 2017
August 2017
August 2017
August 2017
August 2017
August 2017
August 2017
August 2017
August 2017
August 2017
August 2017
August 2017
August 2017
August 2017

July 2017
July 2017
July 2017
July 2017
July 2017
July 2017
July 2017
July 2017
July 2017
July 2017

Jun 2017
Jun 2017
Jun 2017
Jun 2017
Jun 2017
Jun 2017
Jun 2017
Jun 2017
Jun 2017
Jun 2017
Jun 2017
Jun 2017
Jun 2017
0 0 52.08
Phanteon Client

Python Client

Piper Devs

Russian Client

American Fast ETH fork


Ongoing communication. Reaching to the devs

SyncUp with Anuj.

Asked for a call. on Discord in tests room. reach to the devs

Way to occupied to work on test RPC

Unresponsive. Occupied probably


New Test Hiring
Dean ???
James Hancock
Tests:
https://github.com/ethereum/tests/blob/develop/BlockchainTests/TestNetwork/bcMetropolis.json
more tests once Blockchain tests will be checked against Metropolis rules

Difficulty calculation tests


Dimitry Parent block has uncles
Dimitry Parent block has no uncles
Dimitry Difficulty of transition to Metropolis block
Dimitry Difficulty check on and after transition point to constantinople block
Large timestamp difference with parent block - check that difficulty change is limited
Dimitry Parent block has two uncles
Dimitry ucle difficulty. uncle from before the transition point
blockchain tests with genesis number > 0.

add block gasLimit tests around minimum block gaslimit

Dimitry Difficulty formula tests for Constantinople


difficulty tests
Network/bcMetropolis.json https://github.com/ethereum/tests/tree/develop/BasicTests

https://github.com/ethereum/tests/pull/547
https://github.com/ethereum/tests/pull/547

https://github.com/ethereum/tests/pull/547

???
https://github.com/ethereum/tests/pull/547
https://github.com/ethereum/tests/issues/318

(needed to test KEVM, which does not specify the min gas limit)

https://github.com/ethereum/tests/blob/develop/BasicTests/difficultyConstantinople.json
=>>>>>>>>
=>>>>>>>>

Dimitry

Dimitry
Dimitry
Dimitry
Dimitry
extcodehash / extcodesize Dimitry
extcodecopy / extcodecall Dimitry
Dimitry

Jared
Jared
Jared
Dimitry
Dimitry
Dimitry
Hugo
Hugo
Hugo

Hugo

Dimitry
Dimitry
Adrian
Adrian
Adrian
Adrian
Adrian
Adrian
https://github.com/ethereum/pm/issues/53
Would be great
would make to duplicate
sense this extcodecopy
to also test cases for EXTCODESIZE as test
in all of the well cases
+++++above?
and EXTOCODECOPY
requires review and changing th
could be done in a separate PRs. not Constantinople related.

contract A exists. delete contract A. create a new version of contract A. (using create2 trick) check EXTCODEHASH of A
https://github.com/ethereum/tests/issues/493, CODECOPY and EXTCODECOPY where codesize = 0

check EXTCODEHASH of a contract that is being created in a subcall. (call contract. go subcall. create contract
create contract A in a subcall. go OOG in a subcall (revert happens) check EXTCODEHASH of A (in upper call)
https://github.com/ethereum/tests/issues/558
EXTCODEHASH of empty account, then CREATE or (subcall/opcode return
CREATE2 over it, more data then
EXTCODEHASH expected)
again.
This should check that code hash cache is correctly updated during the transaction.
one
A more related topic test
delegatecall/callcode case:
to C https://github.com/ethereum/tests/issues/438
(C has selfdestruct)
A selfdestructed. returned to B. now we could check extcodehash of A (in account B code)
convert fuzzer extcodehash (https://gist.github.com/holiman/606b4e6317d8a954f2586a3d1624c343#file-rep

EXTCODEHASH in CALL
EXTCODEHASH in CALLCODE
EXTCODEHASH in STATICCALL
EXTCODEHASH in DELEGATECALL
EXTCODEHASH in contract init code
EXTCODEHASH in transaction init code
EXTCODEHASH of cotract with codesize equal to maxcodesize - 1
EXTCODEHASH of all precomiles addresses 1-8
EXTCODEHASH of empty account, of non existent account (see /src/GeneralStateTestsFiller/stEIP158Specific

account A is already in the state, transaction to a contract delete this account A and then execute EXTCODEHASH
1)
callaccount A accountA
-> sstore already inhash
the state. with
to 1. exit thethe call
call. -> sstore
another callaccountA hash to 1->
(same transaction) ->run
runselfdesturct
selfdesturctofofAA. exit
-> ssto
call. another c

*3) *4) are same but account A is created on the fly and not set before the first call.
3d transaction (sstore 2 codehash(a))
check by expect section sstore value of 1 and 2.
6) same as above but account is being created by the first transaction.
transaction to a contract create account A then execute EXTCODEHASH on that account A
transaction to a contract create account A then delete account A then execute EXTCODEHASH A
a contract execute EXTCODEHASH of itself
a contract execute EXTCODEHASH with address being a dynamic argument
a contract execute EXTCODEHASH of itself during the init code
check EXTCODEHASH of A, change storage, nonce, balance of A, check EXTCODEHASH again
w and changing the test sources to also sstore and check the value of extcodecopy

TCODEHASH of A
https://github.com/ethereum/tests/pull/569

https://github.com/ethereum/tests/pull/563
https://github.com/ethereum/tests/pull/563
potential BUG https://github.com/ethereum/tests/pull/567
https://github.com/ethereum/tests/pull/566
https://github.com/ethereum/tests/pull/567
https://github.com/ethereum/tests/pull/568
https://github.com/ethereum/tests/pull/551

https://github.com/ethereum/tests/pull/484
https://github.com/ethereum/tests/pull/484
https://github.com/ethereum/tests/pull/484
https://github.com/ethereum/tests/pull/484
https://github.com/ethereum/tests/pull/484
https://github.com/ethereum/tests/pull/484
https://github.com/ethereum/tests/pull/542
https://github.com/ethereum/tests/pull/542
https://github.com/ethereum/tests/pull/542

https://github.com/ethereum/tests/pull/543
https://github.com/ethereum/tests/pull/543
https://github.com/ethereum/tests/pull/543
https://github.com/ethereum/tests/pull/543

https://github.com/ethereum/tests/pull/552
https://github.com/ethereum/tests/pull/552
https://github.com/ethereum/tests/pull/548
https://github.com/ethereum/tests/pull/549
https://github.com/ethereum/tests/pull/544
https://github.com/ethereum/tests/pull/544
https://github.com/ethereum/tests/pull/544 need to precalculate determenistic address
https://github.com/ethereum/tests/pull/550
https://github.com/ethereum/pm/issues/53

Dimtiry https://github.com/ethereum/tests/issues/564
Dimitry sar00Filler.json
Yooichi sar01Filler.json
Yooichi sar10Filler.json
Yooichi sar11Filler.json
Dimitry sar_0_256-1Filler.json
Yooichi sar_2^254_254Filler.json
Yooichi sar_2^255-1_248Filler.json
Yooichi sar_2^255-1_254Filler.json
Yooichi sar_2^255-1_255Filler.json
Yooichi sar_2^255-1_256Filler.json
Yooichi sar_2^255_1Filler.json
Yooichi sar_2^255_255Filler.json
Yooichi sar_2^255_256Filler.json
Yooichi sar_2^255_257Filler.json
Yooichi sar_2^256-1_0Filler.json
Yooichi sar_2^256-1_1Filler.json
Yooichi sar_2^256-1_255Filler.json
Yooichi sar_2^256-1_256Filler.json
Yooichi shl01-0100Filler.json
Yooichi shl01-0101Filler.json
Yooichi shl01-ffFiller.json
Yooichi shl01Filler.json
Yooichi shl10Filler.json
Yooichi shl11Filler.json
Yooichi shl_-1_0Filler.json
Yooichi shl_-1_1Filler.json
Yooichi shl_-1_255Filler.json
Yooichi shl_-1_256Filler.json
Yooichi shl_2^255-1_1Filler.json
Yooichi shr01Filler.json
Yooichi shr10Filler.json
Yooichi shr11Filler.json
Yooichi shr_-1_0Filler.json
Yooichi shr_-1_1Filler.json
Yooichi shr_-1_255Filler.json
Yooichi shr_-1_256Filler.json
Yooichi shr_2^255_1Filler.json
Yooichi shr_2^255_255Filler.json
Yooichi shr_2^255_256Filler.json
Yooichi shr_2^255_257Filler.json
combinations https://github.com/ethereum/tests/pull/574
sar00 test
Add Fillers for SAR tests
Add Fillers for SAR tests
Add Fillers for SAR tests
sar 0 256-1 test
Add Fillers for SAR tests
Add Fillers for SAR tests
Add Fillers for SAR tests
Add Fillers for SAR tests
Add Fillers for SAR tests
Add Fillers for SAR tests
Add Fillers for SAR tests
Add Fillers for SAR tests
Add Fillers for SAR tests
fix sar 2^256 0 test
Add Fillers for SAR tests
Add Fillers for SAR tests
Add Fillers for SAR tests
Rename duplicated keys in filler JSON files
Rename duplicated keys in filler JSON files
Rename duplicated keys in filler JSON files
Rename duplicated keys in filler JSON files
Rename duplicated keys in filler JSON files
Rename duplicated keys in filler JSON files
Rename duplicated keys in filler JSON files
Rename duplicated keys in filler JSON files
Rename duplicated keys in filler JSON files
Rename duplicated keys in filler JSON files
Rename duplicated keys in filler JSON files
Add fillers for SHR tests
Add fillers for SHR tests
Add fillers for SHR tests
Add fillers for SHR tests
Add fillers for SHR tests
Add fillers for SHR tests
Add fillers for SHR tests
Add fillers for SHR tests
Add fillers for SHR tests
Add fillers for SHR tests
Add fillers for SHR tests
https://github.com/ethereum/pm/issues/53

In preparation for EIP-1087.

For a single SSTORE of a given key, we have following cases:


Dimitry z: 0 -> 0 (zero),
Dimitry a: 0 -> X (added), (covered above)
Dimitry d: X -> 0 (deleted),
Dimitry m: X -> Y (modified)
Dimitry u: X -> X (unchanged).
Dimitry BUG!!! https://gist.github.com/holiman/0399d4962b40a1df5d493b2cc08fd2f2#file-sstorec

Now let's create a set of test cases where we combine each possibility in
Dimitry zz: 0 -> 0 -> 0
Dimitry za: 0 -> 0 -> X
Dimitry ad: 0 -> X -> 0
Dimitry am: 0 -> X -> Y
Dimitry au: 0 -> X -> X
Dimitry dz: X -> 0 -> 0
Dimitry da: X -> 0 -> X
Dimitry da2: X -> 0 -> Y
Dimitry md: X -> Y -> 0
Dimitry mm: X -> Y -> Z
Dimitry mm2: X -> Y -> X
Dimitry mu: X -> Y -> Y
Dimitry ud: X -> X -> 0
Dimitry um: X -> X -> Y
Dimitry uu: X -> X -> X

Dimitry ada: 0 -> X -> 0 -> X


Dimitry dad: X -> 0 -> X -> 0

Dimitry account already has storage X. create -> in init code change that account'
Dimitry account already has storage X. create -> in init code change that account'
i.e. SSTORE, then DELEGATECALL or recursive CALL that does SSTORE of same slot.
Expected cost is the same as for the single frame.
Dimitry A test CASE LIST
initial storage call type
0 CALL
1 CALLCODE
2 DELEGATECALL
STATICCALL

6912 testcases
https://github.com/ethereum/EIPs/pull/1087/files

SSTORE in different type of calls tests. change -> call -> change + revert scenarious
1change -> call -> change2 -> exit call change2 UPDATE:
https://github.com/ethereum/tests/pull/526 https://github.com/ethereum/tests/pull/528
https://github.com/ethereum/tests/pull/526 https://github.com/ethereum/tests/pull/528
https://github.com/ethereum/tests/pull/526 https://github.com/ethereum/tests/pull/528
https://github.com/ethereum/tests/pull/526 https://github.com/ethereum/tests/pull/528
https://github.com/ethereum/tests/pull/526 https://github.com/ethereum/tests/pull/528
https://github.com/ethereum/tests/pull/526 https://github.com/ethereum/tests/pull/528

bine each possibility into sequence of two SSTORES:


https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529

https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529

https://github.com/ethereum/tests/pull/535 (use create collision)


https://github.com/ethereum/tests/pull/535 (use call from create2)
(uncovered)
but partly covered in combinations below
storage change call type in subcall action storage change aftercall action
0 CALL nothing 0 nothing
1 CALLCODE OOG 1 OOG
2 DELEGATECALL revert 2 revert
STATICCALL
https://github.com/ethereum/tests/pull/545
Dimitry done
Dimitry done
Dimitry done
Dimitry done

Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done

Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done

Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done

Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
Dimitry done
https://github.com/ethereum/pm/issues/53
Collision tests for CREATE2
collistion with nonzero balance
collision with nonzero nonce
collision with not empty storage
collision with not empty code
collision with precompiled [ probability 0 ]
collision with 0 address [ probability 0 ]
collision with address that has been selfdestructed in the same transaction + REVERT scenario + OOG scenari
collision with address that has been selfdesturcted by another transaction in the same block
collision with the contract that already has the same init code that we are about to create
A contract which performs SUICIDE, and is then attempted to be recreated (different code, same init-code) during
+ copy of collision tests with create2 init code being not empty + init code that return empty

Vitalik Buterin: Here's a test we should have:


[2:21:10] Vitalik Buterin: (i) set storage key 1 of contract C to 3. (ii) self-destruct contract C. (iii) in the next
[2:21:19] Vitalik Buterin: the read should give 0, not 3
[2:21:29] Vitalik Buterin: it has to be a block test, because it covers cross-transaction activity
[2:22:42] Vitalik Buterin: another one is: (i) self-destruct contract C, (ii) in the next transaction, send 1 wei to C
[2:23:01] Vitalik Buterin: the reason this is important now is that with EIP98, clients will be switching to not "
[2:23:18] Vitalik Buterin: and this means that selfdestruct has to be handled more carefully than before
[2:23:49] Vitalik Buterin: pyethereum screwed it up and it had to get fixed, though pyethereum's bug had to d

create2 fails with not enough cash (endowment of a new account) + inside staticcall
{(MSTORE8 0 0x56 ) (SELFDESTRUCT (CREATE2 1 0 1)) } + << selfdestruct is not necessary. init code is tested
{(MSTORE8 0 0x01 ) (SELFDESTRUCT (CREATE2 1 0 1)) }
{(MSTORE8 0 0xf4 ) (SELFDESTRUCT (CREATE2 1 0 1)) }
CREATE2 -> check SSTORE in init code + << try empty and non empty store
CREATE2 -> check SUICIDE in init code + << try balance/wbalance here
CREATE2 creates empty contract. no value, no init code.
invalid opcode in init code of CREATE2

CREATE_ContractSuicideDuringInit_ThenStoreThenReturn for CREATE2


CREATE2 suicide with value, CREATE2 sucide to itself + this cases during init of the CREATE2
CreateOOGafterInitCode for CREATE2
CreateOOGafterInitCodeReturndata 1,2,3 for CREATE2
CreateOOGafterInitCodeReturndataSize for CREATE2
CreateOOGafterInitCodeRevert 1,2 for CREATE2
CREATE BOUNDS tests for CREATE2
call_outsize_then_create_successful_then_returndatasize for CREATE2
call_then_create_successful_then_returndatasize for CREATE2
CALL precompiles during init code of CREATE2 contract
CREATE2 -> check NONCE, SENDER, contract ADRESS, CALLER in init code << try in different call types
CREATE2 inside CRETE2 inside CALL, CALLCODE, DELEGATECALL, STATICCALL << test values of SENDER,add
returndatacopy_0_0_following_successful_create for CREATE2
returndatacopy_afterFailing_create for CREATE2
returndatacopy_following_create for CREATE2
returndatacopy_following_revert_in_create for CREATE2
returndatacopy_following_successful_create for CREATE2
returndatasize_following_successful_create for CREATE2
RevertDepthCreateOOG for CREATE2
RevertInCreateInInit for CREATE2
RevertOpcodeCreate for CREATE2
RevertOpcodeInCreateReturns for CREATE2
CreateMessageReverted for CREATE2
create2 oog during the init code, + when create2 is from transaction init code. but oog still in create2 init code
create2 in init code on depth = 1024. account should not be created
create2 in init code on depth = 1023. account would be created
Call with value to address A, then another call X, in the callX CREATE2 of account A, OOG -> revert callX.
Create2 inside Create2 inside Create2 .... >, <, = 1024 times
Also similar case but instead of SELFDESTRUCT - return empty code. Second CREATE2 is rejected and we expect accoun
https://eips.ethereum.org/EIPS/eip-1014

https://github.com/ethereum/tests/pull/486
https://github.com/ethereum/tests/pull/486
https://github.com/ethereum/tests/pull/486
https://github.com/ethereum/tests/pull/486
CREATE2 must increase the nonce of the contract that is being c
CREATE2 with the empty init code should fail if the destination
https://github.com/ethereum/tests/pull/486
https://github.com/ethereum/tests/pull/486
https://github.com/ethereum/tests/pull/486
https://github.com/ethereum/tests/pull/486
https://github.com/ethereum/tests/pull/497

https://github.com/ethereum/tests/pull/490
https://github.com/ethereum/tests/pull/490
https://github.com/ethereum/tests/pull/490
https://github.com/ethereum/tests/pull/490
https://github.com/ethereum/tests/pull/490
https://github.com/ethereum/tests/pull/490
https://github.com/ethereum/tests/pull/490
https://github.com/ethereum/tests/pull/490

make a copy of all CREATE tests replacing create with new CREA
https://github.com/ethereum/tests/pull/491
https://github.com/ethereum/tests/pull/491
https://github.com/ethereum/tests/pull/491
https://github.com/ethereum/tests/pull/491
https://github.com/ethereum/tests/pull/491
https://github.com/ethereum/tests/pull/491
https://github.com/ethereum/tests/pull/491
https://github.com/ethereum/tests/pull/491

https://github.com/ethereum/tests/pull/494
https://github.com/ethereum/tests/pull/494
https://github.com/ethereum/tests/pull/495
https://github.com/ethereum/tests/pull/495
https://github.com/ethereum/tests/pull/495
https://github.com/ethereum/tests/pull/495
https://github.com/ethereum/tests/pull/496
https://github.com/ethereum/tests/pull/496
https://github.com/ethereum/tests/pull/496
https://github.com/ethereum/tests/pull/499
https://github.com/ethereum/tests/pull/502
https://github.com/ethereum/tests/pull/502
https://github.com/ethereum/tests/pull/502
https://github.com/ethereum/tests/pull/502
https://github.com/ethereum/tests/pull/502
https://github.com/ethereum/tests/pull/505
https://github.com/ethereum/tests/pull/505
https://github.com/ethereum/tests/pull/505
https://github.com/ethereum/tests/pull/505
https://github.com/ethereum/tests/pull/506
https://github.com/ethereum/tests/pull/506
https://github.com/ethereum/tests/pull/506
https://github.com/ethereum/tests/pull/506
https://github.com/ethereum/tests/pull/506
https://github.com/ethereum/tests/pull/508
https://github.com/ethereum/tests/pull/508
https://github.com/ethereum/tests/pull/508 (RevertDepthCreateAddressCollision)
https://github.com/ethereum/tests/pull/508
https://github.com/ethereum/tests/pull/509
f the contract that is being created
hould fail if the destination acount has non-zero nonce

acing create with new CREATESH:


Assignment Cases
Yoichi StaticCall -> CREATE2
StaticCall -> returnDataCopy
...

add suicide in init code to a contract. a) transaction sending founds to "" suicide occures to account x
b) transaction not sending funds, suicide occure in init code. no contract being created becase of the sui
c) account x is empty account in pre state. transaction not sending funds to "". in init code suicide occu

staticcall -> A | call -> A | delegatecall -> A | callcaode | means successfullty finish th

for each precompile


transaction call to | a call to | a transaction correct data that runs oog | a call that then leads to oog | a
1) non exist in state precompile
2) empty in state precompile
3) precompile that has only nonc
4) precompile that has only balan
5) precompile that has working c

div(timestamp, something-zero) but 'something-zero' is MSIZE or CALLDATALOAD

New! STATICCALL->CREATE(with big value) https://github.com/ethereum


STATICCALL->CALL(with only two stack elements) https://github.com/ethereum

Yoichi DoubleSelfdestructTest https://github.com/ethereum


Yoichi DoubleSelfdestructTest2 https://github.com/ethereum
DoubleSelfdestructTest3 https://github.com/ethereum
uicide occures to account x. check that no account been created and that x has balance that transaction was sending to "" (create)
g created becase of the suicide. account x unchanged.
". in init code suicide occures to account x. no contract being created because of the suicide. account x is cleaned because it was touc

ans successfullty finish the call and return to the callee to continue the execution

that then leads to oog | a Create to


exist in state precompile
ty in state precompile
ompile that has only nonce = 1
ompile that has only balance = 1
ompile that has working code in state

s://github.com/ethereum/tests/pull/365/files#diff-577295cbb9de725d230ee76a0e099ae3R67
s://github.com/ethereum/tests/pull/365/files#diff-577295cbb9de725d230ee76a0e099ae3R67

https://github.com/ethereum/tests/pull/447
https://github.com/ethereum/tests/pull/455
s://github.com/ethereum/tests/issues/431
n was sending to "" (create)

is cleaned because it was touched by suicide from init code


Zero Knowledge Precompiled tests

Source https://github.com/ethereum/tests/tree/develop/src/GeneralStateTestsFiller/stZeroKnowled
Tests
as Blockchain https://github.com/ethereum/tests/tree/snark_test_filled/
as GeneralState https://github.com/ethereum/tests/tree/snark_test_filled/

Cases:
Yoichi uncovered scenario https://github.com/ethereum/tests/issues/314
enhance tests for zeroKnowledge. Add odd input like for modexp
Truncated input (ECADD, first point) that results in a valid c https://github.com/ethereum/EIPs/pull/2
Truncated input (ECADD, second point) that results in a vali https://github.com/ethereum/EIPs/pull/2
Truncated input (ECMUL) that results in a valid curve point. https://github.com/ethereum/EIPs/pull/2

ZEC tests:
Paring tests (based on zec transaction) and chriseth tests https://github.com/ethereum/cpp-ethereu
[0] proof.A + vk.A + negateG1(proof.Ap) + P2,
[1] vk.B + proof.B + negateG1(proof.Bp) + P2,
[2] proof.C + vk.C + negateG1(proof.Cp) + P2,
[3] proof.K + vk.gamma + negateG1(addG1(vkx, addG1(proof.A, proof.C))) + vk.gammaBeta2 + negateG
[4] addG1(vkx, proof.A) + proof.B + negateG1(proof.H) + vk.Z +negateG1(proof.C) + P2,
[5] proof.A + vk.A + proof.Ap + P2
lots of test cases from Vitalik python client

with different values of x and -1


(1,2) + (1,2), [0] (x,y) + (x,y) == (x,y) * 2,
(0,0) + (0,0), [1] (x,y) + (x,y) + (x,y) == (x,y) * 3,
(x,x) + (invalid), [2] (-x, -y) + (x,y) == (x,y) * 0,
(x,x) + (0,0), [3] (-x, -y) + (0, 0) == (x, y) * -1,
(0,0) + (x,x), [4] (-x, -y) + (-x, -y) == (x, y) * -2,
(invalid) + (x,x), [5] (x, y) + (0, 0) == (x, y) * 1,
(invalid) + (invalid), [6] (-x, -y) + (0, 0) == (x, y) * -1,
(x,x) + (x,x), [7] (-x, -y) + (-x, -y) == (x, y) * -2,
(x,x) + (y,y), [8] (-x, -y) + (0, 0) == (x, y) * -1,
(x,x) + (1,2) [9] (-x, -y) + (-x, -y) == (x, y) * -2,
[10] (x,y) + (x,y) == (x,y) * 2,
(invalid) is point not from the curve [11] (x,y) + (x,y) + (x,y) == (x,y) * 3,
(x,x) is point X from the curve (x1, x2) actually [12] (-x, -y) + (x,y) == (x,y) * 0,
[13] (-x, -y) + (-x, -y) == (-x,-y) * 2,
[14] (-x, -y) + (0, 0) == (x, y) * -1,
[15] (-x, -y) + (-x, -y) == (x, y) * -2,
[16] (x, y) + (0, 0) == (x, y) * 1,
[17] (-x, -y) + (x,y) == (x,y) * 0,
[18] (-x, -y) + (-x, -y) == (-x,-y) * 2,
[19] (-x, -y) + (0, 0) == (x, y) * -1,
[20] (-x, -y) + (-x, -y) == (x, y) * -2,
[21] (-x, -y) + (x,y) == (x,y) * 0,
[22] (-x, -y) + (-x, -y) == (-x,-y) * 2,
[23] (-x, -y) + (0, 0) == (x, y) * -1,
[24] (-x, -y) + (-x, -y) == (x, y) * -2,
[25] (x,y) + (x,y) + (x,y) == (x,y) * 3,
[26] (-x, -y) + (x,y) == (x,y) * 0,
[27] (-x, -y) + (0, 0) == (x, y) * -1,
[28] (-x, -y) + (-x, -y) == (x, y) * -2,
[29] (x, y) + (0, 0) == (x, y) * 1,
[30] (-x, -y) + (x,y) == (x,y) * 0,
[31] (-x, -y) + (-x, -y) == (-x,-y) * 2,
[32] (-x, -y) + (0, 0) == (x, y) * -1,
[33] (-x, -y) + (-x, -y) == (x, y) * -2,
[34] (-x, -y) + (x,y) == (x,y) * 0,
[35] (-x, -y) + (-x, -y) == (-x,-y) * 2,
[36] (-x, -y) + (0, 0) == (x, y) * -1,
[37] (-x, -y) + (-x, -y) == (x, y) * -2

when the input has zero length, it is interpreted as (0,0) + (0,0)


when the input has zero length, it is interpreted as 0 \times (0, 0)
GeneralStateTestsFiller/stZeroKnowledge

thereum/tests/tree/snark_test_filled/BlockchainTests/GeneralStateTests/stZeroKnowledge
thereum/tests/tree/snark_test_filled/GeneralStateTests/stZeroKnowledge

thereum/tests/issues/314 https://github.com/ethereum/tests/pull/328/files
"odd input"? what is meant here?
s://github.com/ethereum/EIPs/pull/213#discussion_r151803836
s://github.com/ethereum/EIPs/pull/213#discussion_r151803836
s://github.com/ethereum/EIPs/pull/213#discussion_r151803836

s://github.com/ethereum/cpp-ethereum/blob/58607943f19bccae2251a1bd971f66fb59fcc0cf/test/libdevcrypto/LibSnark.cpp
proof.C))) + vk.gammaBeta2 + negateG1(vk.gammaBeta1) + proof.B,
egateG1(proof.C) + P2,

different values of x and -1


x,y) + (x,y) == (x,y) * 2, (x,y) + (x,y) == (x,y) * 2,
x,y) + (x,y) + (x,y) == (x,y) * 3, (x,y) + (x,y) + (x,y) == (x,y) * 3,
-x, -y) + (x,y) == (x,y) * 0, (-x, -y) + (x,y) == (x,y) * 0,
-x, -y) + (0, 0) == (x, y) * -1, (-x, -y) + (-x, -y) == (-x,-y) * 2,
-x, -y) + (-x, -y) == (x, y) * -2, (-x, -y) + (0, 0) == (x, y) * -1,
x, y) + (0, 0) == (x, y) * 1, (-x, -y) + (-x, -y) == (x, y) * -2,
-x, -y) + (0, 0) == (x, y) * -1, (x, y) + (0, 0) == (x, y) * 1,
-x, -y) + (-x, -y) == (x, y) * -2, (1, 2) + (1, 2) == (1, 2) * -1,
-x, -y) + (0, 0) == (x, y) * -1, (1, 2) + (-1, -2) == (1, 2) * 0,
-x, -y) + (-x, -y) == (x, y) * -2,
(x,y) + (x,y) == (x,y) * 2,
(x,y) + (x,y) + (x,y) == (x,y) * 3,
(-x, -y) + (x,y) == (x,y) * 0,
(-x, -y) + (-x, -y) == (-x,-y) * 2,
(-x, -y) + (0, 0) == (x, y) * -1,
(-x, -y) + (-x, -y) == (x, y) * -2,
(x, y) + (0, 0) == (x, y) * 1,
(-x, -y) + (x,y) == (x,y) * 0,
(-x, -y) + (-x, -y) == (-x,-y) * 2,
(-x, -y) + (0, 0) == (x, y) * -1,
(-x, -y) + (-x, -y) == (x, y) * -2,
(-x, -y) + (x,y) == (x,y) * 0,
(-x, -y) + (-x, -y) == (-x,-y) * 2,
(-x, -y) + (0, 0) == (x, y) * -1,
(-x, -y) + (-x, -y) == (x, y) * -2,
(x,y) + (x,y) + (x,y) == (x,y) * 3,
(-x, -y) + (x,y) == (x,y) * 0,
(-x, -y) + (0, 0) == (x, y) * -1,
(-x, -y) + (-x, -y) == (x, y) * -2,
(x, y) + (0, 0) == (x, y) * 1,
(-x, -y) + (x,y) == (x,y) * 0,
(-x, -y) + (-x, -y) == (-x,-y) * 2,
(-x, -y) + (0, 0) == (x, y) * -1,
(-x, -y) + (-x, -y) == (x, y) * -2,
(-x, -y) + (x,y) == (x,y) * 0,
(-x, -y) + (-x, -y) == (-x,-y) * 2,
(-x, -y) + (0, 0) == (x, y) * -1,
(-x, -y) + (-x, -y) == (x, y) * -2
libdevcrypto/LibSnark.cpp
assigned
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi
Jared
Jared
Jared
Jared
Jared
Jared
Jared
Jared
Jared
Jared
Jared
Jared
Yoichi
Yoichi
Yoichi

Dimitry

Yoichi
Yoichi
Yoichi
Yoichi

already in
Dimitry
Dimitry
Dimitry
Dimitry
Dimitry
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi
RETURNDATACOPY at the beginning of a program should throw exception if offset is not zero
RETURNDATASIZE at the beginning of a program should return 0
RETURNDATACOPYing returndata[0-96) should copy the returndata from a previous successful CALL
RETURNDATACOPYing with start = 2^{256} - 4 and size = 100 should throw
RETURNDATASIZE after a successful CREATE should return 0
RETURNDATACOPY at the beginning of a program should throw exception of size is not zero
RETURNDATACOPY at the beginning of a program should not throw if size=offset= zero
RETURNDATACOPY after a successful CREATE should throw exception if size is not zero
RETURNDATACOPY after a successful CREATE should not throw if size = offset = zero
RETURNDATACOPY after a successful CREATE should throw exception if offset is not zero
RETURNDATACOPY after a failing CALL should throw exception if offset is not zero
RETURNDATACOPY at the beginning of a program should throw an exception if offset + size = 2^64
RETURNDATACOPY at the beginning of a program should throw an exception if offset + size = 2^256
RETURNDATASIZE after successful CALLCODE
RETURNDATASIZE after successful STATICCALL
RETURNDATASIZE after successful DELEGATECALL
RETURNDATACOPY after successful CALLCODE
RETURNDATACOPY after successful STATICCALL
RETURNDATACOPY after successful DELEGATECALL
RETURNDATASIZE after failing CALLCODE
RETURNDATASIZE after failing STATICCALL
RETURNDATASIZE after failing DELEGATECALL
RETURNDATACOPY after failing CALLCODE
RETURNDATACOPY after failing STATICCALL
RETURNDATACOPY after failing DELEGATECALL
RETURNDATACOPY after a failing CALL (due to insufficient balance) should throw exception if offset is not zero
RETURNDATACOPY after a failing CALL (because of REVERT) should throw exception if offset is not zero
transaction calls A (CALL B(CALL C(RETURN) OOG) 'check buffers')

RETURNDATASIZE after a failing CALL (due to insufficient balance) should return 0

have a call to e.g. identity built-in that specifies output size more than input size. Check that
have a call to e.g. identity built-in that specifies output size less than input size. Check that a
a successful call to modexp with modsize = 0 followed by returndatasize
a successful call to modexp with modsize = 1 followed by returndatasize
a successful call to modexp with modsize = 100 followed by returndatasize
a successful call to modexp with modsize = 256 followed by returndatasize
a successful call to modexp with modsize = 999188 followed by returndatasize

Consensus bug in Parity: RETURNDATASIZE from a precompile returns non-zero size even if no
October 11: Consensus bug in Python, RETURNDATACOPY erroneously expands memory beyo
October 12: Consensus bug in Parity: how RETURNDATACOPY is handled. Basically, returndata
RETURNDATACOPY after failing create (due to 0xfd code)
RETURNDATASIZE after failing create (due to 0xfd code)
RETURNDATACOPY/RETURNDATASIZE after failing CALL/DELEGATECALL/CREATE/... that has used REVERT
RETURNDATASIZE/RETURNDATACOPY after CALL that fails for a REVERT with nonempty data
RETURNDATASIZE/RETURNDATACOPY after CREATE that fails for a REVERT with nonempty data
RETURNDATASIZE/RETURNDATACOPY after STATICCALL that fails for a REVERT with nonempty data
RETURNDATASIZE/RETURNDATACOPY after DELEGATECALL that fails for a REVERT with nonempty data
RETURNDATASIZE/RETURNDATACOPY after CALLCODE that fails for a REVERT with nonempty data
RETURNDATASIZE/RETURNDATACOPY (in init code) after CREATE (from init code) that fails for a REVERT with
https://github.com/ethereum/tests/pull/181
https://github.com/ethereum/tests/pull/174
https://github.com/ethereum/tests/pull/174
https://github.com/ethereum/tests/pull/181
https://github.com/ethereum/tests/pull/174
https://github.com/ethereum/tests/pull/181
https://github.com/ethereum/tests/pull/194
returndatacopy_following_create
https://github.com/ethereum/tests/pull/196
https://github.com/ethereum/tests/pull/196
https://github.com/ethereum/tests/pull/200
https://github.com/ethereum/tests/pull/202
https://github.com/ethereum/tests/pull/208
https://github.com/ethereum/tests/pull/290/files
https://github.com/ethereum/tests/pull/283
https://github.com/ethereum/tests/pull/283
https://github.com/ethereum/tests/pull/283
https://github.com/ethereum/tests/pull/290/files
https://github.com/ethereum/tests/pull/283
https://github.com/ethereum/tests/pull/290/files
https://github.com/ethereum/tests/pull/290/files
https://github.com/ethereum/tests/pull/290/files
https://github.com/ethereum/tests/pull/290/files
https://github.com/ethereum/tests/pull/290/files
https://github.com/ethereum/tests/pull/290/files
https://github.com/ethereum/tests/pull/343#pullrequestreview-65816906
<- the expectation is wrong, and the scenario is already tested
https://github.com/ethereum/tests/pull/356
https://github.com/ethereum/tests/pull/343#discussion_r141633982

https://github.com/ethereum/tests/pull/360

https://github.com/ethereum/tests/pull/429
https://github.com/ethereum/tests/pull/442
https://github.com/ethereum/tests/pull/363
https://github.com/ethereum/tests/pull/366
already in
already in
https://github.com/ethereum/tests/pull/405

src/GeneralStateTestsFiller/stReturnDataTest/call_ecrec_success_empty_then_returndatasizeFiller.json
https://github.com/ethereum/tests/pull/365
https://github.com/ethereum/tests/pull/355/files#diff-3c07d7cde60de1e1669c28fdc42c9b0dR4
https://github.com/ethereum/tests/pull/361
https://github.com/ethereum/tests/pull/361
split below
RETURNDATASIZE: RETURNDATACOPY: https://github.com/ethereum/tests/blob/develop/src/GeneralStateTestsFiller/st
RETURNDATASIZE https://github.com/ethereum/tests/pull/375
https://github.com/ethereum/tests/pull/379
https://github.com/ethereum/tests/pull/378
https://github.com/ethereum/tests/pull/384
https://github.com/ethereum/tests/pull/387
https://github.com/ethereum/tests/pull/419
asizeFiller.json

/src/GeneralStateTestsFiller/stReturnDataTest/returndatacopy_following_revertFiller.json
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi

Yoichi
Yoichi
Revert Tests

Source https://github.com/ethereum/tests/tree/develop/src/GeneralStateTestsFiller/stRevertTest/RevertOpcode*
Tests https://github.com/ethereum/tests/commit/05bffb4d7d6c2a5d6ee763693cf1c6a8d684b5ae

Cases:
check that state changes are reverted
*state reverted only inside call. for instance if revert happen in subcall only subcall changes would be reverted
call -> callA-> revert | callB -> revert | some code * and OOG scenarious
check revert in contract creation code
check that sender nonce is incremented even after revert
check sender nonce after multiple reverts + and some OOG scenario
check that sender nonce is incremented even after revert inside CREATE/INIT call
check that no instructions after REVERT are executed
revert + callcode + call + delegatecall scenarious * different depth levels
check that output data is really returned
check that output data is accessible with RETURNDATACOPY
check that the remaining gas is not consumed after revert
revert (bignumber, 0) (1, 0) (0, 0) (0, bignumber) (0, 32)
revert in contract creation mode should not deploy code
revert in contract creation mode, should leave data visible by RETURNDATACOPY, RETURNDATASIZE
revert in CALLCODE
revert in DELEGATECALL
revert in STATICCALL
status code after a call transaction REVERTs
status code after contract creation REVERTS
status code after transaction -- CALL --> internal call -- REVERT <-- STOP
non-empty
Call CREATE.returndata buffer
Immediately in --CALL
the new--> REVERT
context, do<-- RETURNDATASIZE,
a REVERT to detect
with returndata >24576"not(larger
settingthan
returndata buffer
max code size).after
ThisRsh

REVERT causing underflow


Solution: Issue:

https://github.com/ethereum/tests/issues/188

RevertOpcodeInInitFiller.json
https://github.com/ethereum/tests/pull/192
https://github.com/ethereum/tests/pull/311
https://github.com/ethereum/tests/pull/326
https://github.com/ethereum/tests/pull/333
https://github.com/ethereum/tests/pull/302
https://github.com/ethereum/tests/pull/303
already done
https://github.com/ethereum/tests/pull/338
https://github.com/ethereum/tests/pull/331
https://github.com/ethereum/tests/issues/416
hereum/tests/issues/416
collision on an accout with no code but nonzero nonce

dfg
gfd
dfg
sdg
sdfg
https://github.com/ethereum/tests/pull/327#pullrequestreview-63394766
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi
Yoichi
Dimitry
Dimitry
Dimitry
Test
https://github.com/ethereum/tests/blob/develop/GeneralStateTests/stPreCompiledContracts/modexp.json

Modexp precompiled tests


Zero base
Zero exp
Zero mod
Zero base & exp & mod
Zero-length base - interpreted as zero
Zero-length exp - interpreted as zero
Zero-length mod - interpreted as zero
Non-zero length mod, but passed calldata has not enough total length (check implicit zero-padding)
Non-zero length mod, but passed data has no mod (interpreted as zero mod)
Non-zero length exp & mod, but passed data has only base and part of exp
Non-zero length exp & mod, but passed data has only base
Non-zero length base & exp & mod and no values in input data - interpreted as all zeroes

Price calculation when baseLength > modLength


Price calculation when baseLength < modLength
Price calculation when exp length = 0
bigint_expmod precompiled contract returns 1 for 0 ^ 0 mod 100
bigint_expmod precompiled contract should return zero when modulo is zero
Price calculation when exp length > 256, and the first word of exponent is zero
test baseLength = 2^64 (trying to confuze implementations using size_t)
test expLength = 2^64 (trying to confuze implementations using size_t)
baseLength = modLength = 0, but expLength = 2^255, should return the empty byte sequence
The case found on 10.10.2017
When the modexp input is 0x00000000000000000000000000000000000000000000000000000000000000ff2a1e530
modexp input 00000000000000000000000000000000000000000000000000000000000000E300000000000000000
modexp input 000000000080000000000000000000000000000000000000000000000000000000000004000000000
October 13: Consensus big in Parity: gas calculation of modexp is subject to overflow for certain inputs. F
https://github.com/ethereum/tests/pull/210
https://github.com/ethereum/tests/pull/215
https://github.com/ethereum/tests/pull/215
https://github.com/ethereum/tests/pull/220
https://github.com/ethereum/tests/pull/349
https://github.com/ethereum/tests/pull/349/files
https://github.com/ethereum/tests/pull/349
https://github.com/ethereum/tests/pull/354
https://github.com/ethereum/tests/pull/354
https://github.com/ethereum/tests/pull/354/files
all cases with:
v: zero,
gas: non zero
enough,
not enough (oog at the middle of the execution)
Tests:
https://github.com/ethereum/tests/tree/staticcall/GeneralStateTests/stStaticCall
Source: https://github.com/ethereum/tests/tree/staticcall/src/GeneralStateTestsFiller/stStaticCall

Cases
Make a copy of CALL tests replacing CALL with STATICCALL (correct oog tests properly!!! OOG using state change)
DELEGATECALL during a static call should be allowed
STATICCALL during a static call should be allowed
check that staticall reurns 1 when nothing is changed in the state (double the copied tests.
add mstore instructions instead of sstore for OOG. check gas. OOG using MSTORE.
add MSTORE before and after static calls but not leading to OOG for gas usage checks)

static call -> static call success | OOG / write operation check staticcall subcall gas calculation
<delegate|call|callcode> -> static call | static call OOG | static call -> delegatecall kind of scenarious
static call operating with memory read/write operations should work as it does not touch storage
static call changing storage to the same value value->value | 0->0
staticcall -> staticcall -> call, change value, OOG | some memory calcs internal static call goes OOG (statechange) b
LOG0 in a staticcall should cause an exception
staticcall->call->LOG0 should cause an exception in the deepest call
staticcall->callcode with positive value should not succeed
staticcall-> subcall with value transfer
call -> contract and change it then staticcall to that contract and dont change it then call to contract and change it +
create contract during static call different depth level
if possible. static call in transaction init code exec static call to itself. transaction with value transfer
create contract. static call to that contract. | staticcall with change | staticcall (gas) + normal call + oog (calculate gas usa
(static call to newly created contract with and without changes)

while in staticcall on different depth put (ADDRESS ORIGIN CALLER CALLVALUE) and such codes into memory and com
LLL condition (if (= 1 2) (MSTORE 1 1) (SSTORE 1 2) )
if staticcall exec sstore it goes oog. if mstore then it just spend some gas. it is possible to check exact values of (
use --vmtrace to see the exact value. test cases to check: (-> means going into a subcall) ( | means going up from
staticcall -> (check)
staticcall -> staticcall -> (check)
staticcall -> (call|callcode|delegatecall) -> check
staticcall -> (call|callcode|delegatecall) -> staticcall -> check
staticcall -> (check) | staticcall -> (check)
staticcall -> staticcall -> staticcall (loop). check oog scenario when OOG hapens because of the base staticcall price subst
(call|callcode|delegatecall) -> staticcall -> check
statechange) but this does not make upper staticcall changing the state. check that memory calcs after subcall staticcall consume gas

d change it + case with OOG Revert at the end

lculate gas usage)

mory and compare the values so then go OOG if it does not match the expected values

ct values of (ADDRESS ORIGIN CALLER CALLVALUE)


going up from subcall)

call price substracting from available gas


r subcall staticcall consume gas and execution continues.
Moved to Constantinople
Transaction tests
Transaction fields (data, gaslimit, vrs, sender revocery)
Source https://github.com/ethereum/tests/tree/zeroTransaction/src/TransactionTestsFiller/Metrop
State Transition tests
Source https://github.com/ethereum/tests/tree/zeroTransaction/src/GeneralStateTestsFiller/stTran
Tests
https://github.com/ethereum/tests/tree/develop/TransactionTests/Metropolis
https://github.com/ethereum/tests/tree/develop/GeneralStateTests/stTransactionTest

Cases
zeroSig transaction that creates a new contract ( zero / non zero gasPrice)
zeroSig transaction with zero gasPrice (value = 1 | 0)
zeroSig transaction with invChain ID
zeroSig transaction with correct nonce, but != 0 (= sender nonce)
zeroSig transaction with incorrect nonce (!= sender nonce != 0)
zeroSig transaction when sender zero account does not exist / exist and has funds
all of the above with oog scenarious

zeroSig transaction to zeroAddress


stTransactionTest/TransactionToAddressh160minusOne.json
[19:38:00] Vitalik Buterin: in this test, the to address of the tx contains a 0x prefix
[19:38:36] Vitalik Buterin: in all others it doesn't
add zeroSig transaction to zeroAddress call tests
zeroSig transaction calls a contract that looks at ORIGIN and CALLER
zeroSig transaction creates a contract with initialization code looking at ORIGIN and CALLER
A transaction with v = r = z = 0 is not valid (unless the chain_id is zero). An early version of the EIP spec
Create a block filled with several zero-sig transactions which have the same hash (are identical)
Create two subsequent blocks with the same zero-sig transaction in both blocks.
A case when zero address is a contract and while being called by another contract is creating a new con
/TransactionTestsFiller/Metropolis

/GeneralStateTestsFiller/stTransactionTest/zeroSigTransaction*

stTransactionTest

When an external account (not zeroSig, creates a contract) creates a contract, the address is computed with the new form

t ORIGIN and CALLER


An early version of the EIP specified this format, but was deprecated.
ame hash (are identical)

er contract is creating a new contract


s is computed with the new formula
Moved to Constantinople
assigned
check the nonce of the SYSTEM_ACCOUNT that performs blockhash contract maintenance, after the firs
check the nonce of the SYSTEM_ACCOUNT that performs blockhash contract maintenance, after the sec
BLOCKHASH contract: get the code and check if it matches the expected one.

test the gas consumption at the 256-th block in Metropolis


test the gas consumption at the 257-th block in Metropolis
test the gas consumption at the first block in Metropolis

256 blocks into Metropolis, check the return value of BLOCKHASH


New test case: EXTCODECOPY from the contract that the new BLOCKHASH uses
ract maintenance, after the first block in metropolis
ract maintenance, after the second block in metropolis

Вам также может понравиться