Programar Consolidação do Saldo da Conta

Ao usar o recurso de pagamentos confidenciais, você deve programar regularmente a consolidação do saldo da conta.

Para manter os saldos das contas precisos na rede, um Token Admin ou Org Admin usa o ponto final da API REST scheduleTransactions no Oracle Blockchain Platform para executar os métodos consolidateRunningBalanceInTransactions e processSendersAndReceivers periodicamente. Para obter mais informações, consulte Programar Transação para Execução.

consolidateRunningBalanceInTransactions

No modo confidencial, o saldo atual das contas do remetente e do recebedor não é armazenado em um registro de transação; em vez disso, o saldo atual é calculado periodicamente e, em seguida, os registros de transação são atualizados. Quando a API consolidateRunningBalanceInTransactions é executada, todas as transações (públicas e privadas) em que um saldo em execução não foi processado são identificadas e os saldos em execução das contas do remetente e do recebedor são calculados e salvos. Use o ponto final da API scheduleTransactions no Oracle Blockchain Platform conforme mostrado abaixo para programar a API consolidateRunningBalanceInTransactions para ser executada periodicamente.

Ponto Final
/restproxy/api/v2/channels/{channelName}/scheduleTransactions
Corpo da Solicitação
curl --location '<rest_server_url:port>/restproxy/api/v2/channels/{channelName}/scheduleTransactions' \
--header 'Content-Type: application/json' \
--header 'Confidential-Transaction: true' \
--header 'Authorization: ••••••' \
--data '{
    "chaincode": "{ChaincodeName}",
    "args": [
        "consolidateRunningBalanceInTransactions"
    ],
    "timeout": 6000,
    "sync": true,
    "intervalType": {
        "time": 2
    },
    "expiry": "120M",
    "sameOrgEndorser": true
}'

processSendersAndReceivers

No modo confidencial, as transferências entre organizações envolvem duas coletas de dados privadas. Em vez de modificar o par de chave/valor da conta, para débitos, um objeto remetente é criado e, para créditos, um objeto recebedor é criado. O saldo é colocado no objeto do remetente. O valor creditado é colocado no objeto recebedor, que é atribuído ao destinatário. Quando a operação de débito é concluída, o objeto do remetente não está mais em uso e pode ser excluído. Da mesma forma, depois que o saldo passa do objeto do recebedor para a conta do destinatário, o objeto do recebedor pode ser excluído. O processSendersAndReceivers identifica todos os objetos do remetente que foram processados e os exclui. Ele também identifica todos os objetos do destinatário que contêm um saldo, move o saldo para o par de chave/valor da conta do destinatário correspondente e, em seguida, exclui o objeto do destinatário. Use o ponto final da API scheduleTransactions no Oracle Blockchain Platform conforme mostrado abaixo para programar a API processSendersAndReceivers para ser executada periodicamente.

Ponto Final
/restproxy/api/v2/channels/{channelName}/scheduleTransactions
Corpo da Solicitação
curl --location '<rest_server_url:port>/restproxy/api/v2/channels/<channel_name>/scheduleTransactions'\
--header 'Content-Type: application/json' \
--header 'Confidential-Transaction: true' \
--header 'Authorization: ••••••' \
--data '{
    "chaincode": "{ChaincodeName}",
    "args": [
        "processSendersAndReceivers"
    ],
    "timeout": 6000,
    "sync": true,
    "intervalType": {
        "time": 2
    },
    "expiry": "120M",
    "sameOrgEndorser": true
}'