{"id":13779742,"url":"https://github.com/ETCDEVTeam/sputnikvm","last_synced_at":"2025-05-11T13:31:14.486Z","repository":{"id":39612285,"uuid":"86829446","full_name":"ETCDEVTeam/sputnikvm","owner":"ETCDEVTeam","description":"A Blockchain Virtual Machine","archived":false,"fork":false,"pushed_at":"2020-08-12T17:43:42.000Z","size":6291,"stargazers_count":279,"open_issues_count":14,"forks_count":61,"subscribers_count":34,"default_branch":"master","last_synced_at":"2024-10-30T03:37:52.602Z","etag":null,"topics":["ethereum","ethereum-classic","evm","rust","virtual-machine"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ETCDEVTeam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-31T14:42:38.000Z","updated_at":"2024-10-01T05:29:01.000Z","dependencies_parsed_at":"2022-09-15T21:40:37.588Z","dependency_job_id":null,"html_url":"https://github.com/ETCDEVTeam/sputnikvm","commit_stats":null,"previous_names":["ethereumproject/sputnikvm"],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ETCDEVTeam%2Fsputnikvm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ETCDEVTeam%2Fsputnikvm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ETCDEVTeam%2Fsputnikvm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ETCDEVTeam%2Fsputnikvm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ETCDEVTeam","download_url":"https://codeload.github.com/ETCDEVTeam/sputnikvm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225056727,"owners_count":17414192,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ethereum","ethereum-classic","evm","rust","virtual-machine"],"created_at":"2024-08-03T18:01:08.726Z","updated_at":"2024-11-17T15:30:39.678Z","avatar_url":"https://github.com/ETCDEVTeam.png","language":"Rust","funding_links":[],"categories":["EVM Implementations","Tooling"],"sub_categories":["Other Implementations"],"readme":"# SputnikVM: A Blockchain Virtual Machine\n\n[![Build Status](https://travis-ci.org/ETCDEVTeam/sputnikvm.svg?branch=master)](https://travis-ci.org/ETCDEVTeam/sputnikvm)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](./LICENSE)\n\n| Name               | Description                                   | Crates.io                                                                                                           | Documentation                                                                                        |\n|--------------------|:---------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------:|\n| sputnikvm          | Core library for the Ethereum Virtual Machine | [![crates.io](https://img.shields.io/crates/v/sputnikvm.svg)](https://crates.io/crates/sputnikvm)                   | [![Documentation](https://docs.rs/sputnikvm/badge.svg)](https://docs.rs/sputnikvm)                   |\n| sputnikvm-stateful | Merkle Trie stateful wrapper for SputnikVM    | [![crates.io](https://img.shields.io/crates/v/sputnikvm-stateful.svg)](https://crates.io/crates/sputnikvm-stateful) | [![Documentation](https://docs.rs/sputnikvm-stateful/badge.svg)](https://docs.rs/sputnikvm-stateful) |\n\nSputnikVM is an implementation of an Ethereum Virtual Machine. It aims to be an\nefficient, pluggable virtual machine for different Ethereum-based blockchains.\n\nWe encourage all Ethereum'esque blockchains to adopt SputnikVM, and to make use\nof SputnikVM's [RFC governance project](https://etcrfc.that.world/) which\ngoverns the parameters of each blockchain's VM. This way we can draw from the\nexperience of the community and learn from other proposed RFCs.\n\n## Features\n\n * *Standalone* - can be launched as an independent process or integrated into other apps\n * *Universal* - supports different Ethereum chains, such as ETC, ETH or private ones\n * *Stateless* - only an execution environment connected to independent State storage\n * *Fast* - main focus is on performance\n * *IoT compatible* - designed to support hardware used in embedded devices\n * FFI, Protobuf and JSON interface\n * written in Rust, can be used as a binary, cargo crate or shared library  \n\n## Supported Networks\n\n| Network          | Crates.io                                                                                                                               | Documentation                                                                                                            |\n|------------------|:---------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:|\n| Ethereum Classic | [![crates.io](https://img.shields.io/crates/v/sputnikvm-network-classic.svg)](https://crates.io/crates/sputnikvm-network-classic)       | [![Documentation](https://docs.rs/sputnikvm-network-classic/badge.svg)](https://docs.rs/sputnikvm-network-classic)       |\n| Ethereum         | [![crates.io](https://img.shields.io/crates/v/sputnikvm-network-foundation.svg)](https://crates.io/crates/sputnikvm-network-foundation) | [![Documentation](https://docs.rs/sputnikvm-network-foundation/badge.svg)](https://docs.rs/sputnikvm-network-foundation) |\n| Ellaism          | [![crates.io](https://img.shields.io/crates/v/sputnikvm-network-ellaism.svg)](https://crates.io/crates/sputnikvm-network-ellaism)       | [![Documentation](https://docs.rs/sputnikvm-network-ellaism/badge.svg)](https://docs.rs/sputnikvm-network-ellaism)       |\n| Ubiq             | [![crates.io](https://img.shields.io/crates/v/sputnikvm-network-ubiq.svg)](https://crates.io/crates/sputnikvm-network-ubiq)             | [![Documentation](https://docs.rs/sputnikvm-network-ubiq/badge.svg)](https://docs.rs/sputnikvm-network-ubiq)             |\n| Expanse          | [![crates.io](https://img.shields.io/crates/v/sputnikvm-network-expanse.svg)](https://crates.io/crates/sputnikvm-network-expanse)       | [![Documentation](https://docs.rs/sputnikvm-network-expanse/badge.svg)](https://docs.rs/sputnikvm-network-expanse)       |\n| Musicoin         | [![crates.io](https://img.shields.io/crates/v/sputnikvm-network-musicoin.svg)](https://crates.io/crates/sputnikvm-network-musicoin)     | [![Documentation](https://docs.rs/sputnikvm-network-musicoin/badge.svg)](https://docs.rs/sputnikvm-network-musicoin)     |\n\n## Precompiled Contracts\n\nThe 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.\n\n| Name                         | Description                  | Crates.io                                                                                                                               | Documentation                                                                                                            |\n|------------------------------|:----------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:|\n| sputnikvm-precompiled-bn128  | bn128 precompiled contracts  | [![crates.io](https://img.shields.io/crates/v/sputnikvm-precompiled-bn128.svg)](https://crates.io/crates/sputnikvm-precompiled-bn128)   | [![Documentation](https://docs.rs/sputnikvm-precompiled-bn128/badge.svg)](https://docs.rs/sputnikvm-precompiled-bn128)   |\n| sputnikvm-precompiled-modexp | modexp precompiled contracts | [![crates.io](https://img.shields.io/crates/v/sputnikvm-precompiled-modexp.svg)](https://crates.io/crates/sputnikvm-precompiled-modexp) | [![Documentation](https://docs.rs/sputnikvm-precompiled-modexp/badge.svg)](https://docs.rs/sputnikvm-precompiled-modexp) |\n\n## Related projects\n\n * [SputnikVM Dev](https://github.com/ETCDEVTeam/sputnikvm-dev) - SputnikVM instance for Smart Contract development, \n    provides testing environment and mock for JSON RPC API\n * [SputnikVM in Browser](https://github.com/sorpaas/sputnikvm-in-browser) - experimental version of SputnikVM \n    compiled into WebAssembly, therefore can be launched in a browser on Node.js\n * [SputnikVM for embedded devices](https://github.com/sorpaas/sputnikvm-on-rux) - experimental project to run on \n    full functional EVM on embedded devices       \n\n## Dependencies\n\nEnsure you have at least `rustc 1.26.2 (594fb253c 2018-06-01)`. Rust 1.25.0 and\nbefore is not supported.\n\n## Documentation\n\n* [Latest release documentation](https://docs.rs/sputnikvm)\n* [Unstable documentation](https://that.world/~docs/sputnikvm/sputnikvm)\n\n## Build from sources\n\nSputnikVM is written Rust. If you are not familiar with Rust please\nsee the\n[getting started guide](https://doc.rust-lang.org/book/ch01-00-getting-started.html). \n\n### Build \n\nTo start working with SputnikVM you'll \nneed to install [rustup](https://www.rustup.rs/), then you can do:\n \n```bash\n$ git clone git@github.com:ETCDEVTeam/sputnikvm.git\n$ cd sputnikvm\n$ cargo build --release --all\n```\n\n### Testing\n\nWe currently use two ways to test SputnikVM and ensure its execution\naligns with other Ethereum Virtual Machine implementations:\n\n* [jsontests](/jsontests): This uses part of the Ethereum\n  [tests](https://github.com/ETCDEVTeam/tests). Those tests\n  currently does not have good coverage for system operation\n  opcodes. Besides, some tests are incorrect so they are disabled.\n* [regtests](/regtests): A complete regression tests is done on the\n  Ethereum Classic mainnet from genesis block to block 4 million. Some\n  of the previously failed tests are also integrated into Rust's test\n  system. See\n  [wiki](https://github.com/ETCDEVTeam/sputnikvm/wiki/Building-and-Testing)\n  for how to reproduce the regression tests.\n  \nTo learn more about building SputnikVM from source please read wiki page\n [Building and Testing](https://github.com/ETCDEVTeam/sputnikvm/wiki/Building-and-Testing)  \n\n## License\n\nApache 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FETCDEVTeam%2Fsputnikvm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FETCDEVTeam%2Fsputnikvm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FETCDEVTeam%2Fsputnikvm/lists"}