Uma investigação da Ethereum Foundation, publicada a 5 de outubro, analisa asserções de transação que poderiam rejeitar execuções cujo resultado final viole uma regra especificada. A 9 de outubro, a EIP-7906 continuava a ser uma proposta e dependia das transações em frames da EIP-8141. Está indicada como candidata à atualização Hegotá, enquanto a EIP-8141 está prevista para inclusão.
Porque é importante
A EIP-7906 propõe frames POST_TX de apenas leitura que analisam o estado resultante de uma transação. As suas instruções podem enumerar alterações líquidas e eventos especificados, obter valores por chave e copiar dados de eventos. O âmbito definido inclui saldos de ETH, alterações de armazenamento, contratos recém-implementados e hashes de código. As verificações de saldo de tokens teriam de interpretar o armazenamento dos contratos e aplicar um limite escolhido.
A proposta poderia permitir políticas que vão além de uma única troca, incluindo preservar controlos de conta ou restringir aprovações ao longo de uma rota. Mas não exige que todas as transações incluam uma asserção. As contas têm de configurar a validação para exigir a verificação específica sem possibilidade de contorno, e os protocolos têm de impor eles próprios a asserção necessária. Nos fluxos de liquidação por solver, a ordem assinada ou o protocolo tem de vincular o solver à política.
Impacto no mercado
A Uniswap v3 já rejeita trocas que não respeitem um recebimento mínimo ou um valor máximo de entrada, mas esses limites são definidos nos parâmetros da chamada. O guia alerta que definir a saída mínima como zero é arriscado em produção. Mesmo um limite aplicado corretamente pode permitir uma troca desfavorável se o construtor escolher um valor demasiado permissivo ou o calcular com base numa cotação inadequada.
A EIP-7906 também tem limitações: avalia as alterações líquidas, pelo que escritas intermédias posteriormente revertidas poderão não surgir. Uma asserção falhada reverteria o corpo da execução, mas a transação continuaria no bloco, o gas seria cobrado e as alterações no prefixo de validação permaneceriam confirmadas. As orientações de segurança da proposta recomendam alvos de asserção imutáveis e referências que a execução não possa manipular, como valores fixados no momento da assinatura ou obtidos do estado inicial da transação. O Ethereum poderia aplicar uma verificação com precisão e, ainda assim, impor um acordo desfavorável se a política ou a referência forem mal escolhidas.
Perguntas frequentes
-
O que acrescenta a EIP-7906 proposta pelo Ethereum às verificações de transações?
Propõe frames POST_TX de apenas leitura que analisam o estado resultante de uma transação e rejeitam a execução quando uma regra de asserção é violada.
-
Porque pode um limite de troca aplicado permitir, ainda assim, uma operação desfavorável?
O construtor da transação pode escolher um limite demasiado permissivo ou calculá-lo com base numa cotação inadequada. Aplicar o limite escolhido não garante que este represente um bom negócio.
-
Quem tem de garantir que uma transação inclui a asserção necessária?
As contas têm de configurar a validação para exigir o frame POST_TX específico sem possibilidade de contorno. Os protocolos também têm de impor a asserção necessária nas funções protegidas.
-
O que acontece quando uma asserção POST_TX falha?
O corpo da execução é revertido, mas a transação permanece no bloco e o gas é cobrado. As alterações feitas no prefixo de validação permanecem confirmadas.
-
Como propõe a EIP-7906 proteger as verificações contra manipulação?
As orientações recomendam alvos de asserção imutáveis e não atualizáveis, bem como valores de referência fixados no momento da assinatura ou obtidos do estado inicial da transação.