Hola Mundo
Tu primer programa Achronyme y tu primer circuito.
Programa de Propósito General
Crea un archivo hello.ach:
print("Hello, world!")
Ejecútalo:
ach run hello.ach
Salida:
Hello, world!
Un ejemplo más interesante
let fib = fn fib(n) {
if n < 2 { return n }
return fib(n - 1) + fib(n - 2)
}
for i in 0..10 {
print(fib(i))
}
Tu Primer Circuito
Crea un archivo multiply.ach:
circuit multiply(product: Public, a: Witness, b: Witness) {
assert_eq(a * b, product)
}
Este circuito demuestra que el probador conoce dos números secretos a y b cuyo producto es igual al valor público product.
Compílalo:
ach circuit multiply.ach --inputs "product=42,a=6,b=7"
Esto produce circuit.r1cs y witness.wtns, listos para generación de pruebas con snarkjs.
¿Qué acaba de pasar?
- El parser leyó
multiply.achy construyó un AST con la definición del circuitomultiply - La fase de bajada a IR lo convirtió en instrucciones SSA
- El backend R1CS compiló la multiplicación en una sola restricción:
a * b = product - El generador de testigos completó los valores concretos:
a=6,b=7,product=42 - El exportador escribió archivos binarios compatibles con snarkjs
Prueba en Línea
También puedes generar pruebas directamente desde código Achronyme:
let a = 0p6
let b = 0p7
let product = 0p42
let p = prove(product: Public) {
assert_eq(a * b, product)
}
El bloque prove {} compila el circuito, captura variables del scope, genera
un witness, verifica los constraints y devuelve una prueba Groth16 real.
Achronyme 0.1.0 deliberadamente no elige el modelo de confianza por ti.
Para desarrollo local, activa el setup de una sola parte de forma explicita:
ach --insecure-dev-setup run multiply.ach
La bandera facilita iterar, pero sus llaves y pruebas no son confiables para produccion. El proving de produccion selecciona un store derivado de ceremonia y ligado al circuito exacto:
ach --trusted-key-dir ./trusted-keys run multiply.ach
Sin una de las dos opciones, generar pruebas falla de forma cerrada. Continua con Generacion de Pruebas antes de usar artefactos fuera del desarrollo local.