Skip to content

Latest commit

 

History

History
72 lines (43 loc) · 4.93 KB

smartcontracts.md

File metadata and controls

72 lines (43 loc) · 4.93 KB

Interação com os smart contracts

Objetivo

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.

Smart Contracts

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.

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 e disableAccount 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

Swap e comunicação Off-Chain

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.

<<< Voltar