Aprenda como o Aztec une execução privada e pública na L2

Conteúdo de aprendizadoicon

Aprenda com Aztec (AZTEC): Contratos Inteligentes com Privacidade em Ethereum L2

Introdução: Aztec é uma Layer 2 voltada para privacidade que permite aos desenvolvedores criar contratos inteligentes com estado privado e público, bem como execução privada e pública, habilitando aplicativos de "privacidade seletiva" que funcionam como DeFi normal—sem expor tudo na cadeia.

O que é Aztec?

Aztec é uma rede de Layer 2 focada em privacidade por design, enquanto ainda suporta composabilidade pública quando necessário.
A ideia principal é simples:
  • Execução privada e estado privado para ações sensíveis do usuário (saldos, identidade, intenção, estratégia).
  • Execução pública e estado público para coisas que devem ser globalmente visíveis (liquidez pública, lógica de contrato pública, estado compartilhado).
Então, em vez de escolher “todos públicos” ou “todos privados”, o Aztec suporta aplicativos híbridos.

Como uma transação funciona no Aztec

Aztec divide a execução em dois ambientes separados:
  1. Ambiente de Execução Privado (PXE) — é executado do lado do usuário

Funções privadas são executadas no lado do cliente dentro do PXE (pronunciado “pixie”) para maximizar a privacidade.
O PXE:
  • executa funções privadas localmente
  • possui chaves + notas
  • gera provas de conhecimento zero para operações privadas
  • está incluído no aztec.js (TypeScript), executável no Node ou no navegador
  1. VM Pública (AVM) — executa em nodes Aztec

As funções públicas são executadas na rede na Máquina Virtual Aztec (AVM), conceitualmente semelhante à EVM (portanto, a intuição de eficiência de "gas" se aplica mais como Solidity).

Regra de execução direcional (importante)

Uma transação flui de privada → pública:
  • Funções privadas podem enfileirar funções públicas para serem executadas posteriormente.
  • Funções públicas não podem chamar funções privadas.
Essa separação é intencional: a rede pública não deve ser capaz de “alcancar” a execução privada.

Estado Privado vs Público: Notas, Nullifiers e Árvores

Aztec usa modelos de estado diferentes dependendo da privacidade:

Estado privado = “notas” no estilo UTXO

O estado privado é armazenado como notas (fragmentos de dados semelhantes a UTXO). Para manter as coisas privadas:
  • As notas são anexadas a uma árvore UTXO de anexação exclusiva
  • Quando uma nota é "gasta/excluída", um nullificador é criado
  • Os nullifiers são armazenados em uma árvore de nullifiers separada
Isso permite que a rede force o princípio de “gasto apenas uma vez” sem revelar o conteúdo privado das notas.

Estado público = armazenamento público semelhante a uma conta

O estado público se comporta mais como Ethereum:
  • armazenado em uma árvore de dados pública
  • atualizado diretamente e visível na cadeia
Pontos-chave para desenvolvedores:
  • Trabalho de estado privado = compromissos + nullifiers (provar a correção sem revelar dados)
  • Trabalho de estado público = atualizações diretas (comportamento normal de armazenamento na blockchain)

Abstração de Conta: Cada Conta é um Contrato Inteligente

Aztec possui abstração de conta nativa no nível do protocolo:
  • Não há EOAs (nenhuma “conta de par de chaves” simples)
  • Cada conta é um contrato inteligente
  • Os desenvolvedores podem definir suas próprias regras para:
    • autenticação (assinaturas, multisig, passkeys, lógica personalizada)
    • políticas de autorização (limites, permissões, chaves de sessão)
    • nonce / proteção contra replay
    • estratégia de pagamento de taxas (pagar taxas em diferentes tokens, modelos de patrocínio, etc.)

Por que isso ajuda contra DoS (o problema da "validação é cara")

O modelo da Aztec impõe validação complexa no lado do cliente:
  • O cliente valida e gera uma prova ZK de que “a validação foi bem-sucedida”
  • O sequenciador verifica uma prova de tamanho constante
  • Então a complexidade da validação não aumenta o custo de verificação da rede
Isso permite a lógica de conta de "usuário avançado" sem tornar a cadeia lenta.

Chaves em Contas Aztec (Focadas em Privacidade)

Cada conta Aztec é respaldada por 3 pares de chaves:
  • Par de chaves Nullifier: usado para calcular os nullifiers de notas
  • Par de chave de visualização entrante: usado para criptografar notas para o destinatário
  • Par de chave de visualização de saída: usado para criptografar notas para o remetente
Como as contas são contratos inteligentes, elas não possuem automaticamente um par de chaves de assinatura — a autenticação fica a cargo do design do contrato da conta.

Testemunhas de Autenticação: Mais Seguras do que “Aprovações Infinitas”

Aztec substitui o padrão arriscado “aprovação infinita” por Testemunhas de Autenticação (AuthWit):
  • em vez de conceder permissão ilimitada para sempre,
  • os usuários autorizam ações específicas com parâmetros específicos
Isso foi projetado para reduzir o risco de aprovação persistente, mantendo uma boa experiência do usuário (agrupamento, automação).

Desenvolva no Aztec com Noir

Os contratos inteligentes do Aztec são escritos em Noir, uma linguagem focada em ZK para escrever programas/contratos comprováveis. Uma advertência importante da documentação: funções privadas podem ser escritas de maneiras prejudicialmente não otimizadas, pois a prova tem intuição de desempenho diferente da execução normal—por isso, aprender “como escrever Noir performático” é importante.