Fluxo de trabalho de aplicação Stablecoin

Uma stablecoin é um token fungível que representa a moeda digital com aplicação de conformidade integrada.

O cenário de stablecoin impõe conhecer as políticas de seu cliente (KYC) e combate à lavagem de dinheiro (AML), restrições de transferência e aprovações de várias partes. O sistema suporta transferências diretas e transferências baseadas em retenção, que exigem aprovação antes da ocorrência da transferência.

  • As funções de mineiro, queimador e notário são necessárias.
  • A política de conta impõe indicadores de KYC/AML e restrição.
  • A política de aprovação define limites e requisitos de aprovador sequencial para transferências baseadas em retenção.
  • As restrições de transferência são opcionais e podem ser configuradas a qualquer momento.
  • A correspondência da política de aprovação é usada para determinar se as aprovações são necessárias quando a API holdTokens é usada.
  • As APIs de histórico de transações suportam auditoria e monitoramento.
A tabela a seguir resume os atores neste cenário.
Ator Atribuição Descrição
Administrator Administração de token Inicializa o sistema, atribui funções, cria políticas de conta e aprovação.
Minter Minter Solicita cunhagem de tokens.
Aprovador da Moeda Notário Aprova ou rejeita solicitações de hortelã.
Burndown - Aprovador Notário Aprova ou rejeita solicitações de gravação.
Remetente nenhuma Inicia transferências diretas ou baseadas em retenção.
Aprovador nenhuma Aprova transações em uma sequência definida. Os aprovadores são titulares regulares da conta que especificaram como aprovadores na política de aprovação (não por uma função atribuída).
Notário Notário Conclui ou libera transferências baseadas em retenção após a aprovação.
Receptor nenhuma Recebe tokens transferidos.
Auditor Auditor de Token Consulta o histórico de transações para fins de conformidade e geração de relatórios.
O administrador conclui as etapas a seguir para inicializar o sistema.
  1. Inicialize uma stablecoin usando a API initializeStablecoinToken.
  2. Registre organizações usando a API registerOrg.
  3. Crie contas usando as APIs createAccount e associateTokenToAccount.
  4. Atribua as atribuições minter, burner e notary às contas apropriadas usando a API addRole.
  5. Crie políticas de conta usando a API createStablecoinAccountPolicyCheck.
  6. Crie políticas de aprovação usando a API createApprovalPolicyCheck.
Depois que o sistema é inicializado, um fluxo de processo típico segue estas etapas básicas.
  1. Mint stablecoins.
    1. O mineiro usa a API requestMint para enviar uma solicitação para mint stablecoins.
    2. O aprovador de hortelã usa a API approveMint para revisar e aprovar a solicitação para hortelã stablecoins. Como alternativa, o aprovador da hortelã pode usar a API rejectMint para negar a solicitação.
  2. Transferir stablecoins sem aprovações.
    • O remetente usa a API transferTokens para enviar stablecoins a um usuário.
  3. Transferir stablecoins com aprovações.
    1. O remetente usa a API holdTokens para solicitar a transferência dos tokens.
    2. Se necessário, os aprovadores usam a API approveTransaction para aprovar a transferência, conforme especificado pela política de aprovação.
    3. O notário usa a API executeHoldTokens para aprovar a solicitação de transferência. Como alternativa, o notário pode usar a API releaseHold para rejeitar a transferência.
  4. Verifique o saldo do token.
    • Os usuários podem usar a API getAccountBalance para obter a quantidade de stablecoins que possuem.
  5. Queimar tokens.
    1. Os usuários podem usar a API requestBurn para enviar uma solicitação para gravar suas stablecoins.
    2. O aprovador de gravação usa a API approveBurn para analisar e aprovar a solicitação. Como alternativa, o aprovador de gravação pode usar a API rejectBurn para negar a solicitação.
  6. Audite o histórico da transação.
    • Auditores e usuários podem usar as APIs getAccountTransactionHistory e getAccountTransactionHistoryWithFilters para obter o histórico de transações para auditoria e geração de relatórios.

Validação da apólice da conta

As políticas de conta são obrigatórias para todas as contas que transferem ou mantêm stablecoins. As políticas de conta são validadas nas seguintes APIs: transferTokens, holdTokens, approveTransaction, executeHoldTokens.

Cada política de conta inclui três parâmetros: KYC, AML e restrictionFlag. Estes são validados para remetente e destinatário antes de quaisquer tokens serem transferidos.

KYC (Conheça seus Clientes)
A transferência só é permitida quando os valores de KYC são true para as contas do remetente e do recebedor.
AML (Antilavagem de Dinheiro)
A transferência só é permitida quando os valores de AML são true para as contas do remetente e do recebedor.
restrictionFlag
Se o indicador de restrição estiver definido como false para a conta do remetente e do recebedor, a validação será aprovada. Se o flag de restrição for definido como true para a conta do remetente ou do recebedor, para as APIs holdTokens, approveTransaction e executeHoldTokens, a transferência só será permitida se existir uma política de aprovação disponível mais baixa e se o valor estiver dentro dos limites da política. Caso contrário, a transferência será bloqueada. Para o método transferTokens, a transferência só será permitida se o valor estiver nos limites inferior e superior dos limites de restrição de transferência.

Correspondência da Política de Aprovação

A correspondência da política de aprovação é acionada após uma chamada para a API holdTokens. As políticas de aprovação definem limites de transação, números obrigatórios de aprovações e detalhes do aprovador e definem a sequência para aprovações de vários níveis. Uma política de aprovação é obrigatória para uma operação de retenção. Sem uma política de aprovação, os usuários não podem manter ou transferir tokens quando as restrições se aplicam.

A correspondência da política de aprovação determina se as aprovações são necessárias para que o notário possa concluir a transferência de retenção. Se as aprovações forem necessárias, a correspondência da política de aprovação determinará quais aprovadores serão necessários e em qual sequência.

Se nenhum indicador de restrição for definido para remetente e recebedor, a quantia de retenção será comparada com todos os limites da política de aprovação configurados para localizar uma correspondência. Se uma correspondência for encontrada, os aprovadores e a sequência correspondentes serão usados. Se nenhuma correspondência for encontrada, nenhuma aprovação será necessária e a transação será encaminhada diretamente ao notário.

Se um indicador de restrição for definido para remetente ou destinatário, a política de aprovação mais baixa disponível será usada. Se nenhuma política estiver disponível, a transação será bloqueada.

Após a determinação de uma correspondência de política, os seguintes detalhes são extraídos da política para uso no processo de aprovação:
  • Aprovadores Obrigatórios
  • Sequência de aprovação
  • Número necessário de aprovações

Aprovação de Transação

A validação da aprovação da transação é acionada após uma chamada para a API approveTransaction. A validação impõe todas as regras de aprovação definidas na política de aprovação que foi correspondida durante a chamada à API holdTokens. A validação é executada para cada aprovador em sequência de acordo com as etapas a seguir.

  1. Validar Identidade do Aprovador: Verifica se o usuário atual existe na lista de aprovadores obrigatórios da política de aprovação.
  2. Validar Ordem de Sequência: Verifica se o aprovador atual é o aprovador esperado na posição de sequência atual.
  3. Verificar Aprovação Duplicada: Impede que o mesmo aprovador aprove a mesma transação mais de uma vez.
  4. Validação da Política da Conta: Executa a validação da política da conta novamente para garantir que os status da conta do remetente e do Receptor não tenham sido alterados desde a criação da retenção.
  5. Aprovação do Registro: Registra a aprovação com carimbo de data/hora, incrementa a contagem de aprovações e verifica se todas as aprovações necessárias foram concluídas.
Se todas as aprovações forem registradas, a transação será marcada como pronta para conclusão pelo notário. Se forem necessárias mais aprovações, o próximo aprovador em sequência será aguardado.