Após publicar inicialmente um série de documentos sobre o projeto piloto do Real Digital no portal GitHub nesta semana, o Banco Central do Brasil também permitiu o início de uma auditoria pública sobre o código do sistema.
Essa auditoria entrou no radar de uma série de desenvolvedores, que passaram a analisar o código. Resultado: a descoberta da existência de uma série de funções presentes dentro do contrato inteligente dessa versão de testes.
Essas funções permitem que os controladores possam fazer diversas alterações nas informações dos operadores do sistema Real Digital.
Além de operações como a “cunhagem” de tokens do Real Digital e habilitação/desabilitação de contas-alvo, explicadas na documentação, um desenvolvedor encontrou outras funções aplicando técnicas de engenharia reversa no material disponibilizado pelo Banco Central.
Esses recursos podem ser executados por qualquer entidade receba autorização do órgão controlador do novo sistema, ou seja, do BC.
Entre as mudanças que as autoridades poderiam potencialmente fazer usando essas funções estão, por exemplo:
- Congelar/Descongelar contas específicas;
- Aumentar/Diminuir saldos financeiros de contas congeladas;
- Mover moedas do Real Digital (ou outros tokens da rede) de endereços escolhidos, para outro endereço;
- Criar/Queimar moedas em/de determinados endereços.
Pedro Magalhães é o responsável pela descoberta. Ele é desenvolvedor full-stack especialista em blockchain, DeFi e também na linguagem de programação Solidity, a mesma utilizada pelo Banco Central no Real Digital.
O Portal do Bitcoin também checou e confirmou junto a outros desenvolvedores a existência dessas funções no código do Real Digital.
Consultado pela reporagem, o próprio Bacen também admitiu a possibilidade da execução as funções descobertas por Magalhães. “O BC e instituições já dispõem de funcionalidades similares no ambiente atual de sistemas como SPB e Pix, sendo seu uso regido por lei e regulamento”, informou a autoridade monetária do país.
Como foi a descoberta
Na documentação compartilhada no início da semana, a autoridade responsável afirma que o projeto piloto do Real Digital tem uso destinado apenas para ambiente de testes e não deve ser reproduzido para operações reais.
Um dos objetivos da publicação do piloto, conforme escrito no chamado “Kit de Onboarding” do projeto, é receber feedback — deixando toda a documentação sujeita à evolução ou alterações. E foi exatamente o que o desenvolvedor Pedro Magalhães fez: forneceu feedback.
“Recentemente, mergulhei no mundo das ABIs (interfaces) do Real Digital, uma iniciativa do BC, com a intenção de explorar possíveis vulnerabilidades para fins puramente didáticos”, diz Magalhães.
O desenvolvedor especialista anunciou sua descoberta no LinkedIn na terça-feira (4): “Descobri o Source Code Solidity do CBDC do Bacen através do ABI do Real Digital usando engenharia reversa”. Ele se refere ao Código Fonte na linguagem de programação, Solidity.
Em conversa com o Portal do Bitcoin, Pedro Magalhães explicou que um Application Binary Interface (ABI) é “basicamente uma maneira de interagir com os contratos inteligentes no Ethereum. É como se fosse um manual que diz como o contrato pode ser lido e escrito.”
Já sobre engenharia reversa, o desenvolvedor explica que é uma técnica para entender o funcionamento de um sistema apenas observando seu comportamento.
“Analisei o ABI para entender as funcionalidades do Real Digital e descobri as várias funções que eles implementaram.”
Com base nesta análise, Pedro conta ter sido possível recriar o contrato inteligente em Solidity (a linguagem de computação) usado no projeto piloto. Esse contrato possibilita a execução das seguintes funções:
- disableAccount: Inabilita uma conta autorizada a realizar transferências de tokens.
- enableAccount: Habilita uma conta previamente desabilitada para transferências de tokens.
- increaseFrozenBalance: Aumenta o saldo congelado de um endereço de carteira.
- decreaseFrozenBalance: Diminui o saldo congelado de um endereço de carteira.
- transfer: Sobrepõe a função de transferência do ERC20 para incluir verificações de status de conta e saldos congelados.
- transferFrom: Sobrepõe a função transferFrom do ERC20 para incluir verificações de status de conta e saldos congelados.
- mint: Cria novos tokens do Real Digital para um endereço especificado.
- burn: Queima (destrói) uma quantidade especificada de tokens do Real Digital.
- pause: Pausa as transferências de tokens.
- unpause: Retoma as transferências de tokens.
- frozenBalanceOf: Recupera o saldo congelado de um endereço de carteira.
- authorizedAccount: Verifica se uma conta está autorizada para transferências de token.
- move: Transfere tokens de uma carteira para outra.
- moveAndBurn: Transfere e queima tokens de uma carteira.
- burnFrom: Queima tokens de uma conta especificada.
Estas funções podem ser executadas por qualquer entidade que receba autorização pelo Banco Central mediante outra função (também presente no código-fonte), chamada Access Control.
Ainda segundo o especialista, o Banco Central tem vários contratos inteligentes. “O que a maioria das pessoas vão usar no dia a dia é o contrato inteligente baseado em ERC20 para transferir valores.” ERC20 é o padrão de tokens da rede do Ethereum (ETH), muito comum no mercado de criptomoedas e no ecossistema de finanças descentralizadas (DeFi).
“Essas funções exclusivas também serão usadas na rede principal, que é o sistema que todos usarão no dia a dia que foi criada usando tecnologia Hyperledger Besu para construir essa rede”, conclui Pedro.
Tecnologia usada no Real Digital
A Hyperledger é um ambiente digital criada pela Linus Foundation em 2015. Nos últimos anos sua versão chamada Fabric vem sendo muito utilizada no mercado cripto, embora não seja vista como atrativa para a criação de tokens.
Trata-se de uma Distributed Ledger Technology — mas que não é chamada de blockchain por alguns detalhes. Por exemplo, nessa tecnologia nem sempre existe um processo de mineração sustentando a rede, além de outros mecanismos presentes de redes públicas, como Bitcoin e Ethereum.
Para o projeto definitivo, Banco Central já anunciou que pretende criar uma própria rede, em cima da Hyperledger Besu, que será usada como infraestrutura básica. Não será uma plataforma de Camada Dois, mas sim uma rede de Camada Um do próprio BC.
- Não perca dinheiro. No Mercado Bitcoin, você pode fazer staking de Ethereum de maneira segura e simples. Abra sua conta agora e comece a ganhar recompensas sobre seus investimentos em criptomoedas.