Guillaume Ballet
1930b97b65
simplified gas accounting layer ( #405 )
...
* simplified gas accounting layer
* integrate some review feedback
* Apply suggestions from code review
Co-authored-by: Ignacio Hagopian <jsign.uy@gmail.com>
* more suggestions from code review
* don't charge creation gas + charge code chunks in create
* A couple more fixes
* make linter happy
* fix create init gas consumption issue
* fix: in gas funcs, use tx witness instead of global witness
* fix linter issue
* Apply suggestions from code review
Co-authored-by: Ignacio Hagopian <jsign.uy@gmail.com>
* fix: EXTCODECOPY gas consumption
* fix warm gas costs
* fix the order gas is charged in during contract creation epilogue
* fix selfdestruct
* fix #365 in eip rewrite (#407 )
* fix: OOG type in code creation OOG (#408 )
* core/vm: charge BLOCKHASH witness cost (#409 )
* core/vm: charge BLOCKHASH witness cost
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* remove gas optimization for now
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* remove redundant logic for contract creation (#413 )
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* fix precompile address check for charging witness costs & fix missing value-bearing rule (#412 )
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* core/vm: fix wrong check (#416 )
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* charge for account creation if selfdestruct creates a new account (#417 )
* add key comparison test (#418 )
* core/vm: charge contract init before execution logic (#419 )
* core/vm: charge contract init before execution logic
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* fix CREATE2 as well
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Guillaume Ballet <3272758+gballet@users.noreply.github.com>
* quell linter
---------
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Ignacio Hagopian <jsign.uy@gmail.com>
2024-05-08 13:25:15 +02:00
jwasinger
988d84aa7c
core/state, core/vm: implement EIP 6780 ( #27189 )
...
EIP-6780: SELFDESTRUCT only in same transaction
> SELFDESTRUCT will recover all funds to the caller but not delete the account, except when called in the same transaction as creation
---------
Co-authored-by: Martin Holst Swende <martin@swende.se>
2023-07-17 13:02:18 -04:00
Charles Cooper
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
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
Andrei Maiboroda
793f0f9ec8
core/vm: implement EIP-3860: Limit and meter initcode ( #23847 )
...
Implementation of https://eips.ethereum.org/EIPS/eip-3860 , limit and meter initcode. This PR enables EIP-3860 as part of the Shanghai fork.
Co-authored-by: lightclient@protonmail.com <lightclient@protonmail.com>
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
2023-01-11 04:05:47 -05:00
Mark Tyneway
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
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
Martin Holst Swende
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
Martin Holst Swende
a5669ae292
core, params: implement EIP-3529 ( #22733 )
...
* core, params: implement EIP-3529
* core/vm: add london instructionset
* core/vm: add method doc for EIP enabler
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
2021-05-07 09:25:32 +03:00
Martin Holst Swende
0fda25e471
eth/tracers, core: use scopecontext in tracers, provide statedb in capturestart ( #22333 )
...
Fixes the CaptureStart api to include the EVM, thus being able to set the statedb early on. This pr also exposes the struct we used internally in the interpreter to encapsulate the contract, mem, stack, rstack, so we pass it as a single struct to the tracer, and removes the error returns on the capture methods.
2021-03-25 10:13:14 +01:00
Péter Szilágyi
7834e4a278
core, eth: unship EIP 2315
2021-03-02 23:40:57 +02:00
Martin Holst Swende
6487c002f6
all: implement EIP-2929 (gas cost increases for state access opcodes) + yolo-v2 ( #21509 )
...
* core/vm, core/state: implement EIP-2929 + YOLOv2
* core/state, core/vm: fix some review concerns
* core/state, core/vm: address review concerns
* core/vm: address review concerns
* core/vm: better documentation
* core/vm: unify sload cost as fully dynamic
* core/vm: fix typo
* core/vm/runtime: fix compilation flaw
* core/vm/runtime: fix renaming-err leftovers
* core/vm: renaming
* params/config: use correct yolov2 chainid for config
* core, params: use a proper new genesis for yolov2
* core/state/tests: golinter nitpicks
2020-10-23 08:26:57 +02:00
Péter Szilágyi
508891e64b
core/vm: use pointers to operations vs. copy by value
2020-07-16 15:32:01 +03:00
Martin Holst Swende
e376d2fb31
cmd/evm: add state transition tool for testing ( #20958 )
...
This PR implements the EVM state transition tool, which is intended
to be the replacement for our retesteth client implementation.
Documentation is present in the cmd/evm/README.md file.
Co-authored-by: Felix Lange <fjl@twurst.com>
2020-06-30 10:12:51 +02:00
Paweł Bylica
cf6674539c
core/vm: use uint256 in EVM implementation ( #20787 )
...
* core/vm: use fixed uint256 library instead of big
* core/vm: remove intpools
* core/vm: upgrade uint256, fixes uint256.NewFromBig
* core/vm: use uint256.Int by value in Stack
* core/vm: upgrade uint256 to v1.0.0
* core/vm: don't preallocate space for 1024 stack items (only 16)
Co-authored-by: Martin Holst Swende <martin@swende.se>
2020-06-08 15:24:40 +03:00
Greg Colvin
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
Martin Holst Swende
8dc8941551
core/vm: use a callcontext struct ( #20761 )
...
* core/vm: use a callcontext struct
* core/vm: fix tests
* core/vm/runtime: benchmark
* core/vm: make intpool push inlineable, unexpose callcontext
2020-04-07 12:45:21 +03:00
Gregory Markou
4be8840120
core/vm: use dedicated SLOAD gas constant for EIP-2200 ( #20646 )
2020-02-18 15:07:41 +01:00
Péter Szilágyi
3bb9b49afb
core/vm, params: implement EIP2200, SSTORE optimizations ( #19964 )
...
* core/vm, params: implement EIP2200, SSTORE optimizations
* core/vm, params: switch EIP2200 to Wei's version
2019-08-19 14:39:38 +03: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
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