Nos últimos dias, um caso tem circulado pela comunidade — é de arrepiar. Um usuário, aparentemente, só assinou uma transferência de 500 U; mas o que saiu on-chain foi 50000 U. Só depois de investigar é que completaram o quebra-cabeça: a interface (front-end) com a qual ele interagiu foi adulterada. Na tela aparecia 500 U, mas os dados que ele assinou e enviou eram 50000 U. A chave privada estava sob o controle dele; a assinatura, ele mesmo confirmou. Só que ele não fazia ideia do que estava assinando.
Esse caso me puxou de volta para um conceito que aparece repetidamente no meu livro-branco @NewtonProtocol , mas que poucas pessoas se aprofundam: intenção de transação. O diagrama do fluxo de autorização na Seção 5.3 explica isso muito claramente — o que o usuário envia não é uma “assinatura nua de transação”, e sim uma “intenção de transação”. O mecanismo de estratégia primeiro avalia se essa intenção é compatível com as regras; se passar, ele então acrescenta a assinatura agregada e envia para execução. À primeira vista, não é apenas quebrar a assinatura em duas etapas? Mas, depois de pensar um pouco, percebi que havia uma mudança ainda mais profunda: ele força a “o que você assinou” e “o que você pretende fazer” a ficarem alinhados.
As carteiras tradicionais têm um ponto cego difícil de contornar. A assinatura da chave privada é um problema matemático; a intenção de transação é um problema semântico. A matemática pode garantir que a assinatura é verdadeira, mas não garante que aquilo que você tinha na cabeça é a mesma coisa que a transação final que de fato executou na cadeia. A solução de Newton transforma a intenção em um dado estruturado, permitindo que o mecanismo de estratégia a valide de forma independente. O operador não recebe uma sequência de hex como um livro fechado, mas sim um texto legível de “quem quer transferir quanto para quem”. Eles precisam primeiro verificar se essa descrição textual está em conformidade; só então usam a própria assinatura BLS para endossá-la. #Newt
Mas isso também puxa um novo paradoxo. E se a própria intenção for gerada no front-end adulterado? O usuário acha que está digitando 500 U, mas o front-end altera silenciosamente para 50000 U e então envia a intenção. O operador recebe então uma intenção de transferência de 50000 U que parece estar em conformidade. Eles verificam — está em conformidade; assinam — é executada. $NEWT A custódia/pledge de tokens pode garantir que a estratégia não seja adulterada e que o operador não tenha a tentação de relaxar, mas não consegue eliminar o abismo entre “aquela coisa que você tinha na cabeça” e “aquela coisa que aparece na tela e é enviada”.
Essa talvez seja a camada mais funda do ponto cego no nível de autorização. DYOR.
Esse caso me puxou de volta para um conceito que aparece repetidamente no meu livro-branco @NewtonProtocol , mas que poucas pessoas se aprofundam: intenção de transação. O diagrama do fluxo de autorização na Seção 5.3 explica isso muito claramente — o que o usuário envia não é uma “assinatura nua de transação”, e sim uma “intenção de transação”. O mecanismo de estratégia primeiro avalia se essa intenção é compatível com as regras; se passar, ele então acrescenta a assinatura agregada e envia para execução. À primeira vista, não é apenas quebrar a assinatura em duas etapas? Mas, depois de pensar um pouco, percebi que havia uma mudança ainda mais profunda: ele força a “o que você assinou” e “o que você pretende fazer” a ficarem alinhados.
As carteiras tradicionais têm um ponto cego difícil de contornar. A assinatura da chave privada é um problema matemático; a intenção de transação é um problema semântico. A matemática pode garantir que a assinatura é verdadeira, mas não garante que aquilo que você tinha na cabeça é a mesma coisa que a transação final que de fato executou na cadeia. A solução de Newton transforma a intenção em um dado estruturado, permitindo que o mecanismo de estratégia a valide de forma independente. O operador não recebe uma sequência de hex como um livro fechado, mas sim um texto legível de “quem quer transferir quanto para quem”. Eles precisam primeiro verificar se essa descrição textual está em conformidade; só então usam a própria assinatura BLS para endossá-la. #Newt
Mas isso também puxa um novo paradoxo. E se a própria intenção for gerada no front-end adulterado? O usuário acha que está digitando 500 U, mas o front-end altera silenciosamente para 50000 U e então envia a intenção. O operador recebe então uma intenção de transferência de 50000 U que parece estar em conformidade. Eles verificam — está em conformidade; assinam — é executada. $NEWT A custódia/pledge de tokens pode garantir que a estratégia não seja adulterada e que o operador não tenha a tentação de relaxar, mas não consegue eliminar o abismo entre “aquela coisa que você tinha na cabeça” e “aquela coisa que aparece na tela e é enviada”.
Essa talvez seja a camada mais funda do ponto cego no nível de autorização. DYOR.