Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ecip1045 dev create2 #24

Open
wants to merge 58 commits into
base: ecip1045
Choose a base branch
from
Open

Ecip1045 dev create2 #24

wants to merge 58 commits into from

Conversation

whilei
Copy link
Owner

@whilei whilei commented Oct 23, 2018

No description provided.

tzdybal and others added 30 commits October 11, 2018 04:46
Path changed so instead of using gcc 8.2.0 from MSYS2,
gcc 7.2.0 from mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1 is used.

This also makes gcc version stable - MSYS2 gcc version can be
changed without changes in appveyor.xml.
It seems that we need MSYS2 for Janus installation, but later, for Rust
compilation we need gcc from mingw-64 7.2.0.
Because we wan't to retest all cases (including passing ones) we need to
override the `-count' to force execution of cached tests.
IsEIPx interface methods replace IsForkName methods.

By using EIP-level methods instead of fork-level methods,
increased granularity is possible for unit tests, miniature contract
tests, more extensible code-reuse and configuration alternatives.

Further work might involve modifications to chain config JSON
schema, possibly using ForkFeatures to configure EIP implementations
on a per-fork basis. (Currently these are loosely grouped in core/config.go
by implementing the methods on an ECIP1045B/C basis, but that could be
consolidated and made more descriptive using the system referenced above.)
Support individual EIPx configuration in JSON configuration schema on a
per-fork basis.
…interface

solution: remove it

core.ChainConfig#IsEIP658 can still be used for implementation
- allows reuse of init_code keccak hash
- modifies Create2 unit tests for consistency with ETH
- moves spec tests (again) from crypto -> core/vm/
because this allows gas testing as well as expected
address hash val tests.
If PostState is present in RLP decoded Receipt (received from network),
we can't assume anything about transaction Status, so it should be set
to TxStatusUnknown.
tzdybal and others added 28 commits October 25, 2018 20:52
Type of Status changed to from `byte` to `uint8` to emphasize that
it's a scalar.
Struct used in RLP encoding changed, so it can handle both `uint8`
(Status) and `[]byte` (PostState).
RLP decoding changed accordingly. Comment added.
solution: append 'Msg' to name to make clear why string
and not error type
This causes TestEIP658RLPRoundTrip2 to break.
solution: invalid returning of writer.Flush() causes EOF error
Ensures round trip RLP en/de-coder works for both empty (eg zero-value address) hash and
arbitrary value.
solution: fix what I think are typos, which caused
- extra gas to be spent intializing addresses, and
- 0xf3 (EXTCODEHASH) opcode missed entirely because
pre/post/exec code fields mismatched
solution: check statedb for existence of account before
checking obj nillitude.
Hard to see why they are the way they are.

solution: Add a temporary file that describes my methods
of how I made the values in the test
JSON test files should reflect this convention

solution:  rename files
solution: use SSTORE instead of return values

Thanks @mersinvald
using MSTORE to hold input value
@whilei whilei force-pushed the ecip1045-dev-create2 branch from 796c91c to 31f7038 Compare October 26, 2018 14:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants