Martin Holst Swende
b5fe81f093
core/vm: make gas cost reporting to tracers correct ( #22702 )
...
Previously, the makeCallVariantGasCallEIP2929 charged the cold account access cost directly, leading to an incorrect gas cost passed to the tracer from the main execution loop.
This change still temporarily charges the cost (to allow for an accurate calculation of the available gas for the call), but then afterwards refunds it and instead returns the correct total gas cost to be then properly charged in the main loop.
2024-11-01 11:36:52 +08:00
Daniel Liu
87a6b5f4c3
Merge pull request #689 from gzliudan/fix-st1005
...
all: fix staticcheck warning ST1005
2024-10-25 15:28:07 +08:00
Daniel Liu
c6e4e880ea
all: fix staticcheck warning SA4006: never used value
2024-10-24 17:37:19 +08:00
Daniel Liu
a79411fa06
all: fix staticcheck warning ST1005: incorrectly formatted error string
2024-10-24 09:48:20 +08:00
Daniel Liu
1c84a31bb6
core/vm: deepcopy jumptable when enabling extra eips ( #26137 )
2024-10-17 11:23:04 +08:00
Daniel Liu
4482ea4d84
core/vm: fix docstrings
2024-10-17 11:23:04 +08:00
Daniel Liu
480adaf960
core/vm: minor trivial clean up ( #25880 )
2024-10-17 11:23:04 +08:00
Daniel Liu
69cb57a0f4
core/vm: not deep copy return data slice upon call completion ( #25183 )
2024-10-17 11:23:04 +08:00
Daniel Liu
ee5dd8673f
core/vm: remove empty lines
2024-10-17 11:23:04 +08:00
Daniel Liu
16f2aabc64
core/vm: more linters ( #24783 )
2024-10-17 11:23:04 +08:00
Paweł Bylica
be6631beb0
core/vm: optimize jumpdest analysis ( #23500 )
...
core/vm: optimize PUSH opcode discrimination
2024-10-17 11:23:04 +08:00
Daniel Liu
1fa9e81870
core/vm: reduce overhead in instructions-benchmark ( #24860 )
2024-10-17 11:23:04 +08:00
Daniel Liu
c78b9e6245
core/vm: for tracing, do not report post-op memory ( #24867 )
2024-10-17 11:23:04 +08:00
Daniel Liu
45c644c43d
core/vm: update benchmark to use Errorf instead of Sprintf ( #24845 )
2024-10-17 11:23:04 +08:00
Daniel Liu
6fa968201f
core/vm: fix some typos
2024-10-17 11:23:04 +08:00
Daniel Liu
224caa5a08
core/vm: avoid memory expansion check for trivial ops ( #24048 )
2024-10-17 11:23:04 +08:00
Daniel Liu
532137c37b
core/vm: use golang native big.Int ( #26834 )
2024-10-17 10:36:53 +08:00
Daniel Liu
8e15f825ce
core/vm: use optimized bigint ( #26021 )
2024-10-17 10:36:53 +08:00
Daniel Liu
c87b7c3135
common/math: optimized modexp ( #25525 )
2024-10-17 10:36:53 +08:00
Daniel Liu
b653dbc60c
core/vm, protocol_params: implement eip-2565 modexp repricing ( #21607 )
2024-10-17 10:36:53 +08:00
Daniel Liu
edace6ac6c
all: change format 0x%x to %#x ( #25221 )
2024-09-27 15:24:31 +08:00
Daniel Liu
4f9501f12c
common, crypto: move fuzzers out of core ( #22029 )
2024-09-22 19:25:37 +08:00
Daniel Liu
a5531a2470
core/vm: remove redundant conversions ( #21903 )
2024-09-22 18:42:11 +08:00
Daniel Liu
67b5b2bf9a
core/vm: less allocations for various call variants ( #21222 )
2024-09-22 18:42:11 +08:00
Daniel Liu
a575d731d3
core/vm: combine function precompile and precompile2
2024-09-21 22:40:57 +08:00
Daniel Liu
5470485450
all: split vm.Context into BlockContext and TxContext ( #21672 )
2024-09-21 22:18:10 +08:00
Daniel Liu
05e52efbad
core/vm: marshall returnData as hexstring in trace logs ( #21715 )
2024-09-21 22:14:47 +08:00
Daniel Liu
4e832ee6f0
core/vm: avoid map lookups for accessing jumpdest analysis ( #21411 )
2024-09-21 22:01:56 +08:00
Daniel Liu
a020259bb5
core/vm: fix Byzantium address list ( #22603 )
2024-09-19 13:04:55 +08:00
Daniel Liu
3e4932e408
core/vm: surface some internal methods ( #20958 )
2024-08-30 12:50:04 +08:00
Daniel Liu
1f45af089a
core/vm: implement EIP 3541 ( #22809 )
2024-08-26 11:59:28 +08:00
Daniel Liu
6f1d1b6688
core/vm: implement EIP-2681: Limit account nonce to 2^64-1 ( #23853 )
2024-08-26 09:04:15 +08:00
wgr523
52077f18f3
support for golang tracers + add golang callTracer ( #558 )
...
* feat: rename Tracer interface to EVMLogger;
minor changes in API
refine api_tracer.go
refine Tracer interface
* fix: broken tracer tests
* feat: add BenchmarkTransactionTrace
* feat: tracer CaptureEnter CaptureExit in evm
* feat: upgrade js tracers with geth upstream
* chore: clean test
* feat: eth/tracers: support for golang tracers + add golang callTracer
cf. https://github.com/ethereum/go-ethereum/pull/23708
* chore: clean testdata json
* fix: change test due to IntrinsicGas is not upgraded
* feat: make native Tracer the default Tracer
* fix: update tracers.New in api
* fix: addr prefix in callTracer
* fix: remove `native` in BenchmarkTracers
* fix: return consensus error of InsufficientBalance for tx, instead of vmerr
* chore: drop js tracers: call and noop
2024-08-06 00:14:04 -07:00
Daniel Liu
7a95b4f907
core, eth, internal/ethapi: create access list RPC API ( #22550 )
2024-05-14 23:27:23 +08:00
Daniel Liu
5cb014b60f
core, eth/tracer: initialize tracer statedb in CaptureStart ( #22333 )
2024-05-14 23:27:23 +08:00
Daniel Liu
01e1728a94
all: add support for EIP-2718, EIP-2930 transactions ( #21502 )
2024-05-14 23:15:35 +08:00
Daniel Liu
8568af05cc
all: implement EIP-2929 (gas cost increases for state access opcodes) ( #21509 )
2024-04-22 21:14:54 +08:00
Wanwiset Peerapatanapokin
fb91c1e802
add trigger for disable XDCx precompiles ( #509 )
2024-04-22 11:43:22 +04:00
Daniel Liu
6a2f753cee
Merge pull request #472 from XinFinOrg/eip3855
...
core/vm: implement EIP-3855: PUSH0 instruction.
2024-03-07 23:01:33 +08:00
geruiwang
863d4f14e3
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>
2024-03-07 22:31:19 +08:00
geruiwang
968440ce3d
core/vm: implement EIP-3855: PUSH0 instruction.
2024-03-07 21:44:37 +08:00
Wang Gerui
0e36b5be42
fix typo in EIPs
2024-03-07 21:37:33 +08:00
Wanwiset Peerapatanapokin
ae10d7090c
Rollback privacy ( #477 )
...
Rollback the previous test removal or privacy package on devnet.
This reverts commit 4f79e535b37dc85144e2d38c2f2570b0ce4305b2.
This reverts commit 5a2722c268ec4f03f3117b1af2dee2411af4b13a.
2024-03-07 10:40:55 +04:00
Liam
38a192e672
Merge pull request #459 from XinFinOrg/eip4399
...
implement EIP-4399, PREVRANDAO opcode
2024-03-04 17:50:56 +11:00
Wanwiset Peerapatanapokin
b86c7f646f
Try remove privacy pkg ( #466 )
...
* try removing privacy pkg
* rm more reference
* trigger CI
2024-03-04 07:59:45 +04:00
Gerui Wang
a31489541d
implement EIP-4399, PREVRANDAO opcode.
...
and remove unused LondonBlock and BerlinBlock in `params/config.go` (already defined in constants.go)
2024-03-04 00:32:14 +08:00
Daniel Liu
928a0691ca
implement EIP-3198
2024-03-01 15:04:32 +08:00
lmittmann
b36678f7ad
core/vm: performance tweak of OpCode.String() ( #28453 )
...
make `opCodeToString` a `[256]string` array
Co-authored-by: lmittmann <lmittmann@users.noreply.github.com>
2024-03-01 14:13:24 +08:00
Leon
8b6db6d87a
core/vm: better handle error on eip activation check ( #25131 )
...
* core/vm: correct logic for eip check of NewEVMInterpreter
* refactor
2024-03-01 14:13:24 +08:00
Qian Bin
032b98e942
core/vm: optimize Memory.Set32 ( #24847 )
...
* core/vm: remove unnecessary memset for Memory.Set32
* core/vm: optimize Memory.Set32
2024-03-01 14:13:24 +08:00
s7v7nislands
62b62da730
core/vm: separate opcode group for 0x20 range ( #24850 )
2024-03-01 14:13:24 +08:00
s7v7nislands
ac35f0ecec
core/vm: clean up some dead functions ( #24851 )
2024-03-01 14:13:24 +08:00
Andrei Maiboroda
b022ba2c5d
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>
2024-03-01 14:13:24 +08:00
Paweł Bylica
6e92486296
core/vm: reverse bit order in bytes of code bitmap ( #24120 )
...
* core/vm: reverse bit order in bytes of code bitmap
This bit order is more natural for bit manipulation operations and we
can eliminate some small number of CPU instructions.
* core/vm: drop lookup table
2024-03-01 14:13:24 +08:00
Alex Beregszaszi
2ce30010bc
core/vm: remove unused code (IsStaticJump) ( #24085 )
2024-03-01 14:13:24 +08:00
Martin Holst Swende
fbc1cc11ba
core/vm: remove no-recursion option from config (24066)
2024-03-01 14:13:24 +08:00
Andrei Maiboroda
4c27910a77
core/vm: move interpreter interruption check to jump instructions ( #24026 )
...
* core/vm: Remove interpreter loop interruption check
* core/vm: Unit test for interpreter loop interruption
* core/vm: Check for interpreter loop abort on every jump
2024-03-01 14:13:24 +08:00
Paweł Bylica
7d3c783bb9
core/vm: fill gaps in jump table with opUndefined ( #24031 )
2024-03-01 14:13:24 +08:00
Alex Beregszaszi
ae267d3da7
core/vm: remove stack.pushN ( #24040 )
2024-03-01 14:13:24 +08:00
Alex Beregszaszi
b1c03864e6
core/vm: rename opSuicide to opSelfdestruct ( #24022 )
...
The opcode was renamed in the codebase in 2017, but the functions were kept unchanged.
2024-03-01 14:13:24 +08:00
Alex Beregszaszi
bfbb678309
core/vm: move interpreter.ReadOnly check into the opcode implementations ( #23970 )
...
* core/vm: Move interpreter.ReadOnly check into the opcode implementations
Also remove the same check from the interpreter inner loop.
* core/vm: Remove obsolete operation.writes flag
* core/vm: Capture fault states in logger
Co-authored-by: Martin Holst Swende <martin@swende.se>
* core/vm: Remove panic added for testing
Co-authored-by: Martin Holst Swende <martin@swende.se>
2024-03-01 14:13:24 +08:00
Andrei Maiboroda
002be52ae9
core/vm: don't copy JumpTable when no EIP mods are needed ( #23977 )
2024-03-01 14:13:24 +08:00
Alex Beregszaszi
c097e565fd
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.
2024-03-01 14:13:24 +08:00
Paweł Bylica
823ec33484
core/vm: simplify error handling in interpreter loop ( #23952 )
...
* core/vm: break loop on any error
* core/vm: move ErrExecutionReverted to opRevert()
* core/vm: use "stop token" to stop the loop
* core/vm: unconditionally pc++ in the loop
* core/vm: set return data in instruction impls
2024-03-01 14:13:24 +08:00
Andrei Maiboroda
6415934da9
core/vm: simplify op lookup in contract ( #23974 )
2024-03-01 14:13:23 +08:00
Martin Holst Swende
f7c6b1abd4
core/vm, core/state/snapshot: remove unused code ( #23956 )
...
* core/state/snapshot: remove wiper functionality
* core/vm: remove unused 'unofficial' opcodes
2024-03-01 14:13:23 +08:00
Paweł Bylica
3d3cc6c6d7
core/vm: use proper JumpTable type ( #23967 )
2024-03-01 14:13:23 +08:00
Martin Holst Swende
f9e14af6fd
core/vm: don't use iota for opcode definitions ( #23928 )
2024-03-01 14:13:23 +08:00
Paweł Bylica
dc8cdf3e62
core/vm: rework jumpdest analysis benchmarks ( #23499 )
...
* core/vm: rework jumpdest analysis benchmarks
For BenchmarkJumpdestOpAnalysis use fixed code size of ~1.2MB
and classic benchmark loop.
* core/vm: clear bitvec in jumpdest analysis benchmark
2024-03-01 14:13:23 +08:00
Guillaume Ballet
f05fa009e2
core/vm: fix typo in comment ( #23450 )
2024-03-01 14:13:23 +08:00
Daniel Liu
7a55b9f788
core/state: remove unused methods ReturnGas ( #23092 )
2024-03-01 14:13:23 +08:00
Evgeny Danilenko
21bbe5f568
core/vm: avoid duplicate log in json logger ( #22825 )
2024-03-01 14:13:23 +08:00
aaronbuchwald
7c6908b959
core/vm: fix interpreter comments ( #22797 )
...
* Fix interpreter comment
* Fix comment
2024-03-01 14:13:23 +08:00
Paweł Bylica
9c8d228dda
core/vm: clean up contract creation error handling ( #22766 )
...
Do not keep separate flag for "max code size exceeded" case, but instead
assign appropriate error for it sooner.
2024-03-01 14:13:23 +08:00
aaronbuchwald
6077ecb195
core/vm: replace repeated string with variable in tests ( #22774 )
2024-03-01 14:13:23 +08:00
Martin Holst Swende
446b9e86f4
core/vm, params: make 2200 in line with spec ( #21605 )
2024-03-01 14:13:23 +08:00
Péter Szilágyi
06d5da016c
core/vm: use pointers to operations vs. copy by value ( #21336 )
2024-03-01 14:13:23 +08:00
Paweł Bylica
192edc0c63
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>
2024-03-01 14:13:23 +08:00
Daniel Liu
3f10de24b0
core/vm/privacy: fix test case in ringct_test.go ( #424 )
2024-02-19 10:52:33 +08:00
Liam
9eea134daa
Merge pull request #424 from gzliudan/RIN-07
...
check parameters not to be nil when call function curve.Add
2024-02-12 22:23:34 +11:00
Wanwiset Peerapatanapokin
b272e7418c
Fix curve ( #429 )
...
* update secp256k1 library from go-eth code
* cast deprecated functions to use new BitCurve type
* add IsOnCurve checks and tests
* add test outcome check
* fix test
2024-02-11 15:59:28 +04:00
Wanwiset Peerapatanapokin
30581274a1
RIN-08 RIN-10 RIN-11 Fix curve issues ( #425 )
...
* update secp256k1 library from go-eth code
* cast deprecated functions to use new BitCurve type
* add IsOnCurve checks and tests
* add test outcome check
2024-02-11 01:51:11 +04:00
Banana-J
f453ce8315
fix: missing validation in scalar range check ( #417 )
2024-02-09 19:56:27 +11:00
Daniel Liu
d440d1d2c6
not pass nil parameters to function curve.Add
2024-02-08 14:50:44 +08:00
Banana-J
ea7d5cc9ad
fix: remove unnecesasry int conversion in the bulletproof.go ( #419 )
...
Co-authored-by: wjrjerome <wjrjerome@babylonchain.io>
2024-02-06 22:13:28 +11:00
Liam
fea90a97df
RIN-02 Panic Due to Integer Overflow in Signature Size Calculation ( #401 )
...
* RIN-02 Panic Due to Integer Overflow in Signature Size Calculation
* assert the error
* simply overflow check
* simply overflow check
---------
Co-authored-by: Liam Lai <liam.lai@datameshgroup.com>
2024-02-03 10:02:14 +08:00
Banana-J
d70c15667b
chore: remove the unused method in ringct.go ( #411 )
2024-01-29 11:31:02 +11:00
Banana-J
cac03bd960
fix: GenNewKeyRing should return out of bound error if s and ring size equal in value ( #412 )
2024-01-29 11:27:48 +11:00
Banana-J
743fc8500b
chore: return statement optimization ( #406 )
2024-01-28 16:58:41 +11:00
Daniel Liu
ffa38cd8d1
fix bug and eliminate loop in func PadTo32Bytes
2024-01-24 16:31:13 +08:00
Wanwiset Peerapatanapokin
aaa246f60e
PDF-01 ( #397 )
...
* replace deprecated ioutil lib calls
* fix for FileInfo type required
* fix for ioutil.Discard
* fix .Discard
* fix for go-bindata generated files
2024-01-19 15:05:03 +04:00
wgr523
3e0505a0c7
cherry-pick from d8ada03eac ( #255 )
2023-05-25 14:23:27 +10:00
Jianrong
acc2e411a6
fix or skip tests due to PR-136 change
2021-10-20 20:17:47 +11:00
olumuyiwadad
b5abbfed79
new EVM Upgrade
...
- Solidity Upgraded up to v0.8.0
- Fixed and Added eth_chainId
- Fix error in TransactionRecipet
- Reward halving issue fixed
2021-09-21 16:53:46 +05:30
olumuyiwadad
571c41f891
FIx Bad block error.
2021-09-17 17:59:06 +05:30
dev-vadim
dbe8c9d984
upgrade XDC.Network with v1.8.27.
2020-12-23 16:32:06 +05:30
Martin Holst Swende
c7664b0636
core, cmd/puppeth: implement constantinople fix, disable EIP-1283 ( #18486 )
...
This PR adds a new fork which disables EIP-1283. Internally it's called Petersburg,
but the genesis/config field is ConstantinopleFix.
The block numbers are:
7280000 for Constantinople on Mainnet
7280000 for ConstantinopleFix on Mainnet
4939394 for ConstantinopleFix on Ropsten
9999999 for ConstantinopleFix on Rinkeby (real number decided later)
This PR also defaults to using the same ConstantinopleFix number as whatever
Constantinople is set to. That is, it will default to mainnet behaviour if ConstantinopleFix
is not set.This means that for private networks which have already transitioned
to Constantinople, this PR will break the network unless ConstantinopleFix is
explicitly set!
2019-01-29 17:49:27 +01:00
Dave McGregor
33d233d3e1
vendor, crypto, swarm: switch over to upstream sha3 package
2019-01-04 09:26:07 +02:00
Martin Holst Swende
42a914a84f
cmd/evm, core/vm, eth: implement api methods to do stdjson dump to local filesystem
2018-12-10 12:33:50 +02:00
Martin Holst Swende
7c657fc789
tests, core: update tests and make STATICCALL cause touch-delete ( #18187 )
2018-11-29 10:51:57 +02:00