Por que os contratos inteligentes podem ser atualizados? O que são contratos proxy, permissões de administrador e riscos?

🔄 O código na blockchain não pode ser alterado. Então, como os contratos inteligentes podem ser atualizados?
Uma prática comum não é modificar o código do contrato original, mas dividir o sistema em duas partes:
Contrato proxy: mantém o endereço de acesso dos usuários, os saldos e os dados de estado
Contrato de implementação: fornece a lógica de negócios propriamente dita

Os usuários interagem sempre com o contrato proxy; o proxy executa o código do contrato de implementação por meio de delegatecall, mas o ambiente de execução, o armazenamento e os saldos continuam pertencendo ao proxy. Para atualizar, o administrador só precisa alterar o endereço de implementação registrado pelo proxy, passando de V1 para V2.

Os padrões mais comuns incluem:
Transparent: o mecanismo de atualização e administração fica no lado do proxy
UUPS: a lógica de atualização fica no contrato de implementação; _authorizeUpgrade deve ser rigorosamente restrito
Beacon: vários proxies consultam o mesmo Beacon; atualizar o Beacon permite trocar simultaneamente a implementação desses proxies

Os mecanismos de atualização facilitam a correção de vulnerabilidades e a adição de funcionalidades, mas as permissões de atualização também podem alterar as regras de taxas, congelamento, emissão de tokens e transferências. Por isso, é essencial verificar:
Quem tem permissão para atualizar (assinatura única, multisassinatura, bloqueio temporal ou DAO)
Se o novo código de implementação é público e foi auditado
Se o layout de armazenamento é compatível (alterações na ordem ou no tipo das variáveis podem corromper dados antigos)
Se a função de inicialização só pode ser executada uma vez e se o contrato de implementação foi bloqueado
Se os eventos de atualização são divulgados e se os usuários têm tempo para analisá-los

⚠️ Ser atualizável não significa que não seja necessário confiar. Embora o endereço do proxy não mude, as regras do sistema são determinadas pelo código de implementação para o qual ele aponta no momento.

Prévia do próximo episódio|Sexta-feira · Aula de tecnologia de trading · Episódio 006
«O que é ATR? Como usar a volatilidade para definir o stop-loss em vez de uma porcentagem fixa?»