Hola Mundo
Programa de Propósito General
Sección titulada «Programa de Propósito General»Crea un archivo hello.ach:
print("Hello, world!")Ejecútalo:
ach run hello.achSalida:
Hello, world!Un ejemplo más interesante
Sección titulada «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
Sección titulada «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?
Sección titulada «¿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
Sección titulada «Prueba en Línea»También puedes generar pruebas directamente desde código Achronyme:
let a = 0p6let b = 0p7let product = 0p42
let p = prove(product: Public) { assert_eq(a * b, product)}El bloque prove {} compila el circuito, captura variables del ámbito circundante, genera un testigo, verifica las restricciones y — si hay un backend de pruebas disponible — devuelve una prueba criptográfica.