Академический Документы
Профессиональный Документы
Культура Документы
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)
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)
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
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
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
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
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
https://github.com/ethereum/tests/issues/377
711 : a gasUsed: "0x64" in genesis . Is that the intent of the test?
https://github.com/ethereum/tests/issues/438#event-1540782928
https://github.com/ethereum/cpp-ethereum/issues/4519
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
https://github.com/ethereum/tests/pull/365/files#diff-577295cbb9de725d230ee76a0e099ae3R67
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
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
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
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 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
https://github.com/ethereum/tests/pull/529
https://github.com/ethereum/tests/pull/529
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
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
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
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
ans successfullty finish the call and return to the callee to continue the execution
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)
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
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,
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')
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
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
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
mory and compare the values so then go OOG if it does not match the expected values
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
/GeneralStateTestsFiller/stTransactionTest/zeroSigTransaction*
stTransactionTest
When an external account (not zeroSig, creates a contract) creates a contract, the address is computed with the new form