- Voltar ao menu
- Voltar ao menuPreços
- Voltar ao menuPesquisar
- Voltar ao menuConsenso
- Voltar ao menu
- Voltar ao menu
- Voltar ao menu
- Voltar ao menuWebinars e Eventos
Bug do Ethereum envia contratos inteligentes de volta à prancheta
Um pequeno bug no Solidity gerou um grande debate entre os desenvolvedores do Ethereum .
Bugs são uma parte normal do software, mas no Ethereum eles podem ser especialmente perigosos.
Essa pode ser a conclusão de um bug na linguagem de programação do Ethereum encontrado esta semana que afeta um estilo específico de contrato inteligente e, devido ao modo como o Ethereum funciona (ele promete que os aplicativos serão executados exatamente como programados), a maioria dos contratos afetados T pode ser removida ou alterada.
Resumindo, os proprietários de contratos inteligentes descentralizados (aqueles que T podem ser atualizados por um proprietário) T podem fazer nada para corrigir o bug.
Dois dias depois dorelatório de bug foi emitido, os desenvolvedores lançaram uma correção na versão 0.4.4 do Solidity. Mas o bug afeta alguns dos endereços e tipos de dados nesses contratos, de modo que eles ainda T podem ser alterados com a atualização.
A boa notícia é que o bug pode não ter afetado muitos contratos inteligentes.
O criador do Solidity, Christian Reitwiessner, disse ao CoinDesk que executou uma análise "semiautomatizada" de todos os programas Ethereum listados por um popular explorador de blocos e descobriu que, de 12.000 contratos, apenas quatro eram exploráveis.
Reitwiessner disse que nenhum desses contratos tem ether, pois provavelmente foram usados para fins de teste. Mas vale a pena notar que nem todos os contratos são mostrados no Etherscan, o explorador de blocos selecionado. (Há mais de 200.000 contratos no total, então é difícil dizer o quão seguros são os fundos de contrato restantes).
No geral, parece ser uma falha menor quando comparado ao The DAO, o exemplo mais notável de um contrato inteligente que não funciona como pretendido. No entanto, gerou discussão sobre o que pode acontecer no caso de outros bugs importantes, dado que nem todos os contratos inteligentes terão um proprietário central que possa atualizá-los se algo der errado.
Um observador nas redes sociais, por exemplo, argumentouque poderia ser um "montículo na encosta de uma grande montanha" de problemas semelhantes.
Uma das ideias mais radicais para consertar esse problema é tornar os contratos do Ethereum atualizáveis no curto prazo para que os proprietários tenham alguma maneira de desativar ou alterar o código no caso de um acidente. Mas o medo é que fazer isso pode significar remover o que torna o Ethereum (ou outras plataformas descentralizadas) único.
A estudante de doutorado da Universidade Nacional de Cingapura, Loi Luu, disse que seria melhor para o Ethereum se os usuários aprendessem a implantar contratos inteligentes seguros da maneira mais difícil, de forma descentralizada.
Luu disse:
"Eu pessoalmente T acho que seja uma boa ideia. É basicamente contra tudo para o que os contratos inteligentes são projetados. Se o Ethereum é uma rede beta, deixe os contratos inteligentes falharem, deixe as pessoas Aprenda suas lições."
Mas embora os comentários de Luu sugiram que pode não ser uma boa ideia tornar todos os contratos atualizáveis, existem algumas maneiras de se preparar para possíveis bugs futuros, especialmente enquanto o Ethereum ainda é uma Tecnologia nova.
Corrigindo o problema
Programas escritos em linguagens de nível mais alto e fáceis de ler do ethereum, como Solidity ou Serpent, são compilados em código de nível de byte antes de serem adicionados ao blockchain. O problema aqui era com a Tecnologia que fazia a compilação.
Para resolver o problema, Reitweissnerrecomendado que os desenvolvedores façam duas coisas. Uma, se compilarem um novo contrato, os desenvolvedores precisam atualizar para a nova versão do Solidity para evitar o bug.
A segunda maneira de evitar o problema é o exemplo mais curioso, pois requer a atualização ou o desfinanciamento de contratos inteligentes que já estão implantados — algo que você talvez não esperasse que fosse possível com o Ethereum.
Reitwiessner elaborou esse conselho, explicando que existem dois tipos de contratos: controlados centralmente e descentralizados, onde ONE tem "privilégios especiais".
O primeiro tipo provavelmente oferece algum mecanismo de atualização ou uma maneira de remover fundos do contrato.
O segundo tipo é mais complicado. Por outro lado, como os contratos inteligentes Ethereum sem confiança T podem ser retirados ou modificados depois de implantados, T há muito que os desenvolvedores possam fazer se T usarem um contrato inteligente centralizado desde o início.
No entanto, Reitwiessner disse que os desenvolvedores podem se proteger contra problemas futuros (como aqueles com o Solidity) fazendo algumas coisas.
"Minha recomendação para tais contratos seria KEEP -los de curta duração, para que os potenciais efeitos ruins sejam pequenos, ou fazer uma análise formal adequada do bytecode do contrato. Atualmente, estamos desenvolvendo ferramentas para ajudar a fazer isso", disse ele.
Contratos atualizáveis
No entanto, existem algumas maneiras de contornar isso.
O líder de relações externas da Ethereum Foundation, Hudson Jameson, descreveu uma maneira de atualizar contratos inteligentes que poderiam ser potencialmente descentralizados, argumentando que adicionar uma maneira de atualizar o código ativo é uma necessidade.
"O sentimento geral dos nossos desenvolvedores é que, neste estágio inicial, é importante ter proteções contra falhas no seu código para desativar ou atualizar com segurança contratos que têm muito valor", disse ele.
Jameson descreveu alguns possíveis "fail-safes" de contratos inteligentes, onde os proprietários podem atualizar seus contratos mesmo depois de eles serem implantados no Ethereum, ou onde os contratos inteligentes podem detectar quando algo suspeito está acontecendo.
Ele disse que eles T precisam necessariamente ser centralizados, ou sob o controle de um proprietário. Por exemplo, você pode ter um contrato inteligente que coloca um limite em quanto de um ativo pode ser sacado por vez.
"Portanto, se um invasor tentar drenar fundos ou um ativo do contrato, isso pode desencadear uma resposta descentralizada, como bloqueá-lo e notificar outras pessoas que usam o contrato de que talvez precisem sacar seus fundos", disse ele.
Ele descreveu alguns outros métodos, incluindo detecção de hackers, interruptores de desligamento e transações com múltiplas assinaturas, nas quais mais de uma pessoa precisa assinar uma transação antes que o ether possa ser distribuído.
Esperando ansiosamente
Contratos inteligentes no Ethereum Classic (o grupo que se separou do Ethereum devido a um desacordo ideológico) também são afetados pelo bug, já que seu blockchain depende do mesmo conjunto de ferramentas.
Mas, de acordo com seu principal organizador, Arvicco, os desenvolvedores estão explorando uma maneira diferente e de longo prazo de desenvolver uma linguagem de programação mais resistente a bugs.
"Uma das maneiras possíveis é mover o desenvolvimento da linguagem de contrato inteligente do paradigma de objeto/procedimento para o funcional", disse ele.
Seja qual for a possível solução, a discussão sugere que os desenvolvedores do Ethereum T devem esperar que seus contratos inteligentes funcionem sem consequências potencialmente perigosas ainda, o que pode ou não ser totalmente aparente para aqueles que já implantaram o código na rede.
Quanto à Solidity em particular, outro bug incontrolável pode afetar outros contratos inteligentes no futuro.
Reitwiessner observou que é sempre possível que um compilador introduza um bug, e é possível que Solidity ou Serpent (outra linguagem de contrato inteligente do Ethereum) tenham outras falhas não descobertas.
No entanto, ele observou que, em mais de dois anos de desenvolvimento, esse foi o primeiro bug grave encontrado na linguagem de contrato inteligente.
Imagem de construçãovia Shutterstock
Alyssa Hertig
Repórter colaboradora de tecnologia na CoinDesk, Alyssa Hertig é uma programadora e jornalista especializada em Bitcoin e Lightning Network. Ao longo dos anos, seu trabalho também apareceu na VICE, Mic e Reason. Atualmente, ela está escrevendo um livro explorando os meandros da governança do Bitcoin . Alyssa possui alguns BTC.
