Jamie Lokier
c7e1cb61ee
Transaction: Make transaction validation use new function txCallEvm
...
Split out and move the EVM setup and call in `processTransaction` to
`call_evm`. This is the last part of the main program which calls the EVM
to be moved. (There's still test code.)
While we're here, move the EIP2929 access list setup too, as the similarity
to `rpcInitialAccessListEIP2929` is obvious.
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-05-04 00:56:03 +01:00
Jamie Lokier
4187eb1959
Transaction: Prepare txRefundGas to support txCallEvm
...
There's only one call left to `refundGas(Transaction, ...)`, and the
similarity to the tail of `rpcEstimateGas` is obvious.
Gather this into `call_evm`: `refundGas` -> `txRefundGas`.
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-05-03 19:51:20 +01:00
Jamie Lokier
52fd8b8129
Transaction: Prepare txSetupComputation to support txCallEvm
...
After recent changes, there's only one call left to `setupComputation`, and
it's just a variant like `rpcSetupComputation` but for transaction processing.
The similarity to `rpcSetupComputation` is obvious.
Gather this into `call_evm`: `setupComputation` -> `txSetupComputation`.
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-05-03 19:51:20 +01:00
Jamie Lokier
7eb4471004
Bugfix: Avoid numeric overflow when validating transaction value
...
It's possible for `tx.value` in the transaction to have a deliberately
constructed large 256-bit value, such that adding `gasLimit * gasPrice` to it
overflows to a small value.
Prior to this patch, the code would allow such a transaction to pass
validation, even though such a large transfer cannot be valid.
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-05-03 19:34:22 +01:00
Jordan Hrycaj
dfc93a74ad
moved validateTransaction() to executor
...
why:
not part of VM (see andri's requested change at #573 )
2021-04-07 15:13:28 +01:00
Jordan Hrycaj
827b8c9c81
reset explicit import paths for local modules
...
why:
it was convenient to have relocatable source modules when writing the
vm interface wrappers. this patch moves it back to the standard.
also:
there are no deep links into the vm folder anymore which leaves some
room for manoeuvring inside
2021-04-01 12:53:22 +01:00
Jordan Hrycaj
00ba7a2718
merge vm_forks and vm_opcode_values => vm_type2
...
why:
all types, but they cannot be merged int vm_types because of a circular
dependency.
2021-03-31 17:53:15 +01:00
Jordan Hrycaj
7b5d00307c
provide vm_precompiles as import/export wrapper
...
details:
moved original vm/precompiles.nim => vm/nvm_precompiles.nim
2021-03-31 16:47:15 +01:00
Jordan Hrycaj
eee24de450
provide vm_message as import/export wrapper
...
details:
moved original vm/message.nim => vm/nvm_message.nim
2021-03-31 16:47:02 +01:00
Jordan Hrycaj
cf3a356d76
provide vm_computation as import/export wrapper
...
details:
moved original vm/computation.nim => vm/nvm_computation.nim
2021-03-31 16:38:10 +01:00
Jordan Hrycaj
3a3e4d5707
provide vm_forks as import/export wrapper
...
details:
moved original vm/interpreter/vm_forks.nim => vm/interpreter/nvm_forks.nim
2021-03-31 16:03:34 +01:00
jangko
3db535aa39
EIP2929 implementation
2021-01-11 14:56:42 +07:00
jangko
c68aa47464
fixes fork comparison related code
2020-11-19 11:59:53 +07:00
jangko
648cc77f80
add berlin hf enum
2020-11-19 10:58:37 +07:00
jangko
c9802edfce
setup block and state env for more complex eth rpc tests
2020-07-28 23:48:45 +07:00
jangko
336efdb0c3
implement web3, net, and some eth namespace rpc
2020-07-22 23:57:55 +07:00
jangko
04dcec03a3
fix missing import when chronicles enabled
2020-07-21 15:12:59 +07:00
jangko
e37cacd8f1
implement forkid calculation and tests for each supported network
2020-07-04 13:23:09 +07:00
jangko
f401622782
cache miner address instead of recalculation
2020-06-22 07:48:23 +07:00
jangko
2385df7bae
miner address calculation for PoA consensus engine
2020-06-19 20:24:09 +07:00
jangko
bd7e1fe2e5
reuse VMState and AccountsCache for better performance
2020-06-18 13:16:38 +07:00
jangko
eabacb0a33
allow nimbus to read geth database
2020-06-18 13:16:25 +07:00
jangko
7c026e1b48
modify VMState to enable witness data collection
2020-06-06 10:05:11 +07:00
jangko
844071033a
fix at various places related to missing accounts_cache.persist call
2020-06-01 13:45:32 +07:00
jangko
71514a0a66
replace state_db with accounts_cache
2020-05-30 10:14:59 +07:00
Jacek Sieka
4ade5797ee
rlp: don't use ranges / experimental features ( #495 )
2020-04-20 20:12:44 +02:00
andri lim
af02a3b1b2
reduce unused import warnings
2020-04-15 19:05:57 +07:00
andri lim
87bae2bb78
switch to new toFork
2020-04-12 18:02:59 +07:00
andri lim
6591893158
change FkGlacierMuir to FkMuirGlacier [skip ci]
2020-04-11 16:02:15 +07:00
andri lim
266e0ddb1e
room for EIP-1283
2020-03-24 17:21:13 +07:00
andri lim
40a7b7da1b
fixes glacier muir block reward
2020-02-20 09:21:35 +02:00
andri lim
270854a5aa
simplify 'gasUsed' and 'refundGas'
2020-02-12 17:53:26 +02:00
andri lim
d9991b1e8b
simplify cash
2020-02-12 17:53:26 +02:00
andri lim
55494f06e5
move 'validateTransaction' from GST into 'processTransaction'
2020-01-24 19:52:55 +07:00
andri lim
ea4f851f80
move create contract incNonce to 'applyMessage'
2020-01-23 18:07:44 +02:00
andri lim
ec8abf40e4
move 'tx.getRecipient' into 'setupComputation'
2020-01-23 18:07:44 +02:00
andri lim
73c60fe694
unifying contract collision detection
2020-01-20 18:36:58 +02:00
andri lim
63e886655b
fixes coinbase suicide bugs
2020-01-20 18:36:58 +02:00
andri lim
5e6018b20b
[skip ci] collectTouchedAccounts reduction
2020-01-19 19:17:37 +02:00
andri lim
9dbcc7bb69
improve comment in 'processBlock'
2019-12-10 12:34:48 +02:00
andri lim
1ffb992674
multi root state trie implementation
2019-12-10 12:34:48 +02:00
andri lim
97e89b3afe
implement 'getCommittedStorage'
2019-11-14 10:11:35 +00:00
andri lim
c4dcf5da30
reduce compiler warnings
2019-11-13 21:49:39 +07:00
andri lim
4cf3931f34
add istanbul block reward
2019-11-12 15:51:48 +00:00
andri lim
26ee138ea5
fixes GST regression
2019-09-26 12:33:43 +03:00
andri lim
12960c27ce
fixes coinBase suicide
2019-09-26 12:33:43 +03:00
andri lim
12ea5247d6
execute transactions
2019-09-26 12:33:43 +03:00
kdeme
973ea96e1a
Add txRoot check to avoid assertions in tracer + don't throw exception
2019-07-15 13:26:33 +02:00
kdeme
f62816c4f3
Use of BlockNumber to be able to switch between UInt256 and int64
2019-07-10 20:56:05 +02:00
kdeme
f50d3f84f9
Add bounds check on getSuccessorHeader and getAncestorHeader
2019-07-09 15:52:41 +02:00