Testemunhe a história hoje. O conhecido protocolo DEX CurveFinance foi atacado e a liquidez de vários pools foi drenada. A investigação preliminar revelou que a culpa foi do compilador de contrato inteligente Vyper. Foi tão ultrajante que as pessoas não puderam deixar de chamá-lo de um cara legal! Estatísticas preliminares mostram que a perda ultrapassou 50 milhões de dólares americanos, e o preço instantâneo do token da plataforma CRV já esteve próximo de zero!
Para explicar brevemente aos amigos que não são técnicos, quando usamos blockchain, muitas vezes lidamos com códigos executados no blockchain. Esses códigos são chamados de "contratos inteligentes".
Para uma rede pública como a Ethereum que se concentra em contratos inteligentes, ela possui um conjunto de códigos padrão para contratos inteligentes para quem desenvolve aplicações nela (também chamado de dApp, App descentralizado) para escrever e executar aplicações. Por exemplo, Uniswap e Curve são todos aplicativos dApp executados no Ethereum.
Como o computador precisa ser fácil de operar e economizar espaço de armazenamento, o código padrão armazenado na cadeia é um número binário muito compacto próximo à linguagem de máquina, que não é conveniente para humanos lerem e escreverem diretamente.
Para tornar a abertura de aplicativos mais conveniente, muitas "linguagens de alto nível" que são convenientes para os humanos lerem e escreverem foram inventadas para escrever programas. Costumava haver três tipos no Ethereum. A mesma sintaxe é semelhante à linguagem LISP e não se tornou popular. A outra é semelhante à linguagem Python porque foi promovida por Vitalik (o fundador do Ethereum), chamada Vyper. a sintaxe é semelhante à linguagem Javascript, chamada Solidity.
Depois que os programadores escrevem programas de contratos inteligentes nessas linguagens de alto nível, eles precisam usar uma ferramenta chamada "compilador" para "traduzi-los" em uma "linguagem de máquina" que possa ser executada no blockchain Ethereum, ou seja, código padrão.
Obviamente, diferentes linguagens de alto nível possuem compiladores diferentes. Isso é fácil de entender. A tradução para o japonês e a tradução para o inglês são definitivamente diferentes.
Desta vez, o Curve foi atacado por causa de uma falha em uma versão específica do compilador Vyper usado por alguns pools de Curve (suspeito, ainda sob investigação). É como dizer "Eu quero beber" em japonês e o tradutor está traduzindo para Chinês. Quando foi traduzido para "Quero comer caranguejos". Isso é ultrajante
Felizmente, a popularidade do Vyper não é alta. Atualmente, o Solidity é o mais utilizado no Ethereum e em cadeias compatíveis. O tradutor inglês é mais claro e não há erros de tradução, graças a Deus
Nos primeiros dias do Uniswap, o líder do DEX, o fundador Hayden usou a linguagem Vyper para escrever código. Felizmente, Hayden mais tarde contratou um CTO profissional e mudou o código para Solidity. Portanto, desta vez em torno do problema do compilador Vyper, o Uniswap está são e salvo. A Curve Finance, que usa extensivamente a linguagem Vyper, sofreu.
O problema causado por este defeito é o clássico “problema de reentrada”. Pensando naquele ano, em 2015, o incidente DAO levou diretamente ao hard fork do Ethereum, dividindo-se em ETH e ETC. Este problema de reentrada é realmente uma maldição da história!
Mas o problema de reentrada no DAO ocorreu no nível de linguagem de alto nível. Ou seja, você falou inglês incorretamente. Originalmente, você queria beber, mas em vez disso disse que queria comer caranguejos. a tradução.
Quanto a esse incidente do Curve, o mais assustador é que você acertou, mas o tradutor errou e você não conseguiu entender (a empresa de auditoria não revisará o código binário compilado), então foi introduzido sem ninguém percebendo. Isso também soou como um alerta para toda a indústria DeFi de hoje e até mesmo para toda a indústria de blockchain!
Hoje, todos, desde escritores de código até revisores de código e auditores terceirizados, não irão olhar para o código binário compilado. Todos presumem que não haverá problemas com o compilador. Contanto que vejam que a linguagem de alto nível está escrita corretamente, eles acham que não haverá problemas.
Por que Satoshi Nakamoto não adicionou funções de contrato inteligente muito poderosas ao script BTC? Isto é para evitar erros imperdoáveis causados pelo aumento da complexidade. Algumas pessoas criticam o BTC por ser conservador, mas diante de ativos que valem milhões, dezenas ou até bilhões de dólares, cautela e conservadorismo nunca são demais. A maioria das pessoas ainda são pessoas comuns. Uma perda de dezenas ou milhões de dólares será um golpe fatal para quem cair sobre ela.
Isso também destaca o aviso da Lei de Murphy: qualquer link que possa dar errado certamente dará errado, desde que passe tempo suficiente. Desta vez foi Vyper, o que foi uma bênção. E quanto ao futuro? E se houver uma vulnerabilidade fatal no Solidity. Todo o DeFi, com milhares de protocolos, dezenas de bilhões de ativos e edifícios brilhantes foram construídos em areia movediça, o fundo do caldeirão foi drenado. e todos eles desabaram.
Por que é difícil viajar pelos ciclos? Antes de perseguir este ou aquele objetivo dos sonhos, você deve primeiro examinar se pode “viver até aquele dia”. Muitas vezes, sobreviver é o vencedor e o que sobra é rei.