Commit Graph

2402 Commits

Author SHA1 Message Date
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 040c09d5a9
Merge pull request #45 from status-im/hash-types-refactoring
Hash256/EthAddrres refactoring
2018-05-31 11:36:16 +03: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
alexm-status 6473610574
Update README.md 2018-05-28 10:45:03 -07:00
alexm-status 78609c2279
Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-28 10:44:12 -07:00
alexm-status 4bdbcb9d80
Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-28 10:35:53 -07:00
Yuriy Glukhov 8d3f38bdbd
Merge pull request #44 from status-im/renames
Some renames
2018-05-28 14:37:19 +03:00
Yuriy Glukhov 51b572d8b8 Some renames 2018-05-28 13:22:28 +03:00
alexm-status 8cfebe1691
Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-27 12:14:16 -07:00
alexm-status c96dd3f0e7
Update README.md 2018-05-27 12:13:55 -07:00
alexm-status e445cf6bc9
Merge pull request #42 from status-im/aem_play_Nimbus
Update README.md
2018-05-27 12:11:44 -07:00
alexm-status 31b7533eb0
Update README.md 2018-05-27 11:07:58 -07:00
Mamy Ratsimbazafy cb49352b6a
Gas & Memory ops refactoring - uses native integer instead of uint256 fixes #35 and #39 (#40)
* Gas refactoring - uses int64

* Use primitive int in test_vm_json
2018-05-25 12:25:19 +02:00
alexm-status c77b7cd035
Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-24 20:16:59 -07:00
alexm-status 0dd9d97c30
Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-24 20:03:00 -07:00
alexm-status be46ffbec9
Update README.md 2018-05-24 19:39:14 -07:00
alexm-status 65f9e597be
Created a doc folder and moved the rationale there 2018-05-24 19:33:36 -07:00
alexm-status b6991d9d55
Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-24 16:39:48 -07:00
alexm-status 502941a388
Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-24 10:42:18 -07:00
Mamy Ratsimbazafy 0b6fbbad67
1st gas refactoring - handle different gas costs in Ethereum forks (#37)
* Start by renaming the fork by chronological order

* initial commit - groundwork: support different gasCosts depending on VMs

* Running VMTests with new gas config - only push32AndSuicide changed

* Introduce newNimbusVM that (temporarily) abstract over Frontier and Tangerine VM creation

* Fix Gas - push32AndSuicide repassing and expXY_success passing - fixes #34

* case sensitive imports (thank you auto-completion) fix Travis on Linux

* Add pre and post EIP-150 tests

* Nimify gas identifiers that supports multiple forks
2018-05-24 12:01:59 +02:00
alexm-status 762b0b24d2
Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-22 17:26:10 -07:00
alexm-status 386d8e8327
Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-21 18:52:33 -07:00
alexm-status 12de60dd23
Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-21 18:44:25 -07:00
alexm-status ed9f1ed672
Added a TOC 2018-05-21 18:42:28 -07:00
alexm-status 0fefdc5c4c
Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-21 10:29:40 -07:00
alexm-status 62977c498f
Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-21 10:24:01 -07:00
alexm-status a8b1d02ec4
Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-21 10:18:06 -07:00
alexm-status f46ee5ac90
Improved syntax and formatting 2018-05-21 09:50:56 -07:00
mratsim 165b1872a6 Update the smart contract decompiler example 2018-05-18 12:57:55 +02:00
Mamy Ratsimbazafy 507bdda25a
Catch stack underflow (#33)
* Stack underflow: Add failing test to catch #31

* ensurePop, use proc instead of template + add comment for future refactoring of popInternal

* Check stack underflows before popping values

* run json tests again
2018-05-17 20:59:17 +02:00
Mamy Ratsimbazafy 74a558f187
Fix arithmetic implementation issues (#30)
* Change modular arithmetic ops and signextend implementation

* Don't use signed int, introduce EVM "pseudoSigned" conversion pass 4 sdiv/smod tests

* Print computation error in tests
2018-05-17 10:08:28 +02:00
alexm-status 65d477abcb
Update README.md 2018-05-16 22:04:19 -07:00
alexm-status f8938f9a05
Update README.md 2018-05-16 22:03:36 -07:00
alexm-status 07333bf208
Update README.md 2018-05-16 21:55:09 -07:00
alexm-status c254c14b68
Nimbus - An Ethereum 2.0 Sharding Client 2018-05-16 21:52:54 -07:00
alexm-status 7b818ea8b1
Update README.md 2018-05-16 21:51:17 -07:00
Mamy Ratsimbazafy 43797485e5
Fix exp gas cost pass 40 new tests (#29) 2018-05-16 10:41:34 +02:00
Mamy Ratsimbazafy 0f56bdec26
Re-enable exp and byteOp - pass several dozens more tests (#28)
* Rebase with master

* Run the new tests
2018-05-15 11:23:45 +02:00
Zahary Karadjov f705a60dc1 fixes #27 (a number of setStorage failing tests) 2018-05-14 23:13:13 +03:00
mratsim 9fc80cb6c9 Update VMTests with Stint, raise Exception for non-implemented Exp and byteOp instead of quitting 2018-05-11 18:16:35 +02:00
Mamy Ratsimbazafy 8f95c86944
Fix JSON VMtests compile-time errors (#25)
* Fix imports

* Fix Ethtime in fixtures following https://github.com/nim-lang/Nim/commit/f6df2d9956a79eda0486391
2018-05-11 15:32:10 +02:00
Mamy Ratsimbazafy 2d34f1453c
Migrate from ttmath to stint (#24)
* Constants and accounts compile as standalone

* Mass replace ttmath by Stint

* Adapt utils_numeric proc

* Adapt memory.nim

* Deactivate "ValidationError" test that requires pow(2, 256) function

* Fix state_db toByteArrayBE

* Fix more getUint toInt conversion

* Remove absolute value ambiguous call

* Stub-ify proc and opcode that requires pow - https://github.com/status-im/nim-stint/issues/37
2018-05-07 14:41:54 +02:00
cheatfate c42bbf6d63 Fix: no help on empty command line. 2018-05-02 18:04:54 +03:00
cheatfate bb49e935f6 Added Discovery4Service as working prototype. 2018-05-02 18:01:10 +03:00
cheatfate 155287c21b Fix tests. 2018-05-01 11:44:05 +03:00
cheatfate 0c3c32df48 Remove #master hack from ttmath. 2018-05-01 11:41:52 +03:00
cheatfate 61ea215aa0 Remove #master hack. 2018-05-01 11:38:38 +03:00
cheatfate fac64467f2 Add nim-eth-p2p dependency.
Add ENode support to arguments parsing.
2018-05-01 03:47:35 +03:00