# Swiftness CairoVM Verifier
![Version](https://img.shields.io/badge/v0.1.2-green?style=flat-square&logo=git&logoColor=white&label=version)
![Continuous Integration](https://img.shields.io/github/actions/workflow/status/iosis-tech/swiftness/ci.yml?style=flat-square&logo=githubactions&logoColor=white&label=Continuous%20Integration)
[![Crates.io Version](https://img.shields.io/crates/v/swiftness?style=flat-square&logo=lootcrate)](https://crates.io/crates/swiftness)
[![docs.rs](https://img.shields.io/docsrs/swiftness?style=flat-square&logo=docsdotrs)](https://docs.rs/swiftness/)
[![hub.docker](https://img.shields.io/docker/pulls/okm165/swiftness?style=flat-square&logo=docker&logoColor=white&label=docker)](https://hub.docker.com/repository/docker/okm165/swiftness/tags)
Swiftness is a Rust implementation of the Cairo-VM STARK verifier with layouts, inspired by StarkWare's [Cairo-verifier](https://github.com/starkware-libs/cairo-lang) in Cairo0.
## Getting Started
### Verify an Example Proof
```sh
cd cli && cargo run --release --bin swiftness --features starknet_with_keccak,keccak_160_lsb,stone5 --no-default-features -- --proof ../examples/proofs/starknet_with_keccak/cairo0_stone5_example_proof.json
```
## Running Tests
```sh
cargo test
```
## WebAssembly (WASM) Setup
1. **Install `wasm-pack`:**
```sh
cargo install wasm-pack
```
2. **Build WASM:**
```sh
cd wasm_bindings && wasm-pack build --target web --features recursive_with_poseidon,blake2s_248_lsb,stone5 --no-default-features
```
## Features
### Implemented Layouts
- [x] dex
- [x] recursive
- [x] recursive_with_poseidon
- [x] small
- [x] starknet
- [x] starknet_with_keccak
- [x] dynamic
### Commitment Hashes
- [x] keccak_160_lsb
- [x] keccak_248_lsb
- [x] blake2s_160_lsb
- [x] blake2s_248_lsb
### Stone Prover versions
- [x] Stone5
- [x] Stone6
### Web Support
- [x] WASM support
- [x] NO_STD support
- [x] [Web Demo](https://demo.swiftness.iosis.tech/)
- [x] [NPM packages](https://www.npmjs.com/search?q=swiftness)
### Other Platforms Support
- [x] Bare Armv7-R, Big Endian - `armebv7r-none-eabi`
- [x] Bare RISC-V (RV64IMAC ISA) - `riscv64imac-unknown-none-elf`
- [x] Bare ARM64, softfloat - `aarch64-unknown-none-softfloat`
- [x] Bare ARM64, hardfloat - `aarch64-unknown-none`
## Contributing
Contributions are welcome! Feel free to open issues or submit pull requests to help improve this project.