Commit Graph

160 Commits

Author SHA1 Message Date
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 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
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
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 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 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 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
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
andri lim d656f7f701 rename 'txContext' to 'setupTxContext' 2020-01-23 18:07:44 +02:00
andri lim e8ec1706ed fixes rpc compilation error 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
Ș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
Jacek Sieka 2763bd0dd5
std_shims -> stew 2019-07-07 12:12:01 +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
Ș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 e78fb72ef6 fixes #188 2019-01-06 13:16:45 +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 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 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 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
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 e10df33864 Update return value to use AccountNonce 2018-09-01 16:03:06 +03: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 18d62d8c79 toSignature is now a proc 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 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
Yuriy Glukhov e3be8ca30a Separate Chain from ChainDB 2018-08-29 11:49:01 +03: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 09861bf2e2 eth_getTransactionReceipt 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 8524c0b060 Fixes (eg eth_getTransactionCount) and helper funcs 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 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