Sina Mahmoodi and Martin Holst Swende
e803ef09ad
eth/tracers/js: fix isPush for push0 ( #28520 )
...
Fixes so that `push0` opcode is correctly reported as `true` by the `IsPush` function
---------
Co-authored-by: Martin Holst Swende <martin@swende.se >
2023-11-14 13:14:38 +01:00
lmittmann and lmittmann
a3be38127c
core/vm: performance tweak of OpCode.String() ( #28453 )
...
make `opCodeToString` a `[256]string` array
Co-authored-by: lmittmann <lmittmann@users.noreply.github.com >
2023-11-02 08:54:28 +02:00
Marius van der Wijden
c39cbc1a78
core: implement BLOBBASEFEE opcode (0x4a) ( #28098 )
...
Implements "EIP-7516: BLOBBASEFEE opcode" for cancun, as per spec: https://eips.ethereum.org/EIPS/eip-7516
2023-10-02 05:49:29 -04:00
Charles Cooper and Martin Holst Swende
5c9cbc218a
core/vm: implement EIP-5656, mcopy instruction ( #26181 )
...
Implements [EIP 5656](https://eips.ethereum.org/EIPS/eip-5656 ), MCOPY instruction, and enables it for Cancun.
---------
Co-authored-by: Martin Holst Swende <martin@swende.se >
2023-07-11 03:55:34 -04:00
Marius van der Wijden
d7ea278fe3
core/vm: move TSTORE,TLOAD to correct opcode nums ( #27613 )
...
* core/vm: move TSTORE,TLOAD to correct opcode nums
* core/vm: cleanup
2023-06-27 03:25:08 -04:00
Marius van der Wijden
c537ace249
core: 4844 opcode and precompile ( #27356 )
...
* core: crypto: implement BLOBHASH and pointEval precompile
* core: crypto: fixed nitpicks, moved precompile return value
* core/vm: fix review comments
2023-06-05 16:43:25 +03:00
Alex Beregszaszi
3f7afc3f57
core/vm: order opcodes properly ( #27113 )
2023-04-20 02:52:00 -04:00
b4ea2bf7dd
all: implement EIP-1153 transient storage ( #26003 )
...
Implements TSTORE and TLOAD as specified by the following EIP:
https://eips.ethereum.org/EIPS/eip-1153
https://ethereum-magicians.org/t/eip-1153-transient-storage-opcodes/553
Co-authored-by: Sara Reynolds <snreynolds2506@gmail.com >
Co-authored-by: Martin Holst Swende <martin@swende.se >
Co-authored-by: Gary Rong <garyrong0905@gmail.com >
2022-11-16 10:18:52 +01:00
lmittmann
2b1299b1c0
core/vm: minor trivial clean up ( #25880 )
...
* dropped `vm.keccakState` for `crypto.KeccakState`
* cleaned up `OpCode.IsPush()`
2022-09-28 13:21:54 +02:00
Marius van der Wijden
d30e39b2f8
core/vm: rename RANDOM to PREVRANDAO ( #25691 )
...
See: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4399.md
> This EIP supplants the semantics of the return value of existing DIFFICULTY (0x44) opcode and renames the opcode to PREVRANDAO (0x44).
2022-09-07 13:09:52 +02:00
Seungbae.yu
2697e44d81
all: change format 0x%x to %#x ( #25221 )
2022-07-04 11:03:32 +03:00
s7v7nislands
539bbd6349
core/vm: separate opcode group for 0x20 range ( #24850 )
2022-05-11 08:04:16 +03:00
Alex Beregszaszi
3b967d16ca
core/vm: implement EIP-3855: PUSH0 instruction ( #24039 )
...
* core/vm: Implement PUSH0
* Move PUSH0 to enable3855
* Add method doc
2022-05-06 14:36:45 +02:00
Marius van der Wijden
b1e72f7ea9
core/evm: RANDOM opcode (EIP-4399) ( #24141 )
...
* core: implement eip-4399 random opcode
* core: make vmconfig threadsafe
* core: miner: pass vmConfig by value not reference
* all: enable 4399 by Rules
* core: remove diff (f)
* tests: set proper difficulty (f)
* smaller diff (f)
* eth/catalyst: nit
* core: make RANDOM a pointer which is only set post-merge
* cmd/evm/internal/t8ntool: fix t8n tracing of 4399
* tests: set difficulty
* cmd/evm/internal/t8ntool: check that baserules are london before applying the merge chainrules
2022-01-10 09:44:21 +02:00
Andrei Maiboroda and Alex Beregszaszi
3e47e38a4e
core/vm: Make INVALID a defined opcode ( #24017 )
...
* core/vm: Define 0xfe opcode as INVALID
* core/vm: Remove opInvalid as opUndefined handles it
Co-authored-by: Alex Beregszaszi <alex@rtfs.hu >
2021-12-17 13:44:05 +01:00
Alex Beregszaszi
ae8ff2661d
core/vm: remove unused code (IsStaticJump) ( #24085 )
2021-12-09 13:55:06 +01:00
Alex Beregszaszi
a69d4b273d
core/vm: Rename SHA3 instruction to KECCAK256 ( #23976 )
...
This was proposed in 2016, Solidity uses this since 2017, and evmone and other VMs use the keccak256 name. This brings geth in line with those.
2021-11-30 10:34:34 +01:00
Martin Holst Swende
9055cc14ec
core/vm, core/state/snapshot: remove unused code ( #23956 )
...
* core/state/snapshot: remove wiper functionality
* core/vm: remove unused 'unofficial' opcodes
2021-11-25 10:37:47 +02:00
Martin Holst Swende
ab31fbbde1
core/vm: don't use iota for opcode definitions
2021-11-18 09:50:52 +01:00
94451c2788
all: implement EIP-1559 ( #22837 )
...
This is the initial implementation of EIP-1559 in packages core/types and core.
Mining, RPC, etc. will be added in subsequent commits.
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de >
Co-authored-by: lightclient@protonmail.com <lightclient@protonmail.com >
Co-authored-by: Felix Lange <fjl@twurst.com >
2021-05-17 15:13:22 +02:00
Péter Szilágyi
7834e4a278
core, eth: unship EIP 2315
2021-03-02 23:40:57 +02:00
Greg Colvin and Martin Holst Swende
cd57d5cd38
core/vm: EIP-2315, JUMPSUB for the EVM ( #20619 )
...
* core/vm: implement EIP 2315, subroutines for the EVM
* core/vm: eip 2315 - lintfix + check jump dest validity + check ret stack size constraints
logger: markdown-friendly traces, validate jumpdest, more testcase, correct opcodes
* core/vm: update subroutines acc to eip: disallow walk-into
* core/vm/eips: gas cost changes for subroutines
* core/vm: update opcodes for EIP-2315
* core/vm: define RETURNSUB as a 'jumping' operation + review concerns
Co-authored-by: Martin Holst Swende <martin@swende.se >
2020-06-02 13:30:16 +03:00
gary rong
b9df7ecdc3
all: seperate consensus error and evm internal error ( #20830 )
...
* all: seperate consensus error and evm internal error
There are actually two types of error will be returned when
a tranaction/message call is executed: (a) consensus error
(b) evm internal error. The former should be converted to
a consensus issue, e.g. The sender doesn't enough asset to
purchase the gas it specifies. The latter is allowed since
evm itself is a blackbox and internal error is allowed to happen.
This PR emphasizes the difference by introducing a executionResult
structure. The evm error is embedded inside. So if any error
returned, it indicates consensus issue happens.
And also this PR improve the `EstimateGas` API to return the concrete
revert reason if the transaction always fails
* all: polish
* accounts/abi/bind/backends: add tests
* accounts/abi/bind/backends, internal: cleanup error message
* all: address comments
* core: fix lint
* accounts, core, eth, internal: address comments
* accounts, internal: resolve revert reason if possible
* accounts, internal: address comments
2020-04-22 11:25:36 +03:00
Péter Szilágyi
a4cf279494
core/state: extend snapshotter to handle account resurrections
2020-03-03 15:52:00 +02:00
Martin Holst Swende
081642ed25
Eip 1344 (ChainID opcode) ( #19921 )
...
* core/vm: implement EIP 1344 (ChainID opcode)
* core/vm: formatting
2019-08-08 16:20:28 +03:00
Martin Holst Swende and Péter Szilágyi
3e993ff64a
Eip 1884 v3 ( #19743 )
...
* core/vm, tests: implement EIP 1884, add support for feature-tests
* core/vm: 1884-changes to extcodehash, move selfbalance opcode
* tests: fix statetests
* core/vm: move constants, address review concerns
* core/vm: word formatting
Co-Authored-By: Péter Szilágyi <peterke@gmail.com >
2019-08-08 12:07:23 +03:00
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
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
kiel barry
a7720b5926
core: golint updates for this or self warning ( #16633 )
2018-05-02 11:27:59 +03: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
Jeffrey Wilcke
b70a73cd3e
core/vm: implement REVERT metropolis opcode
2017-08-16 15:32:59 +03:00
Jeffrey Wilcke
9bd6068fef
core/vm: implement RETURNDATA metropolis opcodes
2017-08-16 13:43:08 +03:00
Jeffrey Wilcke
3d123bcde6
core/vm: implement metropolis static call opcode
2017-08-15 13:03:49 +03:00
Jeffrey Wilcke
57f4e90257
Revert "params: core, core/vm, miner: 64bit gas instructions ( #3514 )"
...
This reverts commit 8b57c49490 .
2017-02-13 15:15:12 +01:00
Benjamin Brent
55522373fd
core/vm: fix GASPRICE string ( resolves #2553 )
2016-10-19 15:55:34 +11:00
Jeffrey Wilcke
b6d88a0e9f
core, core/vm, crypto: fixes for homestead
...
* Removed some strange code that didn't apply state reverting properly
* Refactored code setting from vm & state transition to the executioner
* Updated tests
2016-02-18 10:11:48 +01:00
Gustav Simonsson
371871d685
parmas, crypto, core, core/vm: homestead consensus protocol changes
...
* change gas cost for contract creating txs
* invalidate signature with s value greater than secp256k1 N / 2
* OOG contract creation if not enough gas to store code
* new difficulty adjustment algorithm
* new DELEGATECALL op code
2016-02-18 10:08:11 +01:00
Jeffrey Wilcke
8c85532412
core/vm: added parsing utilities
2015-10-16 22:30:42 +02:00
Jeffrey Wilcke
b196278044
core/vm: added JIT segmenting / optimisations
...
* multi-push segments
* static jumps segments
2015-10-16 22:30:42 +02:00
Jeffrey Wilcke
361082ec4b
cmd/evm, core/vm, test: refactored VM and core
...
* Moved `vm.Transfer` to `core` package and changed execution to call
`env.Transfer` instead of `core.Transfer` directly.
* core/vm: byte code VM moved to jump table instead of switch
* Moved `vm.Transfer` to `core` package and changed execution to call
`env.Transfer` instead of `core.Transfer` directly.
* Byte code VM now shares the same code as the JITVM
* Renamed Context to Contract
* Changed initialiser of state transition & unexported methods
* Removed the Execution object and refactor `Call`, `CallCode` &
`Create` in to their own functions instead of being methods.
* Removed the hard dep on the state for the VM. The VM now
depends on a Database interface returned by the environment. In the
process the core now depends less on the statedb by usage of the env
* Moved `Log` from package `core/state` to package `core/vm`.
2015-10-04 01:13:54 +02:00
Felix Lange
bfbcfbe4a9
all: fix license headers one more time
...
I forgot to update one instance of "go-ethereum" in commit 3f047be5a .
2015-07-23 18:35:11 +02:00
Felix Lange
3f047be5aa
all: update license headers to distiguish GPL/LGPL
...
All code outside of cmd/ is licensed as LGPL. The headers
now reflect this by calling the whole work "the go-ethereum library".
2015-07-22 18:51:45 +02:00
Jeffrey Wilcke
8b5a65c14a
core/vm: added str to op
2015-07-09 17:08:33 +02:00
Felix Lange
ea54283b30
all: update license information
2015-07-07 14:12:44 +02:00
obscuren
fa4aefee44
core/vm: cleanup and renames
2015-06-03 22:39:17 +02:00