athenavm / athena

Athena monorepo
https://www.athenavm.org/
Apache License 2.0
6 stars 0 forks source link
blockchain riscv spacemesh vm

Athena

Athena is a prototype deterministic smart contract engine that serves as the Spacemesh network VM, and Athena is being designed and built by the Spacemesh team. However, Athena is designed to be modular and largely protocol-agnostic so it will run on other chains. Contributions and integrations are welcome.

Athena includes a virtual machine (VM) based on the RISC-V ISA, including support for RV32IM and RV32EM, an interpreter/compiler for running smart contract code, and related tooling. The VM is modular and features a mature FFI that can be integrated into any language that supports CFFI. For more information on the Athena project and its goals see Introducing Athena and the Athena project updates.

Project Goals

Non-Goals

Progress

Athena is currently in a prototype stage. The goal of this stage of the project is to create a working, end to end proof of concept VM that successfully and securely executes transactions on a testnet. We also intend to test proving these transactions in ZK. Here's a map of the immediate goals and progress. See the Project boards for more up to date progress.

Phase Description Status Report
0. Initial R&D Study the status quo, finalize prototype design read
1. Prototype VM Build a VM that can compile and run RISC-V code read
2. Blockchain integration Add FFI and support for host functions, gas metering, etc. 🚧 coming soon
3. go-spacemesh integration Prototype integration into the go-spacemesh full node
4. Testnet launch Launch a testnet where Athena smart contracts can be tested
5. Mechanism/rollup design Turn Athena into an optimistic rollup with incentives, punishments, etc.
6. Succintness/ZK proving Prototype ZK rollup

Acknowledgements

The overall project structure and a large portion of the core code was copied from SP1 under the MIT license with gratitude. Other projects that have been influential on the Athena design include RiscZero and PolkaVM. See ATTRIBUTIONS.md for others.

License

This project is dual-licensed under both the Apache and MIT Licenses, at your option. Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. See Rationale of Apache dual licensing.

Disclaimer

Warning: This code is not production quality and should not be used in production systems.