Escribe código.
Limita acceso.
Genera pruebas.
Programas concurrentes y circuitos zero-knowledge, con autoridad y confianza de proving explícitas.
Tres máquinas, un pipeline explícito.
Cada VM posee una responsabilidad distinta en lugar de ocultar ejecución, witness y constraints detrás de un solo runtime.
Ejecuta el lenguaje, tareas estructuradas, recursos con propietario, closures y bloques de prueba. Intérprete, JIT y AOT comparten el mismo límite de autoridad.
Ejecuta programas deterministas de witness, incluyendo lowering Circom multi-subprograma y operaciones bigint nativas para circuitos a escala ECDSA.
Escalona la expansión de templates, deduplica cuerpos compartidos y emite IR de constraints sin cargar cada subgrafo repetido a la vez.
Programas de host concurrentes
Closures, colecciones, tareas estructuradas, canales acotados y recursos de archivo o TCP corren bajo grants y límites explícitos.
// Binary search — full VM mode
fn binary_search(arr, target) {
mut lo = 0
mut hi = len(arr) - 1
while lo <= hi {
let mid = (lo + hi) / 2
if arr[mid] == target { return mid }
if arr[mid] < target {
lo = mid + 1
} else {
hi = mid - 1
}
}
return -1
}
let sorted = [2, 5, 8, 12, 16, 23, 38]
assert(binary_search(sorted, 23) == 5) $ ach circuit vote.ach --inputs "..." --backend r1cs
Compiling vote.ach...
IR: 18 instructions
Optimized: 3 eliminated (constant folding + DCE)
Boolean propagation: 2 proven
R1CS generated:
Constraints: 2,179
Public inputs: 4
Private inputs: 5
Wrote vote.r1cs (932 bytes)
Wrote witness.wtns (236 bytes) — verified OK Artefactos de circuito exactos
Compila Achronyme y Circom a constraints y witnesses optimizados que pueden comprobarse con tooling estándar independiente.
Verificación separada y on-chain
Exporta artefactos compatibles con snarkjs, genera verificadores Groth16 en Solidity o verifica JSON BN254 y BLS12-381 desde el CLI.
$ ach run proof.ach --prove-backend r1cs --insecure-dev-setup
Development key selected (not for production)
Proof generated (Groth16)
Proof verified — 5 constraints
$ ach circuit proof.ach --solidity Verifier.sol
Wrote Verifier.sol (Solidity Groth16 verifier)
// Deploy and verify on-chain let secret = 0p12345
let blinding = 0p98765
let commitment = poseidon(secret, blinding)
let proof = prove(commitment: Public) {
assert_eq(poseidon(secret, blinding), commitment)
}
// proof is a first-class value
let json = proof_json(proof)
assert(verify_proof(proof)) Pruebas con fuente de llave explícita
Los bloques prove siguen siendo valores first-class, pero fallan si no se selecciona setup de desarrollo o un store confiable ligado al circuito.
Velocidad de desarrollo sin ambigüedad en producción
Usa setup local explícito al iterar y cambia al store exacto ligado por ceremonia para producción.
# Local iteration only
$ ach run commitment.ach \
--insecure-dev-setup
Development key selected
Single-party setup is explicit.
The resulting artifacts are not
trusted for production.
Proof generated (Groth16)
Proof verified let secret = 0p12345
let blinding = 0p98765
let commitment = poseidon(secret, blinding)
prove(commitment: Public) {
assert_eq(poseidon(secret, blinding), commitment)
}
// Proof generated + verified (Groth16) $ ach run commitment.ach \
--trusted-key-dir ./keys/commitment
Circuit-bound key accepted
Proof generated (Groth16)
Proof verified — 361 constraints