Commit Graph

348 Commits

Author SHA1 Message Date
andri lim b159b5c945 remove lastOpCodeHasRetVal, make it simpler 2019-01-06 11:43:38 +02:00
Ștefan Talpalaru 26ee2fce26 fix breakage with Nim HEAD 2019-01-04 15:39:16 +02:00
andri lim 40f094f6d5 fix datadir typo 2018-12-28 15:24:57 +07:00
Ștefan Talpalaru 048a43b2f1
better error handling
- added some useful `chronicles` defines in the top-level nim.cfg
- converted some assert() calls to error codes to avoid a reported
  segfault with -d:release
- the recoverable errors are being recovered from, in persistWorkItem()
- the only case that's a show stopper raises an exception
2018-12-17 23:36:38 +01:00
andri lim ff08a6ad95 fix some typo 2018-12-16 15:38:51 +02:00
andri lim d3380f6cf0 fix test 2018-12-16 15:38:51 +02:00
andri lim 8c6cec4999 fix getTransactionReceipt 2018-12-16 15:38:51 +02:00
andri lim 9c0bb70ba7 working makeReceipt 2018-12-16 15:38:51 +02:00
andri lim ad1202f98a initial make_receipt 2018-12-16 15:38:51 +02:00
Ștefan Talpalaru f91e69f7c7
more VM tracing
The existing vmState tracing is plugged into chronicles, at the TRACE
level, to facilitate state test debugging.

Some useful chronicles defines are added to "tests/nim.cfg" to simplify
the compile-and-run command for individual tests.
2018-12-12 11:47:10 +01:00
Ștefan Talpalaru 115843487c
general-state testsuite changes and better fork selection
- skipped the tests in allowedFailInCurrentBuild()
- replaced doAssert() with check() in testFixtureIndexes() so we can see
  both hash values on failure
- checking filename extension for JSON tests to avoid editor swap files
- replaced the duplicated block values in the main net's ChainConfig
  with values from forkBlocks
- allowed overriding the current fork in computations, because the old
  strategy of only looking at the block number doesn't work with JSON tests
  where the block number is usually 1
- explicitly pass the fork to gasCosts() and use it for conditional cost
  calculation
- fixed a logic error in the CREATE opcode
- fixed VM selection based on current fork in updateOpcodeExec()
- single point of control for supported forks in tests (just one fork, at the
  moment)
- 44 new test failures (that were probably passing for the wrong reasons)
2018-12-07 18:18:29 +01:00
Ștefan Talpalaru 03ec65487d
logging changes
- port some "echo" logging to "chronicles"
- change the logging level of messages that should not appear by default
  to TRACE instead of DEBUG
- remove the "nimbusTrace" define
- suppress logging for messages below the ERROR level in "nimble test"
2018-12-07 00:45:52 +01:00
coffeepots 86853ea97c
Merge pull request #187 from status-im/modexp-fixes
Modexp fixes
2018-12-06 10:10:59 +00: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 b29f5b1321 put traceTransaction into action 2018-12-05 22:01:29 +07:00
andri lim fe5ddf757b fix trace returnValue 2018-12-05 22:01:29 +07:00
andri lim 572de41507 tracing opcode return value 2018-12-05 22:01:29 +07:00
andri lim 7a3ddfec87 correcting account storage retrieval 2018-12-05 22:01:29 +07:00
andri lim c954dc7d62 fix tests 2018-12-05 22:01:29 +07:00
andri lim 0b7b577af6 add more options to debug_traceTransaction 2018-12-05 22:01:29 +07:00
andri lim 8d42ad997e reorder captureDB in traceTransaction 2018-12-05 22:01:29 +07:00
andri lim 2552d6452a fix traceTransaction 2018-12-05 22:01:29 +07:00
andri lim 5509c66cce implement transaction tracer 2018-12-05 22:01:28 +07:00
andri lim a098285a7b put prune switch into usage 2018-12-05 21:58:34 +07:00
andri lim 4885445735 add prune cli switch 2018-12-05 21:58:34 +07:00
mratsim 24bcb3b2d8 remove log2 spurious comment 2018-12-04 15:56:18 +01:00
mratsim f50bb57eb6 Reactivate the precompiles test + consume gas 2018-12-04 15:52:59 +01:00
mratsim 29f8a8a066 modExp fixed! 2018-12-04 15:46:33 +01:00
mratsim 6d93bdffea modExp, support up to uint4096 2018-12-04 14:39:10 +01:00
mratsim 949c5a1dc6 Modexp fix example 1 (returned to early for ints of length 1) 2018-12-04 12:49:48 +01: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
andri lim 161d6adbc7 implement persistTransactions and getBlockBody 2018-11-24 08:00:58 +07: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 1f0766c5d4 Add initTransaction 2018-11-20 17:35:11 +00: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
coffeepots f99138dca6 Merge branch 'call-fixes-precompiles' 2018-11-12 15:57:54 +00:00
coffeepots 1cead76327 Add note about cyclic dep 2018-11-08 16:40:40 +00:00
coffeepots 6eb430fd52 Fix CREATE op code gas costs, more debug output, call transactions 2018-11-08 16:00:21 +00:00
coffeepots 492d2ae676 Debug message for new messages 2018-11-08 15:48:32 +00:00
coffeepots 6b1e989ff0 Add initial gas cost for CREATE 2018-11-08 15:47:48 +00:00
Yuriy Glukhov bac452f589 Initial TransactionTracer impl 2018-10-28 14:38:05 +01:00
Dustin Brody d97cc50afc fix eth_trie/constants missing compile error 2018-10-19 07:44:08 -07:00
coffeepots 7ba1cfaf13 Remove endian code, precompiles should now run. Removed raise as case stmt is full now. 2018-10-19 14:41:04 +01:00
coffeepots 434edcc2ae Fix incorrect message parameters (had sender and destination swapped) 2018-10-18 17:47:54 +01:00
cheatfate 0b15b86195 Fix ecMul, ecPairing, ecAdd. 2018-10-16 11:49:13 +03:00
Zahary Karadjov 41adca1abb Minimal changes required for building the LES branch 2018-10-16 03:10:01 +03:00
coffeepots 6e4616e443 Precompiles now executed if called from vm_state_transactions 2018-10-12 16:16:14 +01:00
coffeepots 67df44e917 Fix ecrecover, pad ripemd result and use sha256 vs keccak256 2018-10-10 17:36:11 +01:00
mratsim bb6e1e1d76 modExp precompiles: fix padding and static evaluation 2018-10-10 16:26:21 +02:00
mratsim 0494e2a877 Support short inputs with missing bytes 2018-10-05 17:37:52 +02:00
mratsim 38b4d54815 Add modExp precompile + gas costs 2018-10-05 17:26:20 +02:00
cheatfate 9318ea93cf Added nim-bncurve dependency.
Added implementation of `ecAdd`, `ecMul`, `ecPairing` precompiles.
2018-10-05 12:15:04 +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
Dustin Brody 7aa0c386dd some simplification and cleanup 2018-10-04 17:52:58 +00:00
coffeepots 6a4cd4ec67 Update precompile gas costs case (cosmetic change) 2018-10-03 17:59:41 +01:00
coffeepots 3249c3e048 Add precompile costs 2018-10-03 16:39:34 +01:00
coffeepots 3deb09bbb6 Add SHA256, RIPEMD160 and Identity precompiles 2018-10-03 13:33:19 +01:00
coffeepots fcffd94469 Support different endians 2018-10-02 16:39:01 +01:00
coffeepots 36270ff4d5 Fixes for Call gas usage, Calls use precompiles, pass down their opCode 2018-10-02 16:07:16 +01:00
coffeepots e2087f0922 Remove precompile hash table 2018-10-02 15:55:28 +01:00
coffeepots 62968bf733 Initial support for precompiles with ecRecover 2018-10-02 15:46:39 +01:00
tersec 4f04332205
Refactor contract creation into transaction code from P2P code; get 14 new GSTs working (#163)
* checkpoint where refactoring and calling from GST runner doesn't break anything

* 14 new GSTs pass by refactoring contract creation out of p2p/chain and using from GST test runner

* 2 of 14 new tests fail in 32-bit builds

* switch from CREATE_CONTRACT_ADDRESS to isContractCreation

* switch another CREATE_CONTRACT_ADDRESS to isContactCreation
2018-09-29 15:36:42 +00:00
Dustin Brody 3f5fc9a034 read through block 49017 by properly setting createAddress/storageAddress of the computation message and detecting whether the computation has the gas required to pay 200*code length; also, clean up pointless commented nonnegativity assertions for nonnegative GasInt type 2018-09-28 10:26:27 +03:00
tersec d4e95fae94
refactor aspects of transaction processing out of GeneralStateTests handler; get p2p/chain runnning through block 48680; combine/deduplicate two different but equivalent methods of caulculating transaction intrinsic gas cost; fix BaseTransaction references to just Transaction references in hitherto unreferenced stubbed out source so it builds; clean up some imports from refactoring (#161) 2018-09-27 19:09:26 +00:00
Zahary Karadjov 2c59de6064 Fix the Nimbus build after the merge 2018-09-26 14:00:52 +03:00
Yuriy Glukhov 7a732040ba Added comments 2018-09-26 13:31:48 +03:00
Yuriy Glukhov 291fddee71 Better cmdline flags handling 2018-09-26 13:31:48 +03:00
Zahary Karadjov 74f6f0b738 Deal with the refactoring in status-im/nim-rlp#20 2018-09-26 12:58:23 +03:00
Zahary Karadjov 5c0fd16448 Fix an issue with the Sqlite3 tests (the in-memory DB was not properly used) 2018-09-25 16:01:38 +03:00
Zahary Karadjov 4e323df363 Implement a --datadir command-line options
By default, the database files will be written in the
platform-specific application data folder:

$HOME/AppData/Roaming/Nimbus/DB
$HOME/Library/Application Support/Nimbus/DB
$HOME/.cache/nimbus/db
2018-09-25 02:06:20 +03:00
tersec 690ce2cf97
Partly fix state_db getCode for 20 new working GeneralStateTests (#156)
* partly fix state_db getCode to get 20 new working GeneralStateTests; remove 2 functions which existed as workarounds; switch all remaining setBalance calls in GeneralStateTestRunner to subBalance (addBalance calls already changed)

* two of the 20 new tests don't work in 32-bit builds
2018-09-20 21:36:57 +00:00
Yuriy Glukhov 22668407a7 Some tweaks and comments (#155) 2018-09-20 20:06:22 +00:00
Dustin Brody 8f4e1a4445
integrate GeneralStateTest runner into CI with 775 running tests (#153)
* fix 32-bit issue in AppVeyor

* allow another dozen or so GeneralStateTest fixtures which work on 64-bit, but not on 32-bit platforms, to safely-fail, but demarcate them separately to facilitate debugging

* steal fa672600eb from @coffeepots fix-int32-high-zero branch
2018-09-19 16:46:14 +00:00
Yuriy Glukhov 5acd6cc049 newMemoryDB 2018-09-19 18:41:17 +03:00
Yuriy Glukhov 0adfaf0f31 s/increaseBalance/addBalance 2018-09-19 18:41:17 +03:00
Yuriy Glukhov 3d64c66b7a More state restoring 2018-09-19 18:41:17 +03:00
coffeepots 766d1c4091 Temp fix for int32.high returning zero 2018-09-19 12:11:54 +03:00
mratsim 070487d78a Homestead contract creation gas cost 2018-09-18 17:28:40 +02:00
Dustin Brody dd20f4079c revert better toSeq version to worse for-loop version of extracting keys from table because former now fails to compile 2018-09-18 07:07:04 -07:00
Dustin Brody 048921b045 20 new working GeneralStateTests 2018-09-18 14:00:30 +00:00
Dustin Brody 7dfd2a3849 update deltabalance to mix of setBalance and increaseBalance 2018-09-18 06:25:28 -07:00
coffeepots 4f03c9cf2a
Merge pull request #139 from status-im/callOpCodeWork
Flesh out call op
2018-09-18 14:09:00 +01:00
coffeepots b49637cdbf Helper procs for updating opcode executor based on fork 2018-09-18 13:10:30 +01:00
coffeepots d435e434ec Copy opCodeExec to child computation 2018-09-18 13:03:22 +01:00