Aprende cómo Aztec une la ejecución privada y pública en L2

Contenido de aprendizajeicon

Aprende con Aztec (AZTEC): Contratos inteligentes con privacidad en Ethereum L2

Introducción: Aztec es una capa 2 centrada en la privacidad que permite a los desarrolladores construir contratos inteligentes con estado privado y público, así como ejecución privada y pública, habilitando aplicaciones de "privacidad selectiva" que se sienten como DeFi normal, sin exponer todo en la cadena.

¿Qué es Aztec?

Aztec es una red de capa 2 enfocada en privacidad desde el diseño, mientras aún permite composibilidad pública cuando sea necesario.
La idea clave es sencilla:
  • Ejecución privada y estado privado para acciones sensibles del usuario (saldos, identidad, intención, estrategia).
  • Ejecución pública y estado público para aquello que debe ser globalmente visible (liquidez pública, lógica de contrato pública, estado compartido).
Entonces, en lugar de elegir “todos públicos” o “todos privados”, Aztec admite aplicaciones híbridas.

Cómo funciona una transacción en Aztec

Aztec divide la ejecución en dos entornos separados:
  1. Entorno de ejecución privado (PXE) — se ejecuta del lado del usuario

Las funciones privadas se ejecutan del lado del cliente dentro del PXE (pronunciado “pixie”) para maximizar la privacidad.
El PXE:
  • ejecuta funciones privadas localmente
  • tiene las claves + notas
  • genera pruebas de conocimiento cero para operaciones privadas
  • está incluido en aztec.js (TypeScript), ejecutable en Node o en el navegador
  1. VM pública (AVM) — se ejecuta en nodos de Aztec

Las funciones públicas se ejecutan en la red en la Máquina Virtual de Aztec (AVM), conceptualmente similar a la EVM (por lo que la intuición sobre eficiencia de gas se aplica más como en Solidity).

Regla de ejecución direccional (importante)

Una transacción fluye de privada a pública:
  • Las funciones privadas pueden programar funciones públicas para que se ejecuten más tarde.
  • Las funciones públicas no pueden llamar a funciones privadas.
Esa separación es intencional: la red pública no debe poder “alcanzar” la ejecución privada.

Estado privado vs público: Notas, anuladores y árboles

Aztec utiliza diferentes modelos de estado según la privacidad:

Estado privado = "notas" de estilo UTXO

El estado privado se almacena como notas (fragmentos de datos similares a UTXO). Para mantener las cosas privadas:
  • Las notas se agregan a un árbol UTXO de solo adición
  • Cuando una nota se “gasta/elimina,” se crea un nullificador
  • Los nullifiers se almacenan en un árbol de nullifiers separado
Esto permite que la red aplique el principio de “gastado una sola vez” sin revelar el contenido privado de las notas.

Estado público = almacenamiento público similar a una cuenta

El estado público se comporta más como Ethereum:
  • almacenado en un árbol de datos público
  • actualizado directamente y visible en la cadena
Conclusión para desarrolladores:
  • Trabajo de estado privado = compromisos + anuladores (demostrar corrección sin revelar datos)
  • Trabajo de estado público = actualizaciones directas (comportamiento normal de almacenamiento en cadena de bloques)

Abstracción de cuenta: Cada cuenta es un contrato inteligente

Aztec tiene abstracción de cuenta nativa a nivel de protocolo:
  • No hay EOAs (ninguna cuenta simple de “par de claves”)
  • Cada cuenta es un contrato inteligente
  • Los desarrolladores pueden definir sus propias reglas para:
    • autenticación (firmas, multisig, passkeys, lógica personalizada)
    • políticas de autorización (límites, permisos, claves de sesión)
    • nonce / protección contra reprocesamiento
    • estrategia de pago de comisiones (pagar comisiones en diferentes tokens, modelos de patrocinio, etc.)

Por qué esto ayuda contra DoS (el problema de "la validación es costosa")

El modelo de Aztec impulsa la validación compleja del lado del cliente:
  • El cliente valida y genera una prueba ZK que dice “la validación tuvo éxito”
  • El secuenciador verifica una prueba de tamaño constante
  • Entonces, la complejidad de la validación no aumenta el costo de verificación de la red
Esto habilita la lógica de cuenta de "usuario avanzado" sin ralentizar la cadena.

Claves en las cuentas de Aztec (enfocadas en la privacidad)

Cada cuenta Aztec está respaldada por 3 pares de claves:
  • Par de claves Nullifier: utilizado para calcular los nullifiers de notas
  • Par de claves de visualización entrante: utilizado para cifrar notas para el destinatario
  • Par de claves de visualización saliente: utilizado para cifrar notas para el remitente
Debido a que las cuentas son contratos inteligentes, no tienen automáticamente un par de claves de firma; la autenticación depende del diseño del contrato de la cuenta.

Testigos de autenticación: Más seguros que "aprobaciones infinitas"

Aztec reemplaza el patrón riesgoso de “aprobación infinita” con Testigos de Autenticación (AuthWit):
  • en lugar de otorgar permiso ilimitado para siempre,
  • los usuarios autorizan acciones específicas con parámetros específicos
Esto está diseñado para reducir el riesgo de aprobación persistente, al tiempo que se mantiene una buena experiencia de usuario (agrupación, automatización).

Desarrolla en Aztec con Noir

Los contratos inteligentes de Aztec se escriben en Noir, un lenguaje centrado en ZK para crear programas/contratos verificables. Una advertencia clave del documento: las funciones privadas pueden escribirse de manera perjudicialmente no optimizada, ya que la prueba tiene una intuición de rendimiento diferente a la ejecución normal, por lo que aprender "cómo escribir Noir con alto rendimiento" es importante.