Presentamos Achronyme — un lenguaje para pruebas zero-knowledge. Lee el anuncio

Mapa de Crates

Dependencias y responsabilidades de los crates del workspace.

El workspace de Achronyme contiene 7 crates. Todos están en la versión 0.7.0, edición 2021.

Resumen de Crates

CrateRutaPropósito
memorymemory/Representación de valores, FieldElement (BN254 Montgomery), arenas del heap, GC
achronyme-parserachronyme-parser/Parser de descenso recursivo, tipos del AST
constraintsconstraints/Sistema de restricciones R1CS, sistema Plonkish, hash Poseidon, exportación binaria
irir/Representación intermedia SSA, bajada AST→IR, pases de optimización
vmvm/Máquina virtual basada en registros, intérprete de bytecode, funciones nativas
compilercompiler/Backends R1CS y Plonkish, generación de testigos
clicli/Interfaz de línea de comandos, orquestación de pruebas (arkworks Groth16, halo2 PlonK)

Grafo de Dependencias

memory          achronyme-parser
  │                    │
  ├──────┐             │
  ▼      ▼             │
constraints   ┌────────┘
  │      │    │
  │      ▼    ▼
  │       ir ◄──── memory
  │       │
  ▼       │
  vm      │
  │       │
  └──┬────┘

  compiler ◄── memory, achronyme-parser


    cli ◄── memory, vm, constraints, ir

Fundación (sin dependencias del workspace)

memory — La capa base. Define FieldElement (campo escalar BN254 en forma Montgomery, limbs [u64; 4]), Value etiquetado (etiqueta de 4 bits + payload de 60 bits), arenas tipadas del heap y GC mark-and-sweep.

achronyme-parser — Parser independiente. Descenso recursivo con parseo de expresiones Pratt. Exporta parse_program(source) -> Result<Program, String> y tipos del AST (Program, Stmt, Expr, Block).

Capa Media

constraintsmemory

Abstracciones centrales del sistema de restricciones. Variable(usize) para referencias de cables, LinearCombination para expresiones simbólicas dispersas, ConstraintSystem para forzar A×B=C. También contiene el PlonkishSystem (puertas, lookups, restricciones de copia), parámetros de hash Poseidon (compatible con circomlibjs) y exportación binaria (write_r1cs, write_wtns en formato iden3).

irmemory, constraints, achronyme-parser

Representación intermedia SSA para compilación de circuitos. IrLowering convierte el AST en un IrProgram plano (19 variantes de instrucción). Incluye 4 pases de optimización (const_fold, dce, bool_prop, taint) y un evaluador para ejecución concreta del IR.

vmmemory, constraints

VM de bytecode basada en registros. 40+ opcodes, compilador de bytecode (FunctionCompiler), 23 funciones nativas, soporte de bloques prove {}. Usa constraints para cálculo de hash Poseidon en modo VM.

Capa Superior

compilermemory, vm, constraints, achronyme-parser, ir

Compilación de backend desde IR a sistemas de restricciones. R1CSCompiler mapea variables SSA a combinaciones lineales y emite restricciones R1CS. PlonkishCompiler usa evaluación perezosa PlonkVal con filas basadas en celdas. Ambos backends incluyen compile_ir_with_witness() para compilación + generación de testigos combinada.

climemory, vm, compiler, constraints, ir

CLI orientado al usuario. Despacha ach run (ruta VM) y ach circuit (ruta de restricciones). Maneja orquestación de pruebas con bibliotecas criptográficas externas:

  • arkworks: ark-groth16, ark-bn254, ark-relations para pruebas Groth16
  • halo2: halo2_proofs para pruebas PlonK

Puntos de Entrada Clave

TareaCrateFunción
Parsear fuenteachronyme-parserparse_program(source)
Bajar a IRirIrLowering::lower_circuit(source, pub, wit)
Optimizar IRirpasses::optimize(&mut program)
Compilar a R1CScompilerR1CSCompiler::compile_ir(program)
Compilar a PlonkishcompilerPlonkishCompiler::compile_ir(program)
Generar testigocompilerR1CSCompiler::compile_ir_with_witness(program, inputs)
Exportar .r1csconstraintswrite_r1cs(cs)
Exportar .wtnsconstraintswrite_wtns(witness)
Ejecutar VMvmVM::interpret(function)
Ejecutar CLIclimain() → despacho de comandos
Navigation