O verdadeiro modelo de segurança de um protocolo muitas vezes não está na lógica dos seus contratos. Está na resposta a uma pergunta mais simples: quem pode mudar a lógica, e com que rapidez?
Descubra se ele é atualizável
A maioria das implantações relevantes usa um contrato proxy: o endereço com o qual os usuários interagem guarda o estado e delega o comportamento a um endereço de implementação separado, que pode ser trocado. Os exploradores de blocos geralmente detectam isso e mostram o contrato de implementação ao lado do proxy.
Se um contrato é atualizável, “código imutável” não é uma propriedade que ele tenha. Isso não é automaticamente ruim — é assim que os bugs são corrigidos depois da implantação —, mas desloca aquilo em que você confia, do código para as pessoas que o controlam.
Identifique o administrador e que tipo de coisa ele é
O proxy tem um endereço administrador com o poder de atualizar. O que esse endereço é importa mais do que o seu valor:
- Uma única conta externa. Uma chave, uma pessoa, nenhuma segunda aprovação. O arranjo mais fraco, e legível como tal.
- Uma multiassinatura. Melhor — mas os dois números que importam são o limiar e a quantidade de signatários, e ambos estão on-chain. Três de cinco só é de fato três de cinco se as cinco chaves estiverem com pessoas diferentes em dispositivos diferentes, algo que a blockchain não pode dizer.
- Um contrato de governança atrás de um bloqueio temporal (timelock). O mais forte dos três, porque converte uma mudança instantânea em uma mudança anunciada — desde que alguém esteja acompanhando a fila.
Verifique o atraso e se ele pode ser contornado
Quando existe um bloqueio temporal, seu atraso é legível no contrato, assim como a fila de ações pendentes. Vale estabelecer duas coisas: qual é de fato a duração do atraso e se existe algum caminho para agir sem ele — um papel de emergência, um guardião ou uma função de pausa mantida à parte.
Um disjuntor (circuit breaker) ou uma função de pausa costuma ser algo bom, mas também é um poder. Quem pode acioná-lo e o que retira a pausa fazem parte da mesma cadeia de controle.
Por que esta é a pergunta que se repete
Os registros do rastreador dependem de controle muito mais frequentemente do que de criptografia. Uma governança que podia executar sem atraso é o formato do empréstimo relâmpago de governança da Beanstalk. Um acesso privilegiado detido legitimamente é o formato do comprometimento de chave por pessoa interna na Munchables — veja também ameaça interna.
O que você pode estabelecer e o que não pode
On-chain você pode estabelecer: se o contrato é atualizável, o endereço de implementação, o endereço do administrador, se o administrador é uma multiassinatura e com que limiar, se existe um bloqueio temporal e qual o seu atraso, e o que está atualmente na fila.
Você não pode estabelecer só pela blockchain se os signatários são pessoas genuinamente independentes, onde as chaves estão guardadas ou o que acontece se uma se perder. Essas são perguntas de divulgação, e um projeto que as responde por escrito está dizendo algo a você — assim como um projeto que não as responde também está.
Não é aconselhamento. A Conisec publica apenas para fins informativos. Nada neste artigo é orientação financeira, jurídica, tributária ou de segurança. Confira nas fontes primárias linkadas acima antes de agir com base em qualquer coisa.