Specification is Law: Safe Creation and Upgrade of Ethereum Smart
Contracts
Formal Verification, Smart Contracts, Ethereum, Solidity,
Safe Deployment e Safe Upgrade.
Contratos inteligentes são a base do paradigma "code is law". O código do
contrato inteligente descreve indiscutivelmente como seus ativos devem ser
gerenciados - uma vez criado, seu código normalmente é imutável. Contratos
inteligentes com falhas apresentam significativa evidência contra a
praticidade desse paradigma; os bugs resultaram em perdas de ativos no
valor de milhões de dólares. Para resolver esse problema, a comunidade
Ethereum propôs (i) ferramentas e processos para auditar/analisar contratos
inteligentes e (ii) padrões de design que implementam um mecanismo para
tornar o código do contrato mutável. Individualmente, (i) e (ii) abordam
apenas parcialmente os desafios levantados pelo paradigma "code is law".
Neste trabalho, combinamos elementos de (i) e (ii) para criar uma estrutura
sistemática que se afasta do "code is law" e dá origem a um novo
paradigma "specification is law". Ele permite que contratos sejam criados e
atualizados, mas somente se eles atenderem a uma especificação formal
correspondente. A estrutura é centrada em um trusted deployer: um serviço
off-chain que verifica e reforça formalmente essa noção de conformidade.
Com essa estrutura, contratos com falhas devem ser impedidos de serem
implantados e atualizações seguras podem ser realizadas para otimizar o
código do contrato, por exemplo. Prototipamos essa estrutura e investigamos
sua aplicabilidade a contratos que implementam três padrões Ethereum
amplamente usados: o ERC20 Token Standard, ERC3156 Flash Loans e ERC1155
Multi Token Standard.