Commit Graph

338 Commits

Author SHA1 Message Date
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
coffeepots f151911ddf Updates to use GasInt and Filter Logs 2018-08-29 16:01:43 +03:00
coffeepots 33b7dd931b Add Whisper RPC prototypes 2018-08-29 16:01:43 +03:00
coffeepots 3f3c4249ba Add Whisper types 2018-08-29 16:01:43 +03:00
coffeepots 3f2f8f83b4 Add WhisperIdentityStr 2018-08-29 16:01:43 +03:00
coffeepots fec18e4ec2 Add WhisperIdentity string, clean up len func 2018-08-29 16:01:43 +03:00
Yuriy Glukhov e3be8ca30a Separate Chain from ChainDB 2018-08-29 11:49:01 +03:00
coffeepots 47f81df3d4 Comment on hex string conversion from array types. 2018-08-21 14:31:45 +01:00
coffeepots 9d506993a1 Add some error checking for missing body hash 2018-08-21 13:33:38 +01:00
coffeepots 6ac68b1c12 eth_getUncleByBlockNumberAndIndex 2018-08-21 13:33:37 +01:00
coffeepots cd85ed2281 eth_getUncleByBlockHashAndIndex, populate uncle hashes, not full uncles 2018-08-21 13:33:37 +01:00
coffeepots 5516a0dcfa Update block object to include hashes in uncles, not full block header 2018-08-21 13:33:37 +01:00
coffeepots 09861bf2e2 eth_getTransactionReceipt 2018-08-21 13:33:37 +01:00
coffeepots d56cf9d2e4 Update receipt types 2018-08-21 13:33:37 +01:00
coffeepots b516acfef0 Add receipt object 2018-08-21 13:33:37 +01:00
coffeepots 79b0032583 eth_getTransactionByBlockNumberAndIndex 2018-08-21 13:33:37 +01:00
coffeepots 3b53f18b84 eth_getTransactionByBlockHashAndIndex 2018-08-21 13:33:37 +01:00
coffeepots 19c68422bc eth_getTransactionByHash 2018-08-21 13:33:37 +01:00
coffeepots f84a4bd9d9 Updates to TransactionObject in line with internal types 2018-08-21 13:33:37 +01:00
coffeepots b30b253653 Update TransactionObject to use Blob 2018-08-21 13:33:37 +01:00
coffeepots a5ea8c67bd Update nonce type 2018-08-21 13:33:37 +01:00
coffeepots 8524c0b060 Fixes (eg eth_getTransactionCount) and helper funcs 2018-08-21 13:33:37 +01:00
coffeepots 3f2311be23 Add ref EthAddress 2018-08-21 13:33:37 +01:00
coffeepots 22590dea32 eth_getBlockByNumber, using actual BlockHeader hash now 2018-08-15 14:12:49 +01:00
coffeepots 845866fc97 eth_getBlockByHash, changes to support returning marshalled Nim types 2018-08-15 14:08:40 +01:00
coffeepots 1826c0ce92 Add JSON transform for bloom filter 2018-08-15 14:07:06 +01:00
coffeepots b6a73327c3 Converted rpc types to Nimbus types in line with changes to hexstrings 2018-08-15 13:14:32 +01:00
coffeepots 4b03f6d4db Updated hexstrings to translate common Nimbus types to hex strings 2018-08-15 13:13:30 +01:00
coffeepots 88ab097a61 Add json converters for byte array and UInt256 types to hex string 2018-08-14 20:22:04 +01:00
coffeepots ee15f4a995 eth_getCode and helper func strToAddress 2018-08-14 18:22:31 +01:00
coffeepots 25f8123c6f eth_getUncleCountByBlockNumber 2018-08-14 16:55:57 +01:00
coffeepots 0e9edf8032 eth_getUncleCountByBlockHash 2018-08-14 16:55:28 +01:00
coffeepots b9906fb263 eth_getBlockTransactionCountByNumber 2018-08-14 16:54:59 +01:00
coffeepots 1871a7b090 eth_getBlockTransactionCountByHash 2018-08-14 16:53:45 +01:00
coffeepots 404d4d883d eth_getTransactionCount 2018-08-14 16:52:30 +01:00
coffeepots c3fbb0a098 Add eth_syncing, eth_getStorageAt, eth_blockNumber, eth_coinbase and some stubs 2018-08-13 19:29:38 +01:00
coffeepots 370da80478 Add types to support RPC data transfer 2018-08-13 19:25:21 +01:00
coffeepots 4c38ede9c9 Add EthHashStr validation 2018-08-13 18:39:17 +01:00
coffeepots e4d1c6817a Added EthAddressStr to validation 2018-08-13 17:33:57 +01:00
coffeepots 581b4a98ef Fixed allowing "0x" for data but not quantity, less exports 2018-08-09 13:50:49 +03:00
coffeepots 07e28ac01e proc to func and update names 2018-08-09 13:50:49 +03:00
coffeepots b37bdecc02 Convert some procs to funcs and a bit of renaming, use unlikely 2018-08-09 13:50:49 +03:00
coffeepots 64b96cd8f5 Remove redundant conversion 2018-08-09 13:50:49 +03:00
coffeepots a027ca2b25 eth_getBalance in p2p 2018-08-09 13:50:49 +03:00
coffeepots da8849a5a0 Removed eth_getBalance from common 2018-08-09 13:50:49 +03:00
coffeepots 4773559739 Fixes for short strings, added raise-on-failed-validation procs 2018-08-09 13:50:49 +03:00
coffeepots 723ef3cf70 Fix for json conversion of hexstrings 2018-08-09 13:50:49 +03:00
coffeepots d4571c01dd Add JSON RPC hex strings support 2018-08-09 13:50:49 +03:00
coffeepots 79abeafa41 Setup test rpc server, initial call to eth_getBalance 2018-08-09 13:50:49 +03:00
Zahary Karadjov 7f4d97dca0 add the ETH and LES protocol implementations to the nimbus build 2018-07-23 00:34:43 +03:00
coffeepots 6e10e306a6 Change import from eth-rpc to json_rpc 2018-07-20 08:57:51 +01:00
Zahary Karadjov 9c88710ed6 Apply the P2PServer -> EthereumNode rename 2018-07-12 14:14:04 +03:00
cheatfate 533bd6caf4 Integrated P2P & RPC servers. 2018-06-20 20:27:32 +03:00