andri lim
c4dcf5da30
reduce compiler warnings
2019-11-13 21:49:39 +07:00
andri lim
61f340ae87
implement EIP2200's SSTORE and gas cost
2019-11-12 15:51:48 +00:00
andri lim
c0c62b94b8
implement EIP-2200 stub
2019-11-12 15:51:48 +00:00
andri lim
b5e8a8d61b
implement 'chainId' opcode
2019-11-12 15:51:48 +00:00
andri lim
1e4f290cc6
implement 'selfBalance' opcode and gas cost
2019-11-12 15:51:48 +00:00
andri lim
078375061b
implement EIP 1884 stub
2019-11-12 15:51:48 +00:00
andri lim
0bb6c73bdb
implement EIP 1344 stub
2019-11-12 15:51:48 +00:00
andri lim
60b3ac15d6
simplify 'calldataload' implementation
2019-08-20 16:26:27 +07:00
andri lim
6ac750551e
'SAR' opcode uses new 'shr' from stint
2019-08-13 17:51:10 +03:00
andri lim
74d68ea425
fixes #72 , simplify SDIV implementation
2019-08-13 17:48:25 +03:00
kdeme
f62816c4f3
Use of BlockNumber to be able to switch between UInt256 and int64
2019-07-10 20:56:05 +02:00
Ștefan Talpalaru
5ee668516a
add nim-metrics
2019-07-10 16:32:44 +02:00
Jacek Sieka
2763bd0dd5
std_shims -> stew
2019-07-07 12:12:01 +02:00
andri lim
929b28b133
use ashr from nim-stint/#76
2019-05-13 10:26:28 +03:00
andri lim
58c4e16365
add some comments
2019-05-13 10:26:28 +03:00
andri lim
15f3a7fe37
remove unused .child from computation
2019-05-13 10:26:28 +03:00
andri lim
a86979eaa3
fix create2 gasCost
2019-05-13 10:26:28 +03:00
andri lim
e51725d13b
fix extCodeHash
2019-05-13 10:26:28 +03:00
andri lim
f08eedbce3
fix create2 nonce increment
2019-05-13 10:26:28 +03:00
andri lim
5f2be4231e
implement EIP1014: Create2 opcode
2019-05-13 10:26:28 +03:00
andri lim
4a7f58c7dc
implement constantinople bitwise opcode
2019-05-13 10:26:28 +03:00
andri lim
f809a864b1
fix calcMemSize bug
2019-05-13 10:26:28 +03:00
andri lim
213fb3b971
constantinople's skeletal implementation
2019-05-13 10:26:28 +03:00
andri lim
cee0a38278
add some comment
2019-04-26 07:31:18 +07:00
andri lim
376957bea4
clean up unused code
2019-04-26 07:31:18 +07:00
andri lim
ba47d3c997
fix returnDataCopy gasCost, GST +11
2019-04-26 07:31:14 +07:00
andri lim
7b47cb6b24
various fixes, GST +6
2019-04-26 07:31:14 +07:00
andri lim
ceb159f5fe
fix static context check in Call and Create, GST +52
2019-04-26 07:31:12 +07:00
andri lim
605618d9ee
add static context check, GST +94 -28
2019-04-26 07:31:12 +07:00
andri lim
be5cce6c71
fix static call addr, GST +93 -16
2019-04-26 07:31:11 +07:00
andri lim
d8284f9330
fix revert opcode
2019-04-26 07:31:09 +07:00
andri lim
1883472104
fix evm msg contract creation, GST +3
2019-04-18 12:42:37 +07:00
andri lim
69c1d9e357
fix block 2.463.413 problem
2019-04-15 11:10:40 +07:00
andri lim
6f51cf9103
implement EIP150 and EIP161 SelfDestruct OpCode
2019-04-08 08:06:39 +07:00
andri lim
77e9c18f91
implement Tangerine fork gas cost changes
2019-04-08 08:06:34 +07:00
andri lim
039256de6a
more on continuation passsing
2019-04-04 15:21:24 +07:00
andri lim
e5cca19e7f
tail call recursion with continuation passing
2019-04-04 11:44:35 +07:00
andri lim
07ac4620d9
remove 'var' modifier from 'computation: var BaseComputation'
2019-04-04 10:20:00 +07:00
andri lim
112d2219df
reduce indirect call in EVM
2019-04-02 13:11:00 +07:00
Ștefan Talpalaru
b16aba391a
Merge branch 'fix_maxcalldepth' of github.com:jangko/nimbus into jangko-fix_maxcalldepth
2019-03-28 15:09:51 +01:00
andri lim
da88d498e3
fix MaxCallDepth comparison
2019-03-28 19:08:54 +07:00
andri lim
1ad4e256b2
fix self destruct refund gas problem
2019-03-28 19:07:30 +07:00
andri lim
be79bc8740
remove opCodeExec, use executeOpcodes
2019-03-21 09:32:48 +07:00
andri lim
268695003b
fix writePaddedResult regression
2019-03-19 16:43:38 +07:00
andri lim
aed0db2d03
fix DelegateCall sender address, GST +37
2019-03-18 18:45:43 +07:00
andri lim
36fb75d042
fix DelegateCall gasCost, GST +6
2019-03-18 17:24:25 +07:00
andri lim
433ccba15f
fix writePaddedResult, GST +4
2019-03-16 21:42:06 +07:00
andri lim
adb1286e28
fix create hash collision, GST +1
2019-03-16 12:13:57 +07:00
andri lim
99d128ca26
fix CREATE opcode gas cost
2019-03-15 22:15:40 +07:00
andri lim
0654a232a3
rename transferBalance to canTransfer
2019-03-14 16:24:27 +07:00
andri lim
039ab1ce71
refactor/relocate CALL/CREATE to reduce stack usage
2019-03-14 14:58:26 +07:00
andri lim
f5d6d6bc02
fix block 1317742 problem
2019-03-13 15:49:54 +02:00
andri lim
2c032ad1ab
refactor utils
2019-02-27 13:30:18 +02:00
andri lim
9fcba8f90d
fix block 512335 problem
2019-02-25 21:18:13 +07:00
andri lim
3dd18bd8ec
fix block 299804 problem
2019-02-25 17:03:43 +07:00
andri lim
592fa5df7e
fix SIGNEXTEND opcode
2019-02-23 17:57:53 +02:00
andri lim
4dc45550dd
fix block 226522 problem
2019-02-21 13:09:36 +02:00
andri lim
b198ffee2d
fix vm oog problem
2019-02-20 15:16:07 +02:00
andri lim
dcf7699358
fix callcode regression
2019-02-20 15:16:07 +02:00
andri lim
96ae5ee05a
fix CALLCODE storage address
2019-02-20 15:16:07 +02:00
andri lim
999c958641
fix opcode call OOG
2019-02-20 15:16:07 +02:00
andri lim
2e8176eb15
simplify CREATE gasCost
2019-02-20 15:16:07 +02:00
andri lim
0b9326f955
fix block 81383 problem
2019-02-20 15:16:07 +02:00
andri lim
8461211f9a
bugfix: implement computation snapshot, revert, commit
2019-02-18 13:16:04 +02:00
andri lim
8f9d1ae748
fixes callcode bug
2019-02-15 17:20:51 +02:00
andri lim
17188dfcb1
fixes memory write: no padding
2019-02-15 17:20:51 +02:00
andri lim
a28f06a825
fixes CALL opcode
2019-02-06 18:42:03 +01:00
Yuriy Glukhov
481c6cf4ed
Use nim-eth ( #224 )
2019-02-05 20:15:50 +01: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
andri lim
e78fb72ef6
fixes #188
2019-01-06 13:16:45 +02: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
andri lim
2552d6452a
fix traceTransaction
2018-12-05 22:01:29 +07:00
coffeepots
6eb430fd52
Fix CREATE op code gas costs, more debug output, call transactions
2018-11-08 16:00:21 +00:00
coffeepots
36270ff4d5
Fixes for Call gas usage, Calls use precompiles, pass down their opCode
2018-10-02 16:07:16 +01: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
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
coffeepots
766d1c4091
Temp fix for int32.high returning zero
2018-09-19 12:11:54 +03:00
Dustin Brody
048921b045
20 new working GeneralStateTests
2018-09-18 14:00:30 +00:00
coffeepots
cdfcda41b4
Remove init 0 after child computation
2018-09-14 18:04:09 +01:00
coffeepots
d465fcd038
Appy child computation in call op code
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
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
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
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
c9de0fbd29
Reduce range of cleanMemRef
2018-08-17 17:16:40 +03:00
coffeepots
ff52d75fc0
Fix overflowing int in 32 bit
2018-08-17 17:16:40 +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
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
Dustin Brody
71679d6d95
fix assorted test fixtures which have been un-skipped
2018-08-02 15:57:28 -07: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
Dustin Brody
5d82493a9c
fix comment to correctly reflect REVERT opcode
2018-07-25 16:30:18 -07: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
c2ed3bf11e
mstore8 wants LSB of BE representation, i.e. last byte
2018-07-24 12:25:21 -07:00