1365 Commits

Author SHA1 Message Date
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
350188bd29 address review comments 2018-08-09 12:25:37 +03:00
Zahary Karadjov
d902be66ee Fix the genesis state hash computation
The account database needed to use the secure flavour of the Hexary
Trie. This means all keys are SHA3 hashed before being inserted.
2018-08-08 15:48:34 +03:00
Dustin Brody
ea2f3b71bf
Complete VM Test sync, with EXP(0, 0) defined as 1 now (#98) 2018-08-07 18:41:01 +00:00
Dustin Brody
2136bc74fd
Sanitize memory addresses and lengths (#97)
* add a helper function to ensure for memory addressing and length purposes, especially as applied to array indexing and bounds-checking, that non-negative UInt256 numbers remain non-negative when lossily converted to int's
2018-08-06 16:33:20 +00:00
Yuriy Glukhov
467a9c3d7a
Merge pull request #93 from status-im/genesis
Added genesis initialization
2018-08-06 18:02:39 +03:00
Yuriy Glukhov
e4929d4f60 Slightly reworked ChainDB interface to more consistent 2018-08-03 14:56:49 +03:00
Yuriy Glukhov
db62ef132e More comments addressed 2018-08-03 14:10:07 +03:00
Dustin Brody
71679d6d95 fix assorted test fixtures which have been un-skipped 2018-08-02 15:57:28 -07:00
Yuriy Glukhov
39d604a8d7 Fixed rinkeby alloc data 2018-08-02 17:16:34 +03:00
Yuriy Glukhov
ebfe25fc2c Comments addressed 2018-08-02 17:08:10 +03:00
Yuriy Glukhov
3ec46fa668 Use real file for sqlite 2018-08-02 17:07:44 +03:00
Yuriy Glukhov
04f404fb22 Fixed toPublicNetwork 2018-08-02 11:18:12 +03:00
Yuriy Glukhov
c4f4a37d2c Added genesis initialization 2018-08-01 15:50:44 +03:00
Yuriy Glukhov
84515b78a9 Align DB backend interfaces with eth_trie. Init BaseChainDB in nimbus. 2018-07-30 16:05:32 +03:00
Dustin Brody
dcf97d8198 memory expansion boilerplate usage wasn't 100% consistent, so extcodecopy and codecopy were returning far too low gas costs in many cases (#88) 2018-07-28 09:59:33 +02:00
Yuriy Glukhov
f6f355b6c8 Workaround for nim issue 7833 2018-07-26 16:14:16 +03:00
Dustin Brody
5d82493a9c fix comment to correctly reflect REVERT opcode 2018-07-25 16:30:18 -07:00
Yuriy Glukhov
04bacca35c
Merge pull request #81 from status-im/ClampMemoryGasCostToNonnegative
accessing memory can't cost less than nothing
2018-07-25 13:48:21 +03:00
Yuriy Glukhov
8713939bfe
Merge pull request #82 from status-im/ImplementSelfDestructOp
Implemented selfDestruct op
2018-07-25 13:41:14 +03:00
coffeepots
47e5081f86 TODO comment for other forks on the selfdestruct op 2018-07-25 10:40:08 +01:00
Dustin Brody
85e1c39a83 accessing memory can't cost less than nothing 2018-07-24 18:37:56 -07:00
Dustin Brody
c2ed3bf11e mstore8 wants LSB of BE representation, i.e. last byte 2018-07-24 12:25:21 -07:00
coffeepots
52daaf49c0 Implemented selfDestruct op 2018-07-24 17:21:29 +01:00
Yuriy Glukhov
473140f586
Merge pull request #79 from status-im/FixExtCodeCopyCost
ExtCodeCopy is a memory expansion operation for gas computation purposes
2018-07-24 12:19:04 +03:00
Yuriy Glukhov
e8453e3876
Merge pull request #78 from status-im/FixZeroSizeSha3
add subcase of yellow paper equation (297) for zero-length memory ranges
2018-07-24 12:15:41 +03:00
Dustin Brody
df23f802c6 ExtCodeCopy is a memory expansion operation for gas computation purposes 2018-07-23 17:00:06 -07:00
Zahary Karadjov
870eb175c0 update to the latest eth_p2p 2018-07-24 00:44:04 +03:00
Dustin Brody
00cd33febd add subcase of yellow paper equation (297) for zero-length memory ranges 2018-07-23 14:00:49 -07:00
Zahary Karadjov
7f4d97dca0 add the ETH and LES protocol implementations to the nimbus build 2018-07-23 00:34:43 +03:00
Zahary Karadjov
1602c8ca03 restore the compilation of the main nimbus executable 2018-07-20 20:02:19 +03:00
Yuriy Glukhov
01a920b3b6
Merge pull request #76 from status-im/FixFailOnEmptyChildComputation
Only write to child computation if data present
2018-07-20 11:15:12 +03:00
Yuriy Glukhov
31c9365e48
Merge pull request #75 from status-im/RemoveValidateCanonicalAddress
Remove validateCanonicalAddress
2018-07-20 11:15:00 +03:00
coffeepots
6e10e306a6 Change import from eth-rpc to json_rpc 2018-07-20 08:57:51 +01:00
coffeepots
868f2b1959 Remove if statement for actualOutputSize - 1 2018-07-20 08:53:56 +01:00
coffeepots
6ce46c0163 Only write to child computation if data present 2018-07-19 19:14:17 +01:00
coffeepots
e33bc85bfa Remove validateCanonicalAddress 2018-07-19 19:04:01 +01:00
Yuriy Glukhov
feaff16e9d Corrected jump boundary check. Nonexistent sload pushes 0. (#74) 2018-07-19 15:11:52 +02:00
Yuriy Glukhov
b2acf3a5e3 GasMeter is an object now (#73) 2018-07-18 14:18:17 +02:00
Yuriy Glukhov
6c67115ef5 Fixed sstore gas computation, empty sha3, smod, sdiv (#71)
* Fixed sstore gas computation, fixed empty sha3

* Fixed smod and sdiv

* Comments addressed
2018-07-18 11:14:28 +02:00
Yuriy Glukhov
601db4d9f3 Fixed a few more tests (#70)
* Fixed getting reading balance from the test fixtures

* Fixed sha3 opcode
2018-07-17 10:57:13 +02:00
Yuriy Glukhov
46a8b5dc49 Refactored log opcodes, added validation, fixed a couple of tests 2018-07-16 11:14:52 +02:00
Zahary Karadjov
9c88710ed6 Apply the P2PServer -> EthereumNode rename 2018-07-12 14:14:04 +03:00
Mamy Ratsimbazafy
4dd75aee84
Delete utilities: address, padding, bytes (#68)
* Delete utilities: address, padding, bytes

* Remove bigEndianToInt

* Fix C compiler error: member reference base type 'char' is not a structure or union

* fix todo comment
2018-07-06 17:08:31 +02:00
Mamy Ratsimbazafy
4b5eada322
Refactor interpreter dispatch (#65)
* move forks constants, rename errors

* Move vm/utils to vm/interpreter/utils

* initial opcodes refactoring

* Add refactored Comparison & Bitwise Logic Operations

* Add sha3 and address, simplify macro, support pop 0

* balance, origin, caller, callValue

* fix gas copy opcodes gas costs, add callDataLoad/Size/Copy, CodeSize/Copy and gas price opcode

* Update with 30s, 40s, 50s opcodes + impl of balance + stack improvement

* add push, dup, swap, log, create and call operations

* finish opcode implementation

* Add the new dispatching logic

* Pass the opcode test

* Make test_vm_json compile

* halt execution without exceptions for Return, Revert, selfdestruct (fix #62)

* Properly catch and recover from EVM exceptions (stack underflow ...)

* Fix byte op

* Fix jump regressions

* Update for latest devel, don't import old dispatch code as quasiBoolean macro is broken by latest devel

* Fix sha3 regression on empty memory slice and until end of range slice

* Fix padding / range error on expXY_success (gas computation left)

* update logging procs

* Add tracing - expXY_success is not a regression, sload stub was accidentally passing the test

* Reuse the same stub as OO implementation

* Delete previous opcode implementation

* Delete object oriented fork code

* Delete exceptions that were used as control flows

* delete base.nim 🔥, yet another OO remnants

* Delete opcode table

* Enable omputed gotos and compile-time gas fees

* Revert const gasCosts -> generates SIGSEGV

* inline push, swap and dup opcodes

* loggers are now template again, why does this pass new tests?

* Trigger CI rebuild after rocksdb fix https://github.com/status-im/nim-rocksdb/pull/5

* Address review comment on "push" + VMTests in debug mode (not release)

* Address review comment: don't tag fork by default, make opcode impl grepable

* Static compilation fixes after rebasing

* fix the initialization of the VM database

* add a missing import

* Deactivate balance and sload test following #59

* Reactivate stack check (deactivated in #59, necessary to pass tests)

* Merge remaining opcodes implementation from #59

* Merge callDataLoad and codeCopy fixes, todo simplify see #67
2018-07-06 09:52:31 +02:00
zah
18b7bbb3b0 Implemented most of the stubbed-out state handling instructions (#59)
Merge note: currently cannot compile due to `quasiBoolean` (#63). This will be solved by https://github.com/status-im/nimbus/pull/65
----

* Implemented most of the stubbed out state handling instructions

The code compiles, but still fails at the moment due to incorrect

initialization of the VM. Don't merge yet. More commits will be
pushed in the coming days.

* Fixed crash

* trie put and del are void now

* getBlockTransactionData and getReceipts

* Working code for extcodesize0.json

* fix origin.json

* fix calldatasize1

* fix calldataloadSizeTooHighPartial

* fix calldataloadSizeTooHigh

* more efficient PushX implementation

* fix and, or, xor
2018-07-05 14:41:01 +02:00
zah
6f28d11866 Few steps towards having 64-bit block numbers (#57)
Some of the other clients don't bother to store block numbers as
256-bit integers (64 bits or even 32 bit are enough).

The changes here are based on helpers introduced in eth_common
that try to abstract away all conversion steps in the code between
VM words and block numbers in variables in fields. Unfortunately,
this turn out to be more work than anticipated and I've postponed
finishing the refactoring for now (Block numbers are still 256 bit).
2018-06-26 16:09:50 +02:00