All Projects → ETCDEVTeam → Sputnikvm

ETCDEVTeam / Sputnikvm

Licence: apache-2.0
A Blockchain Virtual Machine

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Sputnikvm

Burrow
https://wiki.hyperledger.org/display/burrow
Stars: ✭ 851 (+257.56%)
Mutual labels:  ethereum, evm, virtual-machine
Ethereumjs Monorepo
Monorepo for the Ethereum VM TypeScript Implementation
Stars: ✭ 813 (+241.6%)
Mutual labels:  ethereum, evm, virtual-machine
Hevm
(OLD REPO) A debug-oriented Ethereum VM (EVM)
Stars: ✭ 114 (-52.1%)
Mutual labels:  ethereum, evm
Chains
provides metadata for networkIDs and chainIDs
Stars: ✭ 117 (-50.84%)
Mutual labels:  ethereum, evm
Evm Tools
Ethereum Virtual Machine tools and guide
Stars: ✭ 238 (+0%)
Mutual labels:  ethereum, evm
Evm2wasm
[ORPHANED] Transcompiles EVM code to eWASM
Stars: ✭ 96 (-59.66%)
Mutual labels:  ethereum, evm
Openzeppelin Contracts
OpenZeppelin Contracts is a library for secure smart contract development.
Stars: ✭ 14,308 (+5911.76%)
Mutual labels:  ethereum, evm
Evmc
EVMC – Ethereum Client-VM Connector API
Stars: ✭ 137 (-42.44%)
Mutual labels:  ethereum, evm
Ette
EVM-based Blockchain Indexer, with historical data query & real-time notification support 😎
Stars: ✭ 37 (-84.45%)
Mutual labels:  ethereum, evm
Remix Project
Remix is a browser-based compiler and IDE that enables users to build Ethereum contracts with Solidity language and to debug transactions.
Stars: ✭ 225 (-5.46%)
Mutual labels:  ethereum, evm
Evmone
Fast Ethereum Virtual Machine implementation
Stars: ✭ 162 (-31.93%)
Mutual labels:  ethereum, evm
Ethabi
Encode and decode smart contract invocations
Stars: ✭ 172 (-27.73%)
Mutual labels:  ethereum, evm
Chaingear
The consensus computer driven database framework
Stars: ✭ 83 (-65.13%)
Mutual labels:  ethereum, evm
Py Evm
A Python implementation of the Ethereum Virtual Machine
Stars: ✭ 1,122 (+371.43%)
Mutual labels:  ethereum, evm
Sputter
Ethereum Virtual Machine (EVM) implementation
Stars: ✭ 111 (-53.36%)
Mutual labels:  ethereum, virtual-machine
Remix
This has been moved to https://github.com/ethereum/remix-project
Stars: ✭ 1,063 (+346.64%)
Mutual labels:  ethereum, evm
Remix Ide
Documentation for Remix IDE
Stars: ✭ 1,768 (+642.86%)
Mutual labels:  ethereum, evm
Ruby To Solidity
(Secure) Ruby to Solidity (Source-to-Source) Cross-Compiler Cheat Sheet / White Paper
Stars: ✭ 7 (-97.06%)
Mutual labels:  ethereum, evm
Armors Solidity
Armors-solidity is a framework to build secure smart contracts on Ethereum.
Stars: ✭ 184 (-22.69%)
Mutual labels:  ethereum, evm
Rattle
evm binary static analysis
Stars: ✭ 152 (-36.13%)
Mutual labels:  ethereum, evm

SputnikVM: A Blockchain Virtual Machine

Build Status License

Name Description Crates.io Documentation
sputnikvm Core library for the Ethereum Virtual Machine crates.io Documentation
sputnikvm-stateful Merkle Trie stateful wrapper for SputnikVM crates.io Documentation

SputnikVM is an implementation of an Ethereum Virtual Machine. It aims to be an efficient, pluggable virtual machine for different Ethereum-based blockchains.

We encourage all Ethereum'esque blockchains to adopt SputnikVM, and to make use of SputnikVM's RFC governance project which governs the parameters of each blockchain's VM. This way we can draw from the experience of the community and learn from other proposed RFCs.

Features

  • Standalone - can be launched as an independent process or integrated into other apps
  • Universal - supports different Ethereum chains, such as ETC, ETH or private ones
  • Stateless - only an execution environment connected to independent State storage
  • Fast - main focus is on performance
  • IoT compatible - designed to support hardware used in embedded devices
  • FFI, Protobuf and JSON interface
  • written in Rust, can be used as a binary, cargo crate or shared library

Supported Networks

Network Crates.io Documentation
Ethereum Classic crates.io Documentation
Ethereum crates.io Documentation
Ellaism crates.io Documentation
Ubiq crates.io Documentation
Expanse crates.io Documentation
Musicoin crates.io Documentation

Precompiled Contracts

The core library has the initial four precompiled contracts embedded. To use the bn128 and modexp precompiled contracts introduced by the Byzantium hard fork, pull the following crates.

Name Description Crates.io Documentation
sputnikvm-precompiled-bn128 bn128 precompiled contracts crates.io Documentation
sputnikvm-precompiled-modexp modexp precompiled contracts crates.io Documentation

Related projects

  • SputnikVM Dev - SputnikVM instance for Smart Contract development, provides testing environment and mock for JSON RPC API
  • SputnikVM in Browser - experimental version of SputnikVM compiled into WebAssembly, therefore can be launched in a browser on Node.js
  • SputnikVM for embedded devices - experimental project to run on full functional EVM on embedded devices

Dependencies

Ensure you have at least rustc 1.26.2 (594fb253c 2018-06-01). Rust 1.25.0 and before is not supported.

Documentation

Build from sources

SputnikVM is written Rust. If you are not familiar with Rust please see the getting started guide.

Build

To start working with SputnikVM you'll need to install rustup, then you can do:

$ git clone [email protected]:ETCDEVTeam/sputnikvm.git
$ cd sputnikvm
$ cargo build --release --all

Testing

We currently use two ways to test SputnikVM and ensure its execution aligns with other Ethereum Virtual Machine implementations:

  • jsontests: This uses part of the Ethereum tests. Those tests currently does not have good coverage for system operation opcodes. Besides, some tests are incorrect so they are disabled.
  • regtests: A complete regression tests is done on the Ethereum Classic mainnet from genesis block to block 4 million. Some of the previously failed tests are also integrated into Rust's test system. See wiki for how to reproduce the regression tests.

To learn more about building SputnikVM from source please read wiki page Building and Testing

License

Apache 2.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].