Comandos del CLI
Referencia de comandos del CLI de Achronyme.
Banderas Globales
Estas banderas aplican a todos los subcomandos:
| Bandera | Descripció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-config | Deshabilita la carga de achronyme.toml. Todos los valores vienen de banderas CLI y defaults |
--insecure-dev-setup | Permite 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
| Argumento | Descripción |
|---|---|
<name> | Nombre del proyecto (debe coincidir con [a-zA-Z_][a-zA-Z0-9_-]*) |
Banderas
| Bandera | Descripción |
|---|---|
--template <tpl> | Plantilla del proyecto: circuit (predeterminado), vm, o prove |
Plantillas
circuit— Un circuito independiente con declaracionespublic/witnessyassert_eqvm— Un programa de propósito general conprint()prove— Un programa mixto con un bloque inlineprove {}
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
| Bandera | Descripción |
|---|---|
--stress-gc | Ejecuta 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-stats | Imprime estadísticas del GC en stderr tras la ejecución. Ver Estadísticas del GC |
--circuit-stats | Imprime 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
| Bandera | Descripció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) |
--prove | Genera 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-ir | Imprime el IR SSA optimizado y sale antes de generar constraints |
--no-optimize | Deshabilita los pases de optimización del IR |
--low-memory | Acota metadata retenida al exportar circuitos R1CS optimizados muy grandes |
--circuit-stats | Imprime 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
| Bandera | Descripció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
| Bandera | Descripció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-open | No auto-abrir el navegador |
--manifest | Imprime el manifest resuelto de efectos/capacidades y la configuración de seguridad del runtime, y luego sale |