Nimbus: an Ethereum Execution Client for Resource-Restricted Devices https://status-im.github.io/nimbus-eth1/
Go to file
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
doc Update Nimbus - An Ethereum 2.0 Sharding Client_xt.md 2018-05-28 10:44:12 -07:00
examples Fix import in example 2018-06-19 21:15:43 +02:00
nimbus Refactor interpreter dispatch (#65) 2018-07-06 09:52:31 +02:00
tests Refactor interpreter dispatch (#65) 2018-07-06 09:52:31 +02:00
.appveyor.yml Fix Appveyor when it appends a random string (#16) 2018-04-13 19:33:20 +02:00
.gitignore Hash256/EthAddrres refactoring 2018-05-30 19:11:15 +03:00
.travis.yml Updated Nix build environment for working with Nimbus 2018-06-24 17:46:43 +03:00
LICENSE-APACHEv2 Update README badges and add dual-license header 2018-04-06 16:52:10 +02:00
LICENSE-MIT Update README badges and add dual-license header 2018-04-06 16:52:10 +02:00
README.md Updated Nix build environment for working with Nimbus 2018-06-24 17:46:43 +03:00
VMTests.md Refactor interpreter dispatch (#65) 2018-07-06 09:52:31 +02:00
default.nix Updated Nix build environment for working with Nimbus 2018-06-24 17:46:43 +03:00
nim.nix Updated Nix build environment for working with Nimbus 2018-06-24 17:46:43 +03:00
nimbus.nimble Implement storage backends using RocksDB and SQLite 2018-06-26 13:46:54 +03:00
nimbus.nix Implement storage backends using RocksDB and SQLite 2018-06-26 13:46:54 +03:00

README.md

Nimbus: an Ethereum 2.0 Sharding Client for Resource-Restricted Devices

Build Status (Travis) Windows build status (Appveyor)License: Apache License: MIT Stability: experimental

Join the Status community chats: Riot: #dev-status Riot: #nimbus

Rationale

Nimbus: an Ethereum 2.0 Sharding Client

Building & Testing

Prerequisites

Please install a recent version of Facebook's RocksDB following the instructions here:

https://github.com/facebook/rocksdb/blob/master/INSTALL.md

Currently Nimbus requires the latest development version of the Nim programming language. Follow the installation steps or use choosenim.

Obtaining the prerequisites through the Nix package manager

Users of the Nix package manager can install all prerequisites simply by running:

nix-shell nimbus.nix

Build

You can build the package and run the tests using nimble test. You can run the example using nim compile --run examples/decompile_smart_contract.nim.

License

Licensed under one of the following: