Una máquina virtual de conocimiento cero que genera pruebas de ejecución correcta para programas escritos en Rust u otros lenguajes compilados con LLVM.
starkware-libs/stwo
Una implementación en Rust de pruebas y verificación Circle STARK sobre el cuerpo M31, con un verificador no_std y un backend de prover con SIMD.
- Estrellas
- 507
- Forks
- 183
- Issues abiertos
- 48
- Último commit
- anteayer
¿Qué es?
Stwo es un prover y verificador Circle STARK escrito en Rust. Ejecuta el sistema de pruebas sobre el cuerpo del primo de Mersenne M31 (2^31 − 1), lo que permite aritmética modular de 32 bits que se mapea en carriles SIMD como AVX2, AVX-512, NEON y WebAssembly SIMD. La biblioteca incluye la torre de cuerpos M31, CM31 y QM31, FFT sobre círculos, una variante de FRI para el dominio circular, compromisos Merkle elevados (lifted) y varios canales Fiat-Shamir, entre ellos Blake2s, Blake3, Poseidon252 y Keccak256.
El repositorio está dividido en crates. El crate principal separa un verificador no_std del prover, que se activa con la feature `prover`. Junto a él se incluyen el framework de restricciones, air-utils y ejemplos de referencia (Fibonacci, Poseidon2, Blake, un estilo PLONK y una máquina de estados). Se incluyen también los argumentos de búsqueda GKR y LogUp para verificaciones de memoria y tablas.
Stwo es la base del prover SHARP de StarkWare y del prover stwo-cairo para la máquina virtual de Cairo. Los provers específicos de cada aplicación se desarrollan en repositorios separados. El desarrollo se traslada a starkware-libs/proving a partir de finales de julio de 2026.
Funciones clave
- 01Prover y verificador Circle STARK sobre el cuerpo M31.
- 02Un verificador no_std que se puede compilar sin el código del prover.
- 03Backend SIMD para AVX2, AVX-512, NEON y WebAssembly, además de un backend de referencia en CPU.
- 04Múltiples canales Fiat-Shamir: Blake2s, Blake3, Poseidon252 y Keccak256.
- 05Argumentos de búsqueda GKR y LogUp para verificaciones de memoria y tablas.
- 06Prueba en paralelo opcional basada en Rayon, activada con la feature `parallel`.
Casos de uso
- Construir una zkVM o un sistema de computación verificable sobre un backend STARK.
- Incrustar un verificador STARK pequeño en entornos on-chain, como contratos en Solidity o Cairo.
- Experimentar con construcciones Circle STARK y FRI sobre dominios circulares.
- Estudiar circuitos de referencia como Poseidon2 y Blake para pruebas basadas en STARK.
Inicio rápido
- 1
Añade stwo como dependencia de Rust (solo verifier o con la feature prover)
- 2
Compila el prover completo en modo release
cargo build --release --features prover - 3
Ejecuta la suite de pruebas estándar
cargo test --features prover
Antes de usarlo
- Requiere Rust nightly, fijado en rust-toolchain.toml.
- Para obtener el máximo rendimiento del prover completo, se necesita una CPU compatible con AVX2, AVX-512 o NEON.
- El desarrollo se trasladará a un nuevo repositorio a partir de julio de 2026.
Temas
Preguntas frecuentes
- ¿Qué es stwo?
- Una implementación en Rust de pruebas y verificación Circle STARK sobre el cuerpo M31, con un verificador no_std y un backend de prover con SIMD. Stwo es un prover y verificador Circle STARK escrito en Rust. Ejecuta el sistema de pruebas sobre el cuerpo del primo de Mersenne M31 (2^31 − 1), lo que permite aritmética modular de 32 bits que se mapea en carriles SIMD como AVX2, AVX-512, NEON y WebAssembly SIMD. La biblioteca incluye la torre de cuerpos M31, CM31 y QM31, FFT sobre círculos, una variante de FRI para el dominio circular, compromisos Merkle elevados (lifted) y varios canales Fiat-Shamir, entre ellos Blake2s, Blake3, Poseidon252 y Keccak256.
- ¿stwo es gratuito? ¿Qué licencia tiene?
- stwo es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿stwo sigue mantenido?
- Mantenimiento activo. El último commit de stwo fue el 5 nov 2026.
- ¿Para qué puedo usar stwo?
- Construir una zkVM o un sistema de computación verificable sobre un backend STARK. Incrustar un verificador STARK pequeño en entornos on-chain, como contratos en Solidity o Cairo. Experimentar con construcciones Circle STARK y FRI sobre dominios circulares. Estudiar circuitos de referencia como Poseidon2 y Blake para pruebas basadas en STARK.
- ¿Cómo se instala stwo?
- Añade stwo como dependencia de Rust (solo verifier o con la feature prover) Compila el prover completo en modo release: cargo build --release --features prover Ejecuta la suite de pruebas estándar: cargo test --features prover
- ¿Dónde consigo stwo?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/starkware-libs/stwo
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Sistema operativo descentralizado y software de nodos que ejecuta la red Aleo para aplicaciones de conocimiento cero.
Biblioteca de JavaScript y WebAssembly para generar y verificar pruebas zkSNARK con Groth16, PLONK y FFLONK, en circuitos de circom.
Primitivas de Ethereum verificadas formalmente y escritas en Lean, concebidas como una biblioteca compartida de especificaciones y demostraciones para proyectos Lean.
Framework de TypeScript para crear circuitos de conocimiento cero y zkApps, con generación y verificación de pruebas en navegadores, Node o para Mina Protocol.
Aplicación web autoalojada para compartir contraseñas y secretos cifrados de un solo uso, sin tener que configurar una base de datos.