gary rong
2433349c80
core/vm, params: implement EXTCODEHASH opcode ( #17202 )
...
* core/vm, params: implement EXTCODEHASH opcode
* core, params: tiny fixes and polish
* core: add function description
2018-07-24 18:06:40 +03:00
gary rong
cab1cff11c
core, crypto, params: implement CREATE2 evm instrction ( #17196 )
...
* core, crypto, params: implement CREATE2 evm instrction
* core/vm: add opcode to string mapping
* core: remove past fork checking
* core, crypto: use option2 to generate new address
2018-07-24 17:22:03 +03:00
Guillaume Ballet
4e5d1f1c39
core/vm: reuse bigint pools across transactions ( #17070 )
...
* core/vm: A pool for int pools
* core/vm: fix rebase issue
* core/vm: push leftover stack items after execution, not before
2018-07-03 13:06:42 +03:00
Guillaume Ballet
598f786aab
core/vm: clear linter warnings ( #17057 )
...
* core/vm: clear linter warnings
* core/vm: review input
* core/vm.go: revert lint in noop as per request
2018-06-26 15:56:25 +03:00
Wenbiao Zheng
9b1536b26a
core: remove dead code, limit test code scope ( #17006 )
...
* core: move test util var/func to test file
* core: remove useless func
2018-06-19 14:41:13 +03:00
Martin Holst Swende
947e0afeb3
core/vm: optimize MSTORE and SLOAD ( #16939 )
...
* vm/test: add tests+benchmarks for mstore
* core/vm: less alloc and copying for mstore
* core/vm: less allocs in sload
* vm: check for errors more correctly
2018-06-14 12:23:37 +03:00
kiel barry
cbfb40b0aa
params: fix golint warnings ( #16853 )
...
params: fix golint warnings
2018-06-05 12:31:34 +02:00
Abel Nieto
d258eee211
core/vm: fix typo in comment
2018-05-29 13:22:00 +02:00
kiel barry
84f8c0cc1f
common: improve documentation comments ( #16701 )
...
This commit adds many comments and removes unused code.
It also removes the EmptyHash function, which had some uses
but was silly.
2018-05-29 12:42:21 +02:00
Abel Nieto
be22ee8dda
core/vm: fix typo in instructions.go ( #16788 )
2018-05-23 15:02:10 +03:00
gary rong
7beccb29be
all: get rid of error when creating memory database ( #16716 )
...
* all: get rid of error when create mdb
* core: clean up variables definition
* all: inline mdb definition
2018-05-09 15:24:25 +03:00
kiel barry
a7720b5926
core: golint updates for this or self warning ( #16633 )
2018-05-02 11:27:59 +03:00
Péter Szilágyi
7a7428a027
core, eth: fix tracer dirty finalization
2018-04-27 14:29:18 +03:00
thomasmodeneis
ba1030b6b8
build: enable goimports and varcheck linters ( #16446 )
2018-04-18 00:53:50 +02:00
Felix Lange
c7ab3e5544
common: delete StringToAddress, StringToHash ( #16436 )
...
* common: delete StringToAddress, StringToHash
These functions are confusing because they don't parse hex, but use the
bytes of the string. This change removes them, replacing all uses of
StringToAddress(s) by BytesToAddress([]byte(s)).
* eth/filters: remove incorrect use of common.BytesToAddress
2018-04-10 14:12:07 +03:00
dm4
3ebcf92b42
cmd/evm: print vm output when debug flag is on ( #16326 )
2018-04-06 12:43:36 +02:00
hydai
6134990709
core/vm: Fixed typos in core/vm/interpreter.go
2018-03-27 12:29:04 +08:00
hydai
c3dc814fea
core/vm: Fixed typo in core/vm/evm.go
2018-03-26 21:40:00 +08:00
hydai
84c5db5409
core/vm: remove JIT VM codes ( #16362 )
2018-03-26 13:48:04 +03:00
Péter Szilágyi
1fae50a199
core: minor evm polishes and optimizations
2018-03-26 12:28:46 +03:00
Martin Holst Swende
4871e25f5f
core/vm: optimize eq, slt, sgt and iszero + tests ( #16047 )
...
* vm: optimize eq, slt, sgt and iszero + tests
* core/vm: fix error in slt/sgt, found by vmtests. Added testcase
* core/vm: make slt/sgt cleaner
2018-03-08 14:48:19 +02:00
Péter Szilágyi
bd6879ac51
core/vm, crypto/bn256: switch over to cloudflare library ( #16203 )
...
* core/vm, crypto/bn256: switch over to cloudflare library
* crypto/bn256: unmarshal constraint + start pure go impl
* crypto/bn256: combo cloudflare and google lib
* travis: drop 386 test job
2018-03-05 14:33:45 +02:00
Péter Szilágyi
b7e57ca1d0
cmd/evm, core/vm, internal/ethapi: don't disable call gas metering
2018-03-05 14:01:13 +02:00
Martin Holst Swende
44d40ffce1
core, vm, common: define constantinople fork + shift ( #16045 )
...
* core, vm, common: define constantinople fork, start implementation of shift instructions
* vm: more testcases
* vm: add tests for intpool erroneous intpool handling
* core, vm, common: fix constantinople review concerns
* vm: add string<->op definitions for new opcodes
2018-02-23 12:32:57 +02:00
ferhat elmas
ff225db813
core/vm: remove unused hashing ( #16075 )
2018-02-14 15:41:05 +02:00
Felix Lange
a5c0bbb4f4
all: update license information ( #16089 )
2018-02-14 13:49:11 +01:00
George Ornbo
370dca4491
core/vm: Fix comment typo
2018-01-16 15:47:33 +00:00
Felix Lange
9d06026c19
all: regenerate codecs with gencodec commit 90983d99de ( #15830 )
...
Fixes #15777 because null is now allowed for hexutil.Bytes.
2018-01-08 15:13:22 +02:00
Felix Lange
5c2f1e0014
all: update generated code ( #15808 )
...
* core/types, core/vm, eth, tests: regenerate gencodec files
* Makefile: update devtools target
Install protoc-gen-go and print reminders about npm, solc and protoc.
Also switch to github.com/kevinburke/go-bindata because it's more
maintained.
* contracts/ens: update contracts and regenerate with solidity v0.4.19
The newer upstream version of the FIFSRegistrar contract doesn't set the
resolver anymore. The resolver is now deployed separately.
* contracts/release: regenerate with solidity v0.4.19
* contracts/chequebook: fix fallback and regenerate with solidity v0.4.19
The contract didn't have a fallback function, payments would be rejected
when compiled with newer solidity. References to 'mortal' and 'owned'
use the local file system so we can compile without network access.
* p2p/discv5: regenerate with recent stringer
* cmd/faucet: regenerate
* dashboard: regenerate
* eth/tracers: regenerate
* internal/jsre/deps: regenerate
* dashboard: avoid sed -i because it's not portable
* accounts/usbwallet/internal/trezor: fix go generate warnings
2018-01-08 14:15:57 +02:00
Felix Lange
1c2378b926
tests: update to upstream commit 2bb0c3da3b ( #15806 )
...
Also raise traceLimit once again and print the VM
error and output on failure.
2018-01-04 13:18:30 +01:00
Péter Szilágyi
6f69cdd109
all: switch gas limits from big.Int to uint64
2018-01-03 14:45:35 +02:00
Péter Szilágyi
5258785c81
cmd, core, eth/tracers: support fancier js tracing ( #15516 )
...
* cmd, core, eth/tracers: support fancier js tracing
* eth, internal/web3ext: rework trace API, concurrency, chain tracing
* eth/tracers: add three more JavaScript tracers
* eth/tracers, vendor: swap ottovm to duktape for tracing
* core, eth, internal: finalize call tracer and needed extras
* eth, tests: prestate tracer, call test suite, rewinding
* vendor: fix windows builds for tracer js engine
* vendor: temporary duktape fix
* eth/tracers: fix up 4byte and evmdis tracer
* vendor: pull in latest duktape with my upstream fixes
* eth: fix some review comments
* eth: rename rewind to reexec to make it more obvious
* core/vm: terminate tracing using defers
2017-12-21 13:56:11 +02:00
Paweł Bylica
fb5f25eeee
core/vm: Remove snapshot param from Interpreter.Run()
2017-12-15 13:33:35 +01:00
Felix Lange
be12392fba
core/vm: track 63/64 call gas off stack ( #15563 )
...
* core/vm: track 63/64 call gas off stack
Gas calculations in gasCall* relayed the available gas for calls by
replacing it on the stack. This lead to inconsistent traces, which we
papered over by copying the pre-execution stack in trace mode.
This change relays available gas using a temporary variable, off the
stack, and allows removing the weird copy.
* core/vm: remove stackCopy
* core/vm: pop call gas into pool
* core/vm: to -> addr
2017-11-28 21:05:49 +02:00
Péter Szilágyi
b0190189a3
core/vm, internal/ethapi: tracer no full storage, nicer json output ( #15499 )
...
* core/vm, internal/ethapi: tracer no full storage, nicer json output
* core/vm, internal/ethapi: omit disabled trace fields
2017-11-16 18:53:18 +02:00
Péter Szilágyi
bce5d837b5
Merge pull request #14582 from holiman/jumpdest_improv
...
core/vm: improve jumpdest analysis
2017-11-15 10:52:14 +02:00
Jay Guo
924098c6e5
core/vm: fix typos in jump_table.go
2017-11-14 17:57:37 +08:00
Martin Holst Swende
96ddf27a48
core/vm: copyright header on test-file
2017-11-13 22:04:53 +01:00
ferhat elmas
86f6568f66
build: enable unconvert linter ( #15456 )
...
* build: enable unconvert linter
- fixes #15453
- update code base for failing cases
* cmd/puppeth: replace syscall.Stdin with os.Stdin.Fd() for unconvert linter
2017-11-10 19:06:45 +02:00
Péter Szilágyi
a91e682234
core/vm: check opcode stack before readonly enforcement
2017-10-14 15:42:48 +03:00
cdetrio
673007d7ae
core/vm: standard vm traces ( #15035 )
2017-09-22 10:22:56 +02:00
Martin Holst Swende
9be07de539
params: Updated finalized gascosts for ECMUL/MODEXP ( #15135 )
...
* params: Updated finalized gascosts for ECMUL/MODEXP
* core,tests: Updates pending new tests
* tests: Updated with new tests
* core: revert state transition bugfix
* tests: Add expected failures due to #15119
2017-09-14 10:35:54 +03:00
Péter Szilágyi
5bbd7fb390
consensus, core, params: rebrand Metro to Byzantium
2017-09-14 10:10:46 +03:00
Felix Lange
42a5b54bf5
core/vm: improve bitvec comments
2017-09-10 21:04:36 +02:00
Martin Holst Swende
d6681ed360
core/vm: Rename + updated doc on jumpdest analysis
2017-09-08 12:47:44 +02:00
Martin Holst Swende
e7408b5552
core/vm: Make MaxCodesize non-retroactive ( #15072 )
...
* core/vm: Make max_codesize only applicable post Spurious Dragon/158/155/161/170
* tests: Remove expected failure
2017-09-04 12:53:25 +03:00
Martin Holst Swende
23b51a68cb
core/vm: avoid state lookup during gas calc for call ( #15061 )
2017-09-04 10:56:45 +02:00
Martin Holst Swende
07635e43e2
core/vm: renamed struct member + go fmt
2017-08-28 13:33:24 +02:00
Martin Holst Swende
64a3a3d23c
core/vm: Fix testcase input for ecmul
2017-08-28 13:30:26 +02:00
Martin Holst Swende
bc2a5578c0
core/vm: more benchmarks
2017-08-27 14:00:32 +02:00
Péter Szilágyi
08f27428b4
core, tests: implement Metropolis EIP 684
2017-08-25 13:00:27 +03:00
Péter Szilágyi
b872961ec8
consensus, core, tests: implement Metropolis EIP 649
2017-08-24 17:16:39 +03:00
Felix Lange
54b1de67e2
core/vm: make jumpdest code nicer
2017-08-24 13:09:53 +02:00
Péter Szilágyi
3c48a25762
Merge pull request #15014 from rjl493456442/metropolis-eip658
...
core: add status as a consensus field in receipt
2017-08-23 14:39:37 +03:00
Martin Holst Swende
286ec5df40
cmd/evm, core/vm, internal/ethapi: Show error when exiting ( #14985 )
...
* cmd/evm, core/vm, internal/ethapi: Add 'err' to tracer interface CaptureEnd
* cmd/evm: fix nullpointer when there is no error
2017-08-23 14:37:18 +03:00
rjl493456442
28aea46ac0
core: implement Metropolis EIP 658, receipt status byte
2017-08-22 18:35:17 +03:00
Ti Zhou
2fd5ba6bd4
core/vm: fix typo in method documentation ( #15019 )
...
Signed-off-by: Ti Zhou <tizhou1986@gmail.com>
2017-08-22 12:43:36 +03:00
Péter Szilágyi
afdfdebd87
Merge pull request #14983 from karalabe/metropolis-revert
...
core/vm: implement REVERT metropolis opcode
2017-08-21 12:23:03 +03:00
Péter Szilágyi
f9fb70d2ee
core/vm: rework reversion to work on a higher level
2017-08-17 16:50:35 +03:00
Péter Szilágyi
1335a6cc8c
core/vm, crypto/bn256: fix bn256 use and pairing corner case
2017-08-17 16:46:46 +03:00
Jeffrey Wilcke
b70a73cd3e
core/vm: implement REVERT metropolis opcode
2017-08-16 15:32:59 +03:00
Péter Szilágyi
4e0fea4d30
core/vm: polish RETURNDATA, add missing returns to CALL*
2017-08-16 13:43:14 +03:00
Jeffrey Wilcke
9bd6068fef
core/vm: implement RETURNDATA metropolis opcodes
2017-08-16 13:43:08 +03:00
Péter Szilágyi
3df7142b3e
core/vm: minor polishes, fix STATICCALL for precompiles
...
* Fix STATICCALL so it is able to call precompiles too
* Fix write detection to use the correct value argument of CALL
* Fix write protection to ignore the value in CALLCODE
2017-08-15 14:40:12 +03:00
Jeffrey Wilcke
3d123bcde6
core/vm: implement metropolis static call opcode
2017-08-15 13:03:49 +03:00
Péter Szilágyi
f8d8b56b28
core/vm: optimize copy-less data retrievals
2017-08-14 17:08:49 +03:00
Martin Holst Swende
d8aaa3a215
core/vm: benchmarking of metro precompiles
2017-08-14 15:37:09 +03:00
Péter Szilágyi
6131dd55c5
core/vm: polish precompile contract code, add tests and benches
...
* Update modexp gas calculation to new version
* Fix modexp modulo 0 special case to return zero
2017-08-14 15:27:44 +03:00
Martin Holst Swende
967e097faa
core/vm: Address review concerns
2017-08-14 10:57:54 +02:00
Jeffrey Wilcke
7bbdf3e268
core: add Metropolis pre-compiles (EIP 197, 198 and 213)
2017-08-11 15:24:54 +03:00
Joel Burget
833eeb9f23
core/vm/runtime: remove unused state parameter to NewEnv ( #14953 )
...
* core: Remove unused `state` parameter to `NewEnv`.
`cfg.State` is used instead.
* core/vm/runtime: remove unused import
2017-08-11 14:29:32 +03:00
evgk
0cc9b8791e
core/vm: fix typo in comment ( #14894 )
2017-08-04 01:31:18 +02:00
cdetrio
ffebf00114
core/vm/runtime: fix evm command to use --gasprice flag value
2017-07-25 13:08:29 -04:00
Felix Lange
3e0dbe0eaa
core/vm: remove logging and add section labels to struct logs ( #14782 )
2017-07-19 14:32:45 +02:00
Péter Szilágyi
dfd076244d
Merge pull request #14718 from holiman/gascalc_fix
...
core/vm: fix overflow in gas calculation formula
2017-06-28 13:12:13 +03:00
Martin Holst Swende
6dc32e897a
core/vm: add benchmarks for some ops and precompiles ( #14641 )
2017-06-28 11:45:45 +02:00
Martin Holst Swende
e4301564c2
core/vm : fix testcase for gas calculation
2017-06-28 10:47:07 +02:00
Martin Holst Swende
bae7565231
core/vm: fix overflow in gas calculation formula
2017-06-28 09:51:31 +02:00
Felix Lange
9e5f03b6c4
core/state: access trie through Database interface, track errors ( #14589 )
...
With this commit, core/state's access to the underlying key/value database is
mediated through an interface. Database errors are tracked in StateDB and
returned by CommitTo or the new Error method.
Motivation for this change: We can remove the light client's duplicated copy of
core/state. The light client now supports node iteration, so tracing and storage
enumeration can work with the light client (not implemented in this commit).
2017-06-27 15:57:06 +02:00
Martin Holst Swende
9a44e1035e
cmd/evm, core/vm: add --nomemory, --nostack to evm ( #14617 )
2017-06-21 14:52:31 +02:00
Péter Szilágyi
335abdceb1
Merge pull request #14581 from holiman/byte_opt
...
core/vm: improve opByte
2017-06-13 14:44:19 +03:00
Martin Holst Swende
ac9865791a
core/vm, common/math: Add doc about Byte, fix format
2017-06-08 23:16:05 +02:00
Martin Holst Swende
80f7c6c299
cmd/evm: add --prestate, --sender, --json flags for fuzzing ( #14476 )
2017-06-07 17:09:08 +02:00
Martin Holst Swende
1496b3aff6
common/math, core/vm: Un-expose bigEndianByteAt, use correct terms for endianness
2017-06-06 18:38:38 +02:00
Martin Holst Swende
f4b5f67ee0
core/vm: improved jumpdest analysis
2017-06-05 09:15:46 +02:00
Martin Holst Swende
3285a0fda3
core/vm, common/math: Add fast getByte for bigints, improve opByte
2017-06-05 08:44:11 +02:00
Nick Johnson
d5a79934dc
core/vm: Use a bitmap instead of a map for jumpdest analysis
...
t push --force
2017-06-01 19:14:05 +01:00
Péter Szilágyi
c98bce709c
core: fix minor accidental typos and comment errors
2017-05-25 17:22:45 +03:00
Jeffrey Wilcke
846d091bd2
core/vm: allocate stack to 1024
...
Pre allocate the stack to 1024 optimising stack pushing, reducing calls
to runtime.makeslice and runtime.mallocgc
2017-05-25 11:37:04 +02:00
Jeffrey Wilcke
10582a97ca
core/vm: expose intpool to stack dup method
...
Improve the duplication method of the stack to reuse big ints by passing
in an existing integer pool.
2017-05-23 10:52:11 +02:00
Jeffrey Wilcke
e16a7ef60f
core/vm: capped int pool
2017-05-23 10:40:09 +02:00
Jeffrey Wilcke
a816e75662
core/vm: improved push instructions
...
Improved push instructions by removing unnecessary big int allocations
and by making it int instead of big.Int
2017-05-23 10:39:53 +02:00
Valentin Wüstholz
04b668b232
core/vm: improve error message for invalid opcodes
2017-05-22 17:48:07 +02:00
Jeffrey Wilcke
a5f6a1cb7c
consensus, core, core/vm, parems: review fixes
2017-05-18 09:05:58 +02:00
Jeffrey Wilcke
10a57fc3d4
consensus, core/*, params: metropolis preparation refactor
...
This commit is a preparation for the upcoming metropolis hardfork. It
prepares the state, core and vm packages such that integration with
metropolis becomes less of a hassle.
* Difficulty calculation requires header instead of individual
parameters
* statedb.StartRecord renamed to statedb.Prepare and added Finalise
method required by metropolis, which removes unwanted accounts from
the state (i.e. selfdestruct)
* State keeps record of destructed objects (in addition to dirty
objects)
* core/vm pre-compiles may now return errors
* core/vm pre-compiles gas check now take the full byte slice as argument
instead of just the size
* core/vm now keeps several hard-fork instruction tables instead of a
single instruction table and removes the need for hard-fork checks in
the instructions
* core/vm contains a empty restruction function which is added in
preparation of metropolis write-only mode operations
* Adds the bn256 curve
* Adds and sets the metropolis chain config block parameters (2^64-1)
2017-05-18 09:05:58 +02:00
Felix Lange
0cc492f815
all: update license information
2017-04-14 10:29:00 +02:00
Yohann Leon
6742fc526f
core/vm: use uint64 instead of *big.Int in tracer ( #3805 )
2017-03-22 15:32:51 +01:00
Jeffrey Wilcke
bf4155846c
core/evm, core/vm: improved evm trace output
...
* Improved the standard evm tracer output and renamed it to WriteTrace
which now takes an io.Writer to write the logs to.
* Added WriteLogs which writes logs to the given writer in a readable
format.
* evm utility now also prints logs generated during the execution.
2017-03-01 11:20:25 +01:00
Jeffrey Wilcke
230cf2ec91
cmd/evm, core/asm: add EVM assembler ( #3686 )
...
The evm compile command implements a simple assembly language that compiles to
EVM bytecode.
2017-03-01 01:11:24 +01:00
Péter Szilágyi
94c71c171f
Merge pull request #3723 from karalabe/logger-updates-2
...
Logger updates
2017-02-28 16:55:37 +02:00