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
Zahary Karadjov
d71ce6fb24
Make use of the new transactional API offered by the Trie DB
2018-09-18 02:56:10 +03:00
coffeepots
d484420f5b
Remove fork distinguished procs, handle in applyCreateMessage
2018-09-17 19:35:07 +01:00
coffeepots
c300044474
Add EIP170_CODE_SIZE_LIMIT
2018-09-17 19:34:29 +01:00
coffeepots
949d4c11f8
Full names for `$`(fork)
2018-09-17 18:38:10 +01:00
Dustin Brody
beb1befc6e
13 additional GeneralStateTests working; remove commented auto-ported Py-EVM validations which are implicit in UInt256; address comments to last commit (toSeq, hoising vmState.readOnlyStateDB, deltaBalance -> increaseBalance)
2018-09-17 13:41:32 +00:00
Zahary Karadjov
409d875beb
Some helpers for tracing and debugging Trie issues (the code is no-op by default)
2018-09-16 00:20:20 +03:00
coffeepots
cdfcda41b4
Remove init 0 after child computation
2018-09-14 18:04:09 +01:00
coffeepots
63f9acd8ce
Add create and apply message procs
2018-09-14 18:03:26 +01:00
coffeepots
c7a014bb10
Add gas cost for create
2018-09-14 17:59:21 +01:00
coffeepots
af76d209a6
Add opcode executor proc to computation
2018-09-14 16:47:40 +01:00
coffeepots
7cd7a73a1f
Add opCodeExec to allow computation to execute code
2018-09-14 16:42:15 +01:00
coffeepots
213aebde7d
Update some comments, adding TODO item for getStateDb
2018-09-14 16:16:55 +01:00
coffeepots
6183761251
Refactor for generateChildComputation
2018-09-14 16:16:55 +01:00
coffeepots
2b6342764c
Add fork to string proc
2018-09-14 16:16:55 +01:00
coffeepots
d465fcd038
Appy child computation in call op code
2018-09-14 16:16:55 +01:00
coffeepots
2a38c0194d
Expose isCreate for export
2018-09-14 16:16:55 +01:00
coffeepots
69f07c587a
Add generateChildComputation, addChildComputation and applyChildComputation
2018-09-14 16:16:55 +01:00
coffeepots
d24108a79b
Convert code from byte range to seq
2018-09-14 16:16:55 +01:00
coffeepots
b4fd38e062
Call now gets and checks balance against funds, also now fetches code
2018-09-14 16:16:55 +01:00
Dustin Brody
7ba90fda54
48 new working GeneralStateTests, via fixing some overflows/underflows, creating a rudimentary balance commit/revert scheme, and implementing account deletion for the selfdestruct instruction ( #146 )
2018-09-14 13:43:40 +00:00
Yuriy Glukhov
62260c786d
Caching DB backend
2018-09-12 17:53:15 +03:00
Dustin Brody
fd07d6fed1
A simple/basic GeneralStateTest runner which gets 400+ of them correct
2018-09-10 19:42:45 +03:00
Yuriy Glukhov
3a1ec035b3
Various fixes towards state reconstruction
2018-09-07 14:00:37 +03:00
coffeepots
09d35d4bfd
Fix merge conflict
2018-09-06 13:59:22 +01:00
coffeepots
7e02eedea0
Use toOpenArray in generateAddress
2018-09-06 13:57:42 +01:00
coffeepots
085880758b
Always update account nonce even if there's an contract address collision
2018-09-06 13:57:42 +01:00
coffeepots
ca6eb0cb38
Don't touch nonce until after address in-use check
2018-09-06 13:57:42 +01:00
coffeepots
555687ba97
Comment reference to issue regarding address collisions
2018-09-06 13:57:42 +01:00
coffeepots
9f1027102c
Make generateAddress a func
2018-09-06 13:57:42 +01:00
coffeepots
7a5a43f50f
Add generateAddress utility
2018-09-06 13:57:42 +01:00
coffeepots
0e2068c99e
Create Op now generates contract addresses & checks for collisions
2018-09-06 13:57:42 +01:00
coffeepots
350bf7e672
Add hasCodeOrNonce
2018-09-06 13:57:42 +01:00
coffeepots
69befaf4fd
Use toOpenArray in generateAddress
2018-09-06 13:48:55 +01:00
Yuriy Glukhov
0a247a58f3
New nim compat
2018-09-06 13:16:13 +03:00
coffeepots
485781e6ad
Always update account nonce even if there's an contract address collision
2018-09-06 10:58:35 +01:00
Dustin Brody
9e1be6438e
Extract transaction senders from GeneralStateTest fixtures
2018-09-06 11:20:43 +03:00
coffeepots
2b87d2b7f5
Merge branch 'createOpContractAddr' of https://github.com/status-im/nimbus into createOpContractAddr
2018-09-04 17:15:58 +01:00
coffeepots
bd9f732b4e
Don't touch nonce until after address in-use check
2018-09-04 17:15:46 +01:00
coffeepots
12834fba12
Merge branch 'master' into createOpContractAddr
2018-09-04 16:37:43 +01:00
coffeepots
f3fb306a33
Comment reference to issue regarding address collisions
2018-09-04 16:35:20 +01:00
Dustin Brody
4262ea8670
fix (1) overflow/signed confusion when reading large-valued storage entries; (2) adjust test fixture validity for GeneralStateTests; (3) remove incorrect usage of state trie for code (not codehash) storage; add ability to display state; (4) avoid double-hashing keys for already-hashed SecureHexaryTrie for storage; (5) add intentionally local workaround for empty code in GeneralStateTest fixtures lacking 0x prefix; (6) fix nonce parsing, which is always hex string in test fixtures
2018-09-04 17:55:30 +03:00
coffeepots
c3c84782a5
Make generateAddress a func
2018-09-04 12:27:07 +01:00
coffeepots
a28ef962b3
Add generateAddress utility
2018-09-04 12:23:47 +01:00
coffeepots
a7c1168b3a
Create Op now generates contract addresses & checks for collisions
2018-09-03 19:30:27 +01:00
coffeepots
7ed2403c5c
Add hasCodeOrNonce
2018-09-03 19:24:55 +01:00
Yuriy Glukhov
b055504f8e
Added --experimental:forLoopMacros to nims
2018-09-03 15:20:40 +03:00
coffeepots
bda219f8fe
Make tests green (AccountNonce)
2018-09-02 03:26:22 +01: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
coffeepots
1427d59f27
Change setNonce, getNonce to use AccountNonce, which is uint64 from UInt256
2018-09-01 16:03:06 +03:00
coffeepots
0229d16fed
Change hashing function to use AccountNonce
2018-09-01 16:03:06 +03:00
coffeepots
dbc35fb198
Account.nonce is now AccountNonce which is uint64 from UInt256
2018-09-01 16:03:06 +03:00
Jacek Sieka
1d49b65d55
Merge pull request #117 from status-im/logging-to-chronicles
...
replace logging module with nim-chronicles (fixes #38 )
2018-08-31 13:15:08 -06:00
coffeepots
77df371cd1
Update toSignature to use range instead of UInt256
2018-08-31 17:18:19 +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
055b169e86
Merge branch 'master' of https://github.com/status-im/nimbus
2018-08-29 18:13:10 +01:00
coffeepots
2f6f9b765c
Use getSender from transactions, Re-add getAccountDb, fix accountDbFromTag
2018-08-29 18:12:39 +01:00
coffeepots
372ea24c41
Merge pull request #125 from status-im/getSenderReturn
...
Alternative form of getSender that raises and returns address
2018-08-29 18:07:04 +01:00
coffeepots
e59d019a03
Merge branch 'master' into chain-db-interface
2018-08-29 17:23:25 +01:00
coffeepots
bdb1904fd5
Alternative form of getSender that raises and returns address
2018-08-29 16:52:12 +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
6b68d6ddb2
Fixed wrong equality
2018-08-24 18:34:54 +01:00
coffeepots
3b82c9bd44
Remove and 0xff
2018-08-24 17:03:44 +01:00
coffeepots
c3f73860a4
Remove defunct comment
2018-08-24 16:52:48 +01:00
coffeepots
7542b42d32
Remove BaseTransaction object, add transaction.getSender()
2018-08-24 16:46:48 +01: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
67e9f47ac5
Add getTransactionKey
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
c9de0fbd29
Reduce range of cleanMemRef
2018-08-17 17:16:40 +03:00
coffeepots
fd7062fecb
Fix VMTest message creation in 32 bits, also duplicated word in comment
2018-08-17 17:16:40 +03:00
coffeepots
ff52d75fc0
Fix overflowing int in 32 bit
2018-08-17 17:16:40 +03:00
coffeepots
66adba9037
Fix for gas costs in 32 bit
2018-08-17 17:16:40 +03:00
coffeepots
0db650199b
Merge pull request #108 from status-im/moreRpcs1
...
More rpcs
2018-08-16 15:46:43 +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
Yuriy Glukhov
55b5dbd719
Raise KeyError when key not found
2018-08-14 18:40:59 +03:00
Dustin Brody
f91bb16bdd
Initial EVMC message type API matching: reorder overlapping fields to match EMVC; rename to to destination; replace isStatic with more general flags (with only one non-zero value); remove superfluous-seeming shouldTransferValue; keep internalFoo fields, which aren't in PyEVM either, so weren't per se part of PyEVM matching
2018-08-14 15:03:18 +03: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
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
Zahary Karadjov
3060452d96
review changes
...
* `usedBytes` was not named appropriately. it indicates the last
populated position in the data (the last valid index) for slicing
purposes (i.e. the position is passed to `toOpenArray`)
* Fixed the `==` operator for DBKeys
* Use one-byte key for the 'canonical head hash'
2018-06-26 13:46:54 +03:00
Zahary Karadjov
583c72fa54
Implement storage backends using RocksDB and SQLite
2018-06-26 13:46:54 +03:00
Yuriy Glukhov
1c79d1ab3d
Persist* functions
2018-06-24 18:37:02 +03:00
cheatfate
533bd6caf4
Integrated P2P & RPC servers.
2018-06-20 20:27:32 +03:00
Zahary Karadjov
48fdf6a644
build nimbus with nimble build
2018-06-20 14:12:29 +03:00
Zahary Karadjov
eacf13ed97
ethp2p was renamed to eth_p2p
2018-06-16 22:14:31 +03:00
mratsim
05703fc86f
logging: non-debug costless, avoid allocating constant string messages
2018-06-15 14:20:42 +02:00
Mamy Ratsimbazafy
c26c751f9b
Reorganize VM/interpreter + cleanup ( #52 )
...
* Move and cleanup interpreter files - prepare for redesign of VM
* fix call comment aobut recursive dependencies
* memory: use a template again and avoid (?) a cstring-> string conversion
* Fix stack test regression
* Fix recursive dependency on logging_ops, test_vm_json compiles but regression :/
* Fix signextend regression
* Fix 3 signed test and sha3 test
2018-06-15 11:11:25 +02:00
Mamy Ratsimbazafy
05275f9773
Activate logging, sha3, arith tests ( #51 )
...
* Activate the tests
* Use 3 params in memExpansion gas costs, fix 31 log tests and 8 sha3 tests
* Activate Control Flow tests as well
2018-06-13 19:33:47 +02:00
mratsim
8d76cab46a
Was confused about ∧ in the Yellow paper. Fix #50 - pass 2 new tests. Only 1 arithmetic failure left.
2018-06-13 16:05:52 +02:00
Mamy Ratsimbazafy
90c3ca4a96
Gas refactoring - decouple opcode logic and gas ( #49 )
...
* Decoupling op logic and gas - introduce gasometer, rework opcode declaration
* Remove gas constants for gas opcode computation
* Remove gas constants for precompiled contracts
* make vm_types compile
* Make opcode, call and computation compile
* Distinguish between dynamic and complex gas costs, fix arithmetic
* Fix context and sha3
* update memory and storage ops
* Log opcode uses memory expansion code
* update/stub system_ops with gas costs
* Make test compile. Deactivate stub test_vm
* all tests compiles, opcode fails due to https://github.com/nim-lang/Nim/issues/8007 (const object variant in tables reset at runtime)
* Create an enum without holes - workaround: https://github.com/nim-lang/Nim/issues/8007
* Use arrays instead of tables for GasCosts, remove some unused imports - passing all basic tests!
* Make test_vm_json compile
* Fix test_vm_json - workaround https://github.com/nim-lang/Nim/issues/8015
* fix memory expansion cost bug
* Remove leftover special handling from before GckMemExpansion
* cleanup outdated comment, better align =
* Fix sha3 gas cost not taking memory expansion into account
* Improve gas error reporting of test_vm_json
* Fix gas computation regression due to mem expansion
* mass replace for memExpansion->RequestedMemSize was too eager
* fix log gas cost (no tests :/)
* missed a static FeeSchedule
* static as expression is fickle
2018-06-12 17:33:47 +02:00
Mamy Ratsimbazafy
8528f1b704
Dirty fix #46 (test_vm_json segfaults from #45 ), incidentally fix #32 ( #47 )
2018-06-06 20:40:44 +02:00
Yuriy Glukhov
d8a4e5cbfb
Fixed compilation of test_vm_json. Still fails because of Op.Call :(
2018-05-31 10:58:59 +03:00
Yuriy Glukhov
8bdf09683b
Hash256/EthAddrres refactoring
2018-05-30 19:11:15 +03:00
Yuriy Glukhov
51b572d8b8
Some renames
2018-05-28 13:22:28 +03:00