Skip to content

Latest commit

 

History

History
179 lines (123 loc) · 4.6 KB

SwapTwoSteps.md

File metadata and controls

179 lines (123 loc) · 4.6 KB

Solidity API

SwapTwoSteps

Este contrato implementa a troca de Real Tokenizado entre dois participantes distintos.

A troca destrói Real Tokenizado do cliente pagador, transfere Real Digital do participante pagador para o participante recebedor e emite Real Tokenizado para o cliente recebedor.

A operação de swap implementada neste contrato é realizada em duas transações: uma de proposta e outra de aceite.

CBDC

contract RealDigital CBDC

Referência ao contrato para que seja efetuada a movimentação de Real Digital.

SwapStatus

enum SwapStatus {
  PENDING,          // Operação de _swap_ registrada, pendente de cancelamento ou execução.
  EXECUTED,         // Operação de _swap_ executada.
  CANCELLED         // Operação de _swap_ cancelada.
}

Enumeração com as possíveis situações de uma operação de swap.

SwapProposal

struct SwapProposal {
  contract RealTokenizado tokenSender;      // O endereço do contrato de Real Tokenizado do participante pagador
  contract RealTokenizado tokenReceiver;    // O endereço do contrato de Real Tokenizado do participante recebedor
  address sender;                           // O endereço da wallet do cliente pagador
  address receiver;                         // O endereço da wallet do cliente recebedor
  uint256 amount;                           // Quantidade de Reais a ser movimentada.
  enum SwapTwoSteps.SwapStatus status;      // Situação atual da operação.
  uint256 timestamp;
}

swapProposals

mapping(uint256 => struct SwapTwoSteps.SwapProposal) swapProposals

Mapping de propostas de swap.

SwapStarted

event SwapStarted(uint256 proposalId, uint256 senderNumber, uint256 receiverNumber, address sender, address receiver, uint256 amount)

Evento de início do swap.

Parameters

Name Type Description
proposalId uint256 Id da proposta
senderNumber uint256 CNPJ8 do pagador
receiverNumber uint256 CNPJ8 do recebedor
sender address Endereço do pagador
receiver address Endereço do recebedor
amount uint256 Valor

SwapExecuted

event SwapExecuted(uint256 proposalId, uint256 senderNumber, uint256 receiverNumber, address sender, address receiver, uint256 amount)

Evento de swap executado.

Parameters

Name Type Description
proposalId uint256 Id da proposta
senderNumber uint256 CNPJ8 do pagador
receiverNumber uint256 CNPJ8 do recebedor
sender address Endereço do pagador
receiver address Endereço do recebedor
amount uint256 Valor

SwapCancelled

event SwapCancelled(uint256 proposalId, string reason)

Evento de swap cancelado.

Parameters

Name Type Description
proposalId uint256 Id da proposta
reason string Razão do cancelamento

ExpiredProposal

event ExpiredProposal(uint256 proposalId)

Evento de proposta expirada. A proposta expira em 1 minuto.

Parameters

Name Type Description
proposalId uint256 Id da proposta

constructor

constructor(contract RealDigital _CBDC) public

Construtor

Parameters

Name Type Description
_CBDC contract RealDigital Endereço do contrato do Real Digital

startSwap

function startSwap(contract RealTokenizado tokenSender, contract RealTokenizado tokenReceiver, address receiver, uint256 amount) public

Cria a proposta de swap.

Parameters

Name Type Description
tokenSender contract RealTokenizado Endereço do contrato de Real Tokenizado do pagador
tokenReceiver contract RealTokenizado Endereço do contrato de Real Tokenizado do recebedor
receiver address Endereço do cliente recebedor
amount uint256 Valor

executeSwap

function executeSwap(uint256 proposalId) public

Aceita a proposta de swap, executável apenas pelo recebedor.

Parameters

Name Type Description
proposalId uint256 Id da proposta

cancelSwap

function cancelSwap(uint256 proposalId, string reason) public

Cancela a proposta. Pode ser executada tanto pelo pagador quanto pelo recebedor.

Parameters

Name Type Description
proposalId uint256 Id da proposta
reason string Razão do cancelamento