Athena is a prototype deterministic smart contract engine. It includes a virtual machine (VM) based on the RV32EM (RISC-V) ISA, an interpreter/compiler for running smart contract code, and related tooling. For more information on the Athena project and its goals see Introducing Athena and the Athena project updates.
- Developer Experience: Provide a robust environment with extensive tooling support.
- Performance: Ensure fast execution of smart contracts. (Note that this is a long-term goal and is not a goal at this prototype phase.)
- Small On-Chain Footprint: Deployed Athena code should be as compact as possible.
- Security: Implement strong isolation and safety measures.
- ZK Provability: Ensure provability in zero-knowledge (ZK) environments; aim to natively target RISC-V-based ZK circuits.
- Mainline Rust Support: Allow writing Athena code using ordinary Rust and compiling with the standard Rust/LLVM pipeline. Aim to provide as much stdlib support as possible.
- Floating Point Support: No support for floating-point operations.
- SIMD: No support for Single Instruction, Multiple Data operations.
- Additional RISC-V Extensions: No RISC-V extensions beyond the M extension.
- Interoperability: At this time Athena is not intended to interoperate with, or target, other blockchain VMs.
- Full System Emulation: Athena is not intended to run an operating system or standard application binaries. Try https://github.com/d0iasm/rvemu.
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.
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.
Warning: This code is not production quality and should not be used in production systems.