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.
Todos os passos dessa operação de swap são realizados em apenas uma transação, disparada pelo pagador.
Este contrato parte da premissa que o participantes já aprovaram a movimentação de Real Digital e Real Tokenizado pelo contrato de swap usando o método approve do ERC20.
contract RealDigital CBDCReferência ao contrato para que seja efetuada a movimentação de Real Digital.
event SwapExecuted(uint256 indexed senderNumber, uint256 indexed receiverNumber, address sender, address receiver, uint256 amount)Evento de swap executado.
| Name | Type | Description |
|---|---|---|
| senderNumber | uint256 | O CNPJ8 do pagador |
| receiverNumber | uint256 | O CNPJ8 do recebedor |
| sender | address | A carteira do pagador |
| receiver | address | A carteira do recebedor |
| amount | uint256 | O valor que foi movimentado |
constructor(address _admin, address _authority, contract RealDigital _CBDC) publicConstrói uma instância do contrato e armazena o endereço do contrato do Real Digital.
| Name | Type | Description |
|---|---|---|
| _admin | address | Administrador do contrato, pode trocar a autoridade do contrato caso seja necessário |
| _authority | address | Autoridade do contrato, pode fazer todas as operações com o token |
| _CBDC | contract RealDigital | Endereço do contrato do Real Digital |
function executeSwap(contract RealTokenizado tokenSender, contract RealTokenizado tokenReceiver, address receiver, uint256 amount) publicTransfere o Real Tokenizado do cliente pagador para o recebedor. O cliente pagador é identificado pela carteira que estiver executando esta função.
| Name | Type | Description |
|---|---|---|
| tokenSender | contract RealTokenizado | O endereço do contrato de Real Tokenizado do participante pagador |
| tokenReceiver | contract RealTokenizado | O endereço do contrato de Real Tokenizado do participante recebedor |
| receiver | address | O endereço do cliente recebedor |
| amount | uint256 | O valor a ser movimentado |