Esta documentação tem como objetivo explicar como será feita a interação com os smart contracts que estão disponíveis na Rede do Piloto do Real Digital.
Por se tratar de um piloto em ambiente de testes, esta documentação está sujeita a constantes evoluções que serão aqui refletidas.
Serão fornecidos ao participante do piloto a ABI de cada um dos contratos e seus respectivos endereços publicados na rede. Cada participante deve implementar, da forma que melhor entender, a sua interação com os contratos, fazendo uso de bibliotecas padrão Web3 como, por exemplo, o Web3JS, Web3J, ou frameworks como o Hardhat ou Truffle.
No piloto, todos os contratos serão implementados e publicados na rede pelo Banco Central do Brasil.
Os contratos que representam tokens (Real Digital, Real Tokenizado, Título Público Federal) foram desenvolvidos usando como base o padrão ERC20, com a adição de funções específicas de controle de acesso. Todos os tokens suportam 2 casas decimais.
CBDC - Real Digital
O CBDC (Central Bank Digital Currency) está definido no contrato chamado RealDigital.
- A carteira do Banco Central do Brasil é a gestora do token.
- O símbolo do token é
BRL
. - Somente carteiras autorizadas podem receber Real Digital.
- Cada participante deve mandar ao Banco Central do Brasil o endereço da sua carteira principal para o cadastro. Esta carteira será a carteira default do participante. Após o cadastro inicial, o próprio participante poderá habilitar outras carteiras a receber Real Digital, bem como alterar sua carteira default.
A carteira default será usada principalmente nos contratos de swap, detalhados abaixo.
DVt e MEt - Real Tokenizado
O Real Tokenizado está definido no contrato chamado RealTokenizado.
- A carteira default do participante será a gestora do token, porém a criação do token na rede será feita pelo Banco Central do Brasil.
- O símbolo do token a definir.
- Assim como o Real Digital, somente carteiras autorizadas podem receber Real Tokenizado.
- O participante deve utilizar dos métodos
enableAccount
edisableAccount
para gerenciar as carteiras permitidas.
O contrato chamado STR representa a forma como os participantes solicitarão Real Digital ao Banco Central do Brasil. Esse contrato permite que qualquer participante solicite o mint de Real Digital, desde que sua carteira esteja cadastrada, usando o método requestToMint
.
O contrato RealDigitalDefaulAccount permite ao participante trocar a sua carteira default, através do método updateDefaultWallet
. Ainda, através do mapping defaultAccount
, é possível recuperar a carteira default dos outros participantes, bastando passar como parâmetro o CNPJ8 da mesma. Essa operação será necessária para as transações de swap.
O contrato RealDigitalEnableAccount permite ao participante habilitar outras carteiras de sua posse para receber Real Digital, através do método enableAccount
.
O contrato KeyDictionary simulará um DICT para o Real Digital. Durante o piloto os dados de clientes, fictícios, devem ser inseridos na rede para recuperação durante as operações de swap.
O método a ser invocado para a inserção de dados é o addAccount
, que tem os seguintes parâmetros:
- Chave, identificador unico gerado pelo participante, deve ser salvo no formato hash keccak256
- CPF do cliente fictício
- Código do participante
- Conta do cliente fictício
- Agência do cliente fictício
- Carteira do cliente fictício
Os contratos de swap permitem a troca de Real Tokenizado entre os participantes, usando Real Digital como reserva.
No momento há duas implementações disponíveis: uma que executa o swap em apenas uma transação e outro que depende da aprovação do recebedor para a troca seja concluída, exigindo assim duas transações na rede.
Para mais detalhes leia a documentação dos contratos SwapOneStep e SwapTwoSteps
O objetivo do piloto é testar as duas formas de swap, além de uma terceira que ainda será implementada e que envolve troca de informações off-chain.