Achronyme 0.1.2 publicado: la verificacion separada conserva errores operativos y salida JSON global arrow_right_alt

Comandos del CLI

Referencia de comandos del CLI de Achronyme.

Banderas Globales

Estas banderas aplican a todos los subcomandos:

BanderaDescripción
--error-format <fmt>Formato de salida de diagnósticos: human (predeterminado), json, o short. Ver Diagnósticos y Advertencias
--prime <name>Campo primo para el backend de constraints: bn254 (predeterminado), bls12-381, o goldilocks
--no-configDeshabilita la carga de achronyme.toml. Todos los valores vienen de banderas CLI y defaults
--insecure-dev-setupPermite setup de una sola parte para desarrollo local. Conflicta con --trusted-key-dir
--trusted-key-dir <dir>Selecciona un store derivado de ceremonia. Conflicta con --insecure-dev-setup
--allow-read <dir>Concede lectura sobre un directorio. Repetible
--allow-write <dir>Concede escritura sobre un directorio. Repetible
--allow-connect <ip:port>Concede una IP numérica y puerto de salida. Repetible
--allow-listen <ip:port>Concede una dirección numérica y puerto de escucha. Repetible
--max-tasks <count>Limita tareas hijas de spawn explícito y await implícito; excluye la tarea raíz
--max-resources <count>Limita recursos con propietario abiertos simultáneamente
--max-task-scopes <count>Limita scopes estructurados vivos simultáneamente, explícitos e implícitos
--max-pending-native-requests <count>Limita requests nativos asíncronos en vuelo
--max-retained-task-results <count>Limita resultados terminados retenidos para task handles
--max-channels <count>Limita canales abiertos simultáneamente
--max-channel-operations <count>Limita operaciones send y receive pendientes
--blocking-workers <count>Configura workers de I/O bloqueante acotados
--blocking-queue-capacity <count>Limita requests de I/O bloqueante en cola

init — Crear un proyecto nuevo

Genera un proyecto Achronyme nuevo con achronyme.toml, directorio de fuentes, y .gitignore.

ach init my-circuit
ach init my-app --template vm

Argumentos

ArgumentoDescripción
<name>Nombre del proyecto (debe coincidir con [a-zA-Z_][a-zA-Z0-9_-]*)

Banderas

BanderaDescripción
--template <tpl>Plantilla del proyecto: circuit (predeterminado), vm, o prove

Plantillas

  • circuit — Un circuito independiente con declaraciones public/witness y assert_eq
  • vm — Un programa de propósito general con print()
  • prove — Un programa mixto con un bloque inline prove {}

Estructura generada

my-circuit/
├── achronyme.toml
├── src/
│   └── main.ach
└── .gitignore

Ver Configuración del Proyecto para la referencia de achronyme.toml.


verify — Verificar artefactos Groth16 separados

La verificación es independiente del proyecto y no crea una proving key. La curva es obligatoria para no inferir formatos criptográficos desde input no confiable:

ach verify \
  --proof proof.json \
  --public public.json \
  --vkey verification_key.json \
  --curve bn254 \
  --format json

Las curvas soportadas son bn254 y bls12-381. Artefactos inválidos, malformados, incompatibles o alterados retornan status distinto de cero.

Los artefactos ausentes o ilegibles son errores operativos, no pruebas invalidas. --error-format json selecciona salida JSON para la verificacion separada cuando se omite verify --format. Un verify --format text o verify --format json explicito tiene precedencia.


trusted-setup — Empaquetar una llave verificada externamente

ach trusted-setup package crea un store inmutable desde una ceremonia BN254 Groth16 ya verificada. Requiere R1CS exacto, zkeys final y pre-beacon, artefacto y digest de fase 1, cada ID y hash de contribuidor, y evidencia comprometida del beacon público.

ach trusted-setup package --help

El comando no ejecuta una ceremonia ni inventa evidencia faltante. Los operadores deben seguir el workflow versionado del repositorio core.


run — Ejecutar un programa

Corre un archivo fuente Achronyme (.ach) o binario compilado (.achb).

ach run script.ach
ach run script.achb
ach run                # usa [project].entry de achronyme.toml

Si se omite <path>, el CLI resuelve el archivo de entrada desde [project].entry en achronyme.toml.

Banderas

BanderaDescripción
--stress-gcEjecuta GC en cada alocación (para tests). Ver Modo Stress GC
--max-heap <size>Establece el tamaño máximo del heap (ej. 256M, 1G, 512K). Lanza HeapLimitExceeded si se excede
--gc-statsImprime estadísticas del GC en stderr tras la ejecución. Ver Estadísticas del GC
--circuit-statsImprime el estimado IR previo a optimización y los constraints R1CS finales por cada bloque prove {}
--prove-backend <backend>Backend para bloques prove {}: r1cs (predeterminado) o plonkish
--engine <engine>Motor: interpreter, jit o auto (predeterminado)
--max-instructions <count>Detiene la VM al agotar el presupuesto de instrucciones

Ejemplos

ach run hello.ach
ach run hello.ach --prove-backend plonkish
ach run hello.ach --max-heap 256M --gc-stats
ach run                              # desde un proyecto con achronyme.toml

circuit — Compilar un circuito ZK

Compila un archivo fuente Achronyme a constraints R1CS/Plonkish y genera un testigo.

ach circuit circuit.ach --inputs "x=42,y=7"
ach circuit --inputs "x=42,y=7"    # usa entry de achronyme.toml

Ver Opciones de Circuito para todas las banderas disponibles.


circom — Compilar un archivo .circom

Compila un archivo fuente Circom 2.x a través del frontend de Achronyme, produciendo los mismos artefactos .r1cs/.wtns que circuit y opcionalmente una prueba Groth16. Úsalo para correr templates de circomlib (o tus propios proyectos .circom) sin salir de la cadena de herramientas Achronyme.

ach circom poseidon.circom --inputs "in=42"
ach circom merkle.circom --inputs "root=0x...,leaf=42" --prove --solidity Verifier.sol
ach circom -l vendor/circomlib/circuits sha256.circom --input-file inputs.toml

Banderas

BanderaDescripción
--inputs <pares>name=value separados por coma (decimal o hex 0x)
--input-file <path>Inputs TOML con arrays. Repetible en R1CS para compilar una vez y emitir varios witnesses o proofs
-l, --lib <dir>Directorio de búsqueda para resolución de include. Repetible; los dirs CLI tienen precedencia sobre [circom].libs de achronyme.toml
--backend <r1cs|plonkish>Backend de constraints (predeterminado: r1cs)
--proveGenera una prueba criptográfica tras la compilación (requiere --inputs)
--r1cs <path>Path de salida .r1cs (compatible con snarkjs)
--wtns <path>Path de salida .wtns
--solidity <path>Emite un contrato verificador Groth16 en Solidity en este path
--plonkish-json <path>Exporta el circuito Plonkish (con testigo si se da --inputs) como JSON
--dump-irImprime el IR SSA optimizado y sale antes de generar constraints
--no-optimizeDeshabilita los pases de optimización del IR
--low-memoryAcota metadata retenida al exportar circuitos R1CS optimizados muy grandes
--circuit-statsImprime el estimado IR previo a optimización y el conteo R1CS final exacto

Resolución de librerías

El lookup de include recorre primero los directorios --lib, luego [circom].libs del manifest del proyecto, y finalmente el directorio del propio archivo. Ver Importando Templates para el modelo de resolución completo.


compile — Compilar a bytecode

Compila un archivo fuente Achronyme a un binario (.achb) que puede correrse con ach run.

ach compile script.ach --output script.achb
ach compile --output script.achb   # usa entry de achronyme.toml

Banderas

BanderaDescripción
--output <path>Path del archivo de salida (opcional — puede ponerse en [build.output].binary en achronyme.toml)

aot — Compilar un ejecutable nativo

Compila source Achronyme o una imagen .achb mediante LLVM y enlaza el runtime AOT empaquetado:

ach aot src/main.ach --output build/app
ach aot program.achb --output build/app --clang clang-21

--runtime <path> reemplaza el descubrimiento de libakron_aot_runtime.a. AOT requiere Clang 21 y LLVM 21.

El ejecutable independiente comienza sin autoridad sobre filesystem o red. Los grants y límites se seleccionan al ejecutar el binario; no se embeben desde el comando ach aot:

AKRON_ALLOW_READ=/srv/app/data \
AKRON_MAX_TASKS=32 \
AKRON_INSTRUCTION_BUDGET=1000000 \
./build/app

AKRON_ALLOW_READ y AKRON_ALLOW_WRITE aceptan listas de paths de la plataforma. AKRON_ALLOW_CONNECT y AKRON_ALLOW_LISTEN aceptan direcciones numéricas separadas por comas. El heap y GC usan AKRON_MAX_HEAP y AKRON_STRESS_GC. Cada límite del runtime estructurado también tiene un equivalente AKRON_, desde AKRON_MAX_TASKS y AKRON_MAX_RESOURCES hasta AKRON_BLOCKING_QUEUE_CAPACITY.


disassemble — Mostrar bytecode

Desensambla un archivo fuente o binario Achronyme, mostrando las instrucciones de bytecode.

ach disassemble script.ach
ach disassemble                    # usa entry de achronyme.toml

inspect — Abrir el inspector de circuitos

Compila un circuito (o un bloque prove {} con nombre) y sirve una página HTTP local que visualiza el DAG del IR, los valores del testigo y estadísticas de constraints. El UI del inspector (Astro+D3) vive en el repo achronyme-inspector y se distribuye embebido para uso offline.

ach inspect circuit.ach --inputs "x=42"
ach inspect script.ach --prove main_block --inputs "secret=7"
ach inspect --bind 127.0.0.1 --port 3000

Banderas

BanderaDescripción
--inputs <pares>Inputs de circuito independiente como name=value (separados por coma)
--input-file <path>Inputs de circuito independiente desde un archivo TOML
--prove <name>Inspecciona un bloque prove {} con nombre en lugar de un circuito top-level; el programa se corre en la VM para resolver los valores capturados
--port <u16>Puerto HTTP (predeterminado 3000)
--bind <addr>Dirección de bind (predeterminado 127.0.0.1). El inspector expone valores del testigo, fuente y estado del DAG sin autenticación — bindear a 0.0.0.0 lo hace visible a cualquier peer en la red
--no-openNo auto-abrir el navegador
--manifestImprime el manifest resuelto de efectos/capacidades y la configuración de seguridad del runtime, y luego sale
Navigation