jangko
c9cfebfa97
config: rearrange getConfiguration usage
...
avoid using getConfiguration inside object construction and
replace it with passing suitable param
2021-09-08 08:07:10 +07:00
jangko
34972c6cea
config: remove accounts management from NimbusConfiguration
...
a new AccountsManager and EthContext is created for managing
keystore and accounts
this is a preparation for new config using ConfUtils
2021-09-07 22:02:29 +07:00
bmoo
b09ad5cacb
code cleanup removed unused imports
2021-08-18 10:35:36 +07:00
Jamie Lokier
5ddfd7dd05
RPC: Calculate `eth_protocolVersion` from live protocol
...
In RPC `eth_protocolVersion`, look at the live `EthereumNode` to find which
version of `eth/NN` protocol is active, instead of trusting a compile-time
constant. It's better to check dynamically. GraphQL already does this.
As a result, the RPC code doesn't depend on `eth_protocol` any more.
To make sure there are no more accidental users of the old constant,
`protocolVersion` is no longer exported from `protocol_eth65`.
(The simplest way to support `eth/65` was to make `eth_protocolVersion` use
`protocol_eth65.protocolVersion`, to get 65. But that's silly. More
seriously, when we add another version (`eth/66`) running alongside `eth/65`,
that expression would still compile ok yet return the wrong value, while still
passing the RPC test suite.)
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-07-27 14:12:51 +01:00
Jamie Lokier
bb282a5348
RPC: Add comment about `eth_protocolVersion` expectations
...
While looking at the RPC `eth_protocolVersion` to see exactly what it should
report when there are multiple `eth/NN` versions supported by a node, I found
some differences in the documentation:
- The old Ethereum wiki documents it as returning a decimal string.
- But Infura documents it as returning 0x-prefixed hex string.
- Geth 1.10.0 has removed this call entirely "as it makes no sense".
https://eth.wiki/json-rpc/API#eth_protocolversion
https://infura.io/docs/ethereum/json-rpc/eth-protocolVersion
https://blog.ethereum.org/2021/03/03/geth-v1-10-0/#compatibility
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-07-27 14:12:49 +01:00
Jamie Lokier
00647b373c
Sync: Switch other modules over to the `eth/65` module
...
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-07-27 14:12:41 +01:00
jangko
4a188788bd
preparation for EIP-1559 implementation
...
- unify signTx in test_helper and signTransaction in rpc_utils
and put it into transaction.nim
- clean up mess by previous EIP-2930
2021-06-29 07:33:48 +07:00
Jamie Lokier
ef7773daa6
Whisper: Remove Whisper-specific hexstring/JSON/key storage support
...
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-06-01 18:12:48 +01:00
Jamie Lokier
613f06e61c
Whisper: Remove all the main Whisper code (config, startup, RPC etc)
...
This is the main patch which removes Whisper code from `nimbus-eth1` code.
It removes all configuration, help, startup, JSON-RPC calls and most types.
Note, there is still Whisper functionality in `nim-eth`. Also, the "wrapper"
under `wrappers/` isn't dealt with by this change, but it's not built by
default (and might not currently work).
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-06-01 18:12:48 +01:00
Jamie Lokier
5e718bcbe2
EVM: Remove most unused imports of `vm_*` files
...
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-06-01 16:54:38 +01:00
jangko
ec1af91370
implement "net_nodeInfo" rpc
...
fixes #569
2021-05-19 16:35:13 +07:00
jangko
77f080c8c2
eip2718: nimbus is compileable
2021-05-15 18:09:36 +07:00
jangko
f2491e6307
fixes crappy custom genesis and chain config parser
...
instead of using stdlib/json, now we switch to json_serialization
the result is much tidier code and more robust when parsing
optional fields.
fixes #635
2021-05-13 16:04:08 +07:00
Jamie Lokier
8bda81496a
RPC: Move EVM-calling function estimateGas to rpcEstimateGas
...
`estimateGas` used by JSON-RPC is another way to setup and call the EVM,
also used by GraphQL. Move it to `transaction/call_evm`.
This function has too much direct knowledge of details that shouldn't be used
outside transaction handling code, details we need to change when changing the
db and transaction memory layer.
Moving this one exposed quite a bit of abstraction leakage, as it calls
directly to the hexary trie db around `processTransaction`.
It looks like the _intended_ functionality of `estimateGas` is similar to
`rpcDoCall` with the only real difference being to not store the final state.
It looks like the extra stuff in `estimateGas` compared with `doCall` is a
messy workaround for computation not exposing the right API ("don't save final
state") for RPC to use.
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-05-03 10:59:10 +01:00
Jamie Lokier
2732af99eb
RPC: Move EVM-calling function doCall to rpcDoCall
...
`doCall` used by JSON-RPC is another way to setup and call the EVM.
Move it to `transaction/call_evm`.
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-05-03 10:59:07 +01:00
Jamie Lokier
7c3b7ab7a8
RPC: Gather EVM-calling functions to one place; rpcSetupComputation
...
Start gathering the functions that call the EVM into one place,
`transaction/call_evm.nim`.
This is first of a series of changes to gather all ways the EVM is called to
one place. Duplicate, slightly different setup functions have accumulated over
time, each with some knowledge of EVM internals. When they are brought
together, these methods will be changed to use a single entry point to the EVM,
allowing the entry point to be refactored, EVMC to be completed, and async
concurrency to be implemented on top. This also simplifies the callers.
First, a helper function used by RPC and GraphQL to make EVM calls without
permanently modifying the account state. `setupComputation` ->
`rpcSetupComputation`.
Signed-off-by: Jamie Lokier <jamie@shareable.org>
2021-05-03 10:59:05 +01:00
jangko
3dfc1501f0
modify estimateGas in rpc_utils.nim and it can be reusable for graphql too
2021-04-24 10:56:22 +07:00
jangko
82d4f6a2d4
fixes getReceipts proc signature in db_chain.nim
...
instead of using header as input param, now getReceipts using
receiptRoot hash, the intention is clearer and less data passed around
when we only using receiptRoot instead of whole block header.
2021-04-24 10:51:05 +07: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
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
8486c1834c
fixes #558 , use distinct uint for ChainId and NetworkId to prevent confusion
2021-02-14 11:01:27 +07:00
jangko
f987e86562
implement more eth rpc
2020-07-30 14:21:11 +07:00
jangko
9c38266ba7
implement eth_estimateGas
2020-07-29 12:42:32 +07:00
jangko
c9802edfce
setup block and state env for more complex eth rpc tests
2020-07-28 23:48:45 +07:00
jangko
bb89a296dd
implement eth_signTransaction, eth_sendTransaction, eth_sendRawTransaction, eth_call
2020-07-24 19:44:36 +07:00
jangko
7819dae7ce
implement eth_signTransaction
2020-07-23 22:30:42 +07:00
jangko
f82dff64fa
implement more eth rpc and keystore management
2020-07-23 14:54:32 +07:00
jangko
336efdb0c3
implement web3, net, and some eth namespace rpc
2020-07-22 23:57:55 +07:00
jangko
207065746c
reduce more warnings
2020-07-21 13:25:27 +07:00
jangko
845671bf0a
fix compilation error following breaking changes in nim-eth
2020-07-20 13:50:05 +07:00
jangko
12ddfee675
fix compilation error related to lib-secp256k1 changes
2020-06-24 17:07:33 +07:00
jangko
438ad832cc
fix rpc/p2p.nim
2020-06-22 10:59:24 +07:00
jangko
844071033a
fix at various places related to missing accounts_cache.persist call
2020-06-01 13:45:32 +07:00
kdeme
769228418e
Remove wakunode and waku rpc code from repository
2020-05-07 20:49:14 +03:00
Jacek Sieka
4ade5797ee
rlp: don't use ranges / experimental features ( #495 )
2020-04-20 20:12:44 +02:00
andri lim
860d8e9705
fix rpc/p2p
2020-04-13 09:41:18 +07:00
andri lim
87bae2bb78
switch to new toFork
2020-04-12 18:02:59 +07:00
Jacek Sieka
1d472cf090
Eth keys ( #482 )
...
* bump nim-eth, fix deprecated calls
2020-04-05 15:12:48 +02:00
kdeme
55fb1294ed
Check all subscribed topics in quicksim + bump vendor/nim-eth
2020-02-14 11:36:37 +01:00
kdeme
b959b14109
Update to use waku topic-interest
2020-02-07 08:59:19 +01:00
Kim De Mey
a2478baeff
Merge pull request #446 from status-im/waku-queue-fixes
...
Bump vendor/nim-eth for waku/whisper queue fixes
2020-01-23 22:50:12 +01:00
andri lim
d656f7f701
rename 'txContext' to 'setupTxContext'
2020-01-23 18:07:44 +02:00
kdeme
4ec126afaf
More cosmetic changes
2020-01-23 15:40:41 +01:00
andri lim
e8ec1706ed
fixes rpc compilation error
2020-01-23 12:39:36 +02:00
Zahary Karadjov
d23a33a80c
Cosmetic improvements
2020-01-23 12:39:36 +02:00
kdeme
ca6890b026
Change Waku RPC methods prefix
2020-01-23 12:39:36 +02:00
kdeme
d56655d278
Move WhisperKeys to KeyStorage
2020-01-23 12:39:36 +02:00
kdeme
776f924e39
Small fixes/improvements
2020-01-23 12:39:36 +02:00
kdeme
56f46357e6
Generate and use random topics in waku simulation
2020-01-23 12:39:36 +02:00
kdeme
ed79c4dfdc
Add quick waku simulation with hardcoded network
2020-01-23 12:39:36 +02:00
kdeme
8c3595ff94
Bump vendor/nim-eth and fix changes
2020-01-23 12:39:36 +02:00
kdeme
6e4b73b562
Fix bloom filter of a new Waku/Whisper filter and update automatically for light node
2020-01-23 12:39:36 +02:00
kdeme
c3aeb15ce5
Introduce WakuMode
2020-01-23 12:39:36 +02:00
kdeme
7b80b313e4
Start implementation of waku node
2020-01-23 12:39:36 +02:00
andri lim
c1ef8632b2
move fork and gasCosts from Computation to vmState
2020-01-20 18:36:58 +02:00
andri lim
0b99b76cd1
change 'BaseComputation' to 'Computation'
2020-01-20 18:36:58 +02:00
andri lim
79df931234
simplifies computation.getFork
2020-01-20 18:36:58 +02:00
andri lim
e4db21272c
fixes rpc/p2p.nim compilation error
2020-01-19 19:17:37 +02:00
andri lim
40ddbca1ee
[skip ci] simplify EVM message creation
2020-01-19 19:17:37 +02:00
kdeme
9aae2f9463
No more blind except
2019-12-05 13:02:21 +01:00
andri lim
c4dcf5da30
reduce compiler warnings
2019-11-13 21:49:39 +07:00
Ștefan Talpalaru
70bcce2132
a couple of Nim 1.0.2-related fixes
2019-10-28 22:21:20 +07:00
andri lim
7c094a2a3e
initial implementation of transaction test
2019-08-29 19:54:38 +07:00
kdeme
f62816c4f3
Use of BlockNumber to be able to switch between UInt256 and int64
2019-07-10 20:56:05 +02:00
Jacek Sieka
2763bd0dd5
std_shims -> stew
2019-07-07 12:12:01 +02:00
kdeme
e94c2f7c15
Fix fromJson checks for uint256
2019-06-20 10:50:29 +03:00
kdeme
529fda3e3e
Fix uint256 rpc overload to show correct hex value. #338
2019-06-19 15:49:47 +03:00
Bruno Škvorc
023b90fde8
Merge pull request #286 from kdeme/feature/whisper-rpc
...
[WIP] Initial implementation of Whisper RPC
2019-05-01 23:00:54 +02:00
kdeme
9de9741e3c
Fix more return values + minor improvements
2019-04-26 13:40:28 +02:00
kdeme
28dfaad588
Fix web3_sha3
2019-04-26 13:38:50 +02:00
kdeme
e8a997cf11
Fix return values (raise errors) for most of the calls + some minor TODOs
2019-04-26 13:38:50 +02:00
kdeme
ce523550c0
Use directly the Whisper types instead of distinct strings, we test for string in fromJson anyhow
2019-04-26 13:38:50 +02:00
kdeme
1df3c7202b
Fix & add Whisper RPC tests + add isValidHexData with length check
2019-04-26 13:38:50 +02:00
kdeme
65908d5359
Add shh_generateSymKeyFromPassword implementation
2019-04-26 13:38:50 +02:00
kdeme
d43f20c65a
Initial implementation of Whisper RPC
2019-04-26 13:38:50 +02:00
andri lim
90e3a4320a
fix revert opcode at first level computation
2019-04-26 07:31:13 +07:00
andri lim
6295e6a7e4
fix touched miner problem, GST +25
2019-04-26 07:31:11 +07:00
andri lim
2b7d89fa9d
make test green
2019-04-18 15:26:09 +07:00
andri lim
be79bc8740
remove opCodeExec, use executeOpcodes
2019-03-21 09:32:48 +07:00
Ștefan Talpalaru
f62601e844
Merge branch 'non_recursive_evm' of github.com:jangko/nimbus into jangko-non_recursive_evm
2019-03-20 14:43:50 +01:00
andri lim
cd765bf452
fix create contract address collision, GST +1
2019-03-18 12:48:32 +07:00
Ștefan Talpalaru
a67edd693a
assert() -> doAssert()
2019-03-13 22:36:54 +01:00
andri lim
e2311d798b
fix recurring symbol collision problem
2019-03-07 22:53:09 +07:00
andri lim
2c032ad1ab
refactor utils
2019-02-27 13:30:18 +02:00
andri lim
fdc34a4cf6
fixes vmState construction
2019-02-15 17:20:51 +02:00
Yuriy Glukhov
481c6cf4ed
Use nim-eth ( #224 )
2019-02-05 20:15:50 +01:00
Zahary Karadjov
c98e337090
remove the need for gcsafe overrides
2019-01-15 18:59:24 +02:00
Ștefan Talpalaru
a431ceed11
add "--threads:on" to tests and main binary
...
- some "funcs" were no longer considered side-effect free, so I made
them procs
- added {.base.} to some base methods to avoid a deprecation warning
2019-01-15 18:59:24 +02:00
Ștefan Talpalaru
7c7260552d
rebase and various fixes
...
- port to new APIs
- added copyright headers
- bumped the copyright interval in modified files
- fixed tests
- reorganised imports
- normalised function names
- deleted some trailing space
- added test_rpc to all_tests
- assert() -> doAssert()
- moved the RPC port in a constant for the test suite
2019-01-06 20:19:48 +01:00
coffeepots
ab0f8f6748
Update eth_estimateGas to use optional types
2019-01-06 19:03:34 +01:00
coffeepots
3f1122702e
Initial commit for eth_estimateGas
2019-01-06 19:03:34 +01:00
coffeepots
ac9fb37465
Initial commit for eth_estimateGas
2019-01-06 19:03:20 +01:00
andri lim
281b7dffac
implement debug_setHead
2019-01-06 13:17:08 +02:00
andri lim
e78fb72ef6
fixes #188
2019-01-06 13:16:45 +02:00
andri lim
5cf43c2909
implement dumpDebuggingMetaData
2019-01-06 11:43:38 +02:00
andri lim
a6bf970b1b
some cleanup
2019-01-06 11:43:38 +02:00
andri lim
3a355e0569
implement debug_traceBlock
2019-01-06 11:43:38 +02:00
andri lim
6dc4b0be9a
implement dumpBlockState
2019-01-06 11:43:38 +02:00
andri lim
35c1c7e075
move block processing to executor
2019-01-06 11:43:38 +02:00
andri lim
f613f8b3c6
add dumpBlockState stub
2019-01-06 11:43:38 +02:00
andri lim
ff08a6ad95
fix some typo
2018-12-16 15:38:51 +02:00
andri lim
8c6cec4999
fix getTransactionReceipt
2018-12-16 15:38:51 +02:00
coffeepots
51df75a296
Add WhisperFilterOptions
2018-12-05 19:11:17 +02:00
coffeepots
ef172a857a
Update new filter signature
2018-12-05 19:11:17 +02:00
coffeepots
ce3c8eaf05
Update whisper types to be optional
2018-12-05 19:11:17 +02:00
andri lim
0b7b577af6
add more options to debug_traceTransaction
2018-12-05 22:01:29 +07:00
andri lim
5509c66cce
implement transaction tracer
2018-12-05 22:01:28 +07:00
coffeepots
9b53f8cda4
Updated traceTransaction to accept a hash
2018-11-29 17:09:59 +00:00
coffeepots
8d4c00cd3f
Removed utils from p2p and updated names in rpc_utils
2018-11-29 17:08:13 +00:00
coffeepots
a5aad977dd
Merge remote-tracking branch 'origin/rpc_eth_call'
2018-11-29 16:15:52 +00:00
andri lim
f6d9308208
add TODO comment and trigger ci rebuild
2018-11-29 12:12:25 +02:00
andri lim
af84be0eea
keep in sync with eth_common#23
2018-11-29 12:12:25 +02:00
coffeepots
184143ba65
Update return types
2018-11-28 22:27:15 +00:00
coffeepots
f6cd02ff3f
Relax JSON to UInt256 length constraint, refactor err msgs
2018-11-28 22:04:57 +00:00
andri lim
21070d510d
add TransactionKey to persistTransactions and add more fat to debug_traceTransaction
2018-11-28 09:25:36 +07:00
coffeepots
5681c355ef
Update comment
2018-11-26 19:40:29 +00:00
coffeepots
d269bd07c5
Remove default gas price (is zero instead) and use gasLimit from header
2018-11-26 11:28:38 +00:00
coffeepots
a279915175
Refactored variable setup to ensure sensible defaults
2018-11-23 18:24:42 +00:00
coffeepots
a20a18f8e8
Add converter from Json to UInt256
2018-11-23 17:21:03 +00:00
coffeepots
dc5e62951a
Make eth_call use optional params
2018-11-23 17:20:20 +00:00
andri lim
a2b9167e2b
extend rpc api cli and implement debug_traceTransaction stub
2018-11-22 13:40:09 +07:00
coffeepots
826206d054
Fill in eth_call
2018-11-20 17:31:17 +00:00
coffeepots
553605875b
Update types to avoid early casting to strings and keep type strictness
2018-11-20 17:30:04 +00:00
coffeepots
e51a4632cd
Update RPC types to be inline with internal expectations and stay to spec
2018-11-20 17:27:22 +00:00
Zahary Karadjov
41adca1abb
Minimal changes required for building the LES branch
2018-10-16 03:10:01 +03:00
Zahary Karadjov
343cc4fa43
Populate the persistent databases with the empty RLP key.
...
Also implements transactional block persistence. Two issues
in the transaction processing code have been discovered that
might affect other usages such as the CALL instruction.
The main fix gets us past block 49000.
You may need to clean up your database.
2018-10-05 03:36:48 +03:00
coffeepots
4d0adfd514
Update RPC types to use AccountNonce
2018-09-01 16:03:06 +03:00
coffeepots
e10df33864
Update return value to use AccountNonce
2018-09-01 16:03:06 +03:00
Jacek Sieka
db202dc35f
replace logging module with nim-chronicles ( fixes #38 )
...
This blindly changes logging to nim-chronicles - issues that ensue:
* keeps gas cost computation logs hidden behind flag
* unclear if logScope is practical - for example, since vm is split over
many files, topics get lost when using simple top-level per-module
topics
* when passing named object around, scope should incliude the name of
the object but this is caught neither by logScope nor by dynamicLogScope
2018-08-29 16:13:03 -06:00
coffeepots
2f6f9b765c
Use getSender from transactions, Re-add getAccountDb, fix accountDbFromTag
2018-08-29 18:12:39 +01:00
coffeepots
e59d019a03
Merge branch 'master' into chain-db-interface
2018-08-29 17:23:25 +01:00
coffeepots
ffa5aafab4
Get block RPCs now return Option[BlockObject]
2018-08-29 16:01:43 +03:00
coffeepots
396f31f643
Updated to use option types
2018-08-29 16:01:43 +03:00
coffeepots
f3df5156d9
Update to option types instead of refs
2018-08-29 16:01:43 +03:00
coffeepots
18d62d8c79
toSignature is now a proc
2018-08-29 16:01:43 +03:00
coffeepots
74a4ab6efc
Update len to template
2018-08-29 16:01:43 +03:00
coffeepots
ae03675b07
Use toCanonicalAddress in getSender
2018-08-29 16:01:43 +03:00
coffeepots
4e007e7d6c
Update transaction hash to not include tx signature
2018-08-29 16:01:43 +03:00
coffeepots
6a55c59cc5
Simplify populating transaction object by moving fetching inside proc
2018-08-29 16:01:43 +03:00
coffeepots
bdb48b9438
Update account gas in transaction blocks
2018-08-29 16:01:43 +03:00
coffeepots
f8a3581af5
Add sender address derivation for several RPCs
2018-08-29 16:01:43 +03:00
coffeepots
55fee296d8
Update estimateGas return type, copy header logs bloom for block header
2018-08-29 16:01:43 +03:00
coffeepots
53bd7774db
Add sender to getReceipt, calculate transaction hash once
2018-08-29 16:01:43 +03:00
coffeepots
d901c20bb2
Add toSignature(Transaction) and getSender(Transaction) local procs
2018-08-29 16:01:43 +03:00
coffeepots
3f1e140d59
Add hex data string checking to web3_sha3
2018-08-29 16:01:43 +03:00
coffeepots
6223a9a638
Add eth_newFilter stub now types are fixed
2018-08-29 16:01:43 +03:00
coffeepots
dedb63a7f7
eth_sign (sans retrieval of account private key)
2018-08-29 16:01:43 +03:00
coffeepots
f51fca2cae
Add cumulativeGas to receipts, update FilterLog type, getWork type
2018-08-29 16:01:43 +03:00