계정 잔액 통합 스케줄링

기밀 트랜잭션 기능을 사용하는 경우 계정 잔액 통합을 정기적으로 스케줄링해야 합니다.

네트워크 전체에서 계정 잔고를 정확하게 유지하기 위해 Token Admin 또는 Org AdminscheduleTransactions REST API 엔드포인트를 사용하여 주기적으로 consolidateRunningBalanceInTransactionsprocessSendersAndReceivers 메소드를 실행합니다. 자세한 내용은 실행할 트랜잭션 스케줄링을 참조하십시오.

consolidateRunningBalanceInTransactions

기밀 모드에서는 발신자 및 수령인 계정의 누계가 트랜잭션 레코드에 저장되지 않습니다. 대신 누계가 주기적으로 계산되고 트랜잭션 레코드가 업데이트됩니다. consolidateRunningBalanceInTransactions API가 실행되면 누계가 처리되지 않은 모든 트랜잭션(공용 및 비공개)이 식별되고 발신자 및 수령인 계정의 누계가 계산 및 저장됩니다. 다음 예와 같이 scheduleTransactions API 끝점을 사용하여 주기적으로 실행되도록 consolidateRunningBalanceInTransactions API 일정을 잡습니다. 예제에서는 기본 간격 시간인 2분을 사용합니다.

Endpoint
/restproxy/api/v2/channels/{channelName}/scheduleTransactions
요청 본문
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

기밀 모드에서는 조직 간 전송에는 두 개의 개인 데이터 수집이 포함됩니다. 계정 키/값 쌍을 수정하는 대신 차변에 대해 발신자 객체가 생성되고 대변에 대해 수신자 객체가 생성됩니다. 잔액이 발신자 객체에 배치됩니다. 대변 기입된 금액은 수신자에게 지정된 수신자 객체에 지정됩니다. 차변 작업이 완료되면 발신자 객체가 더 이상 사용되지 않으며 삭제할 수 있습니다. 마찬가지로 잔액이 수신자 객체에서 수신자 계정으로 이동한 후 수신자 객체를 삭제할 수 있습니다. processSendersAndReceivers는 처리된 모든 발신자 객체를 식별하고 삭제합니다. 또한 잔액이 포함된 모든 수신자 객체를 식별하고, 잔액을 해당 수신자의 계정 키/값 쌍으로 이동한 다음 수신자 객체를 삭제합니다. 다음 예와 같이 scheduleTransactions API 끝점을 사용하여 주기적으로 실행되도록 processSendersAndReceivers API 일정을 잡습니다. 예제에서는 기본 간격 시간인 2분을 사용합니다.

Endpoint
/restproxy/api/v2/channels/{channelName}/scheduleTransactions
요청 본문
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
}'