スケジュール勘定科目残高連結
機密支払機能を使用する場合は、勘定科目残高連結を定期的にスケジュールする必要があります。
アカウント残高をネットワーク全体で正確に保つために、Token Admin
またはOrg Admin
は、Oracle Blockchain PlatformのscheduleTransactions
REST APIエンドポイントを使用して、consolidateRunningBalanceInTransactions
およびprocessSendersAndReceivers
メソッドを定期的に実行します。詳細は、「実行するトランザクションのスケジュール」を参照してください。
consolidateRunningBalanceInTransactions
機密モードでは、送り側勘定と受け側勘定の残高はトランザクション・レコードに格納されず、かわりに残高が定期的に計算されてから、トランザクション・レコードが更新されます。consolidateRunningBalanceInTransactions
APIが実行されると、残高が処理されていないすべてのトランザクション(公開と非公開の両方)が識別され、送信者および受け側勘定科目の残高が計算されて保存されます。次に示すように、Oracle Blockchain PlatformのscheduleTransactions
APIエンドポイントを使用して、consolidateRunningBalanceInTransactions
APIを定期的に実行するようにスケジュールします。
- エンド・ポイント
/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
機密モードでは、組織間の転送には2つのプライベート・データ・コレクションが含まれます。アカウントのキー/値のペアを変更するかわりに、送信者オブジェクトが作成され、クレジット用に受信者オブジェクトが作成されます。残高は送信者オブジェクトに配置されます。貸方金額は、受取人に割り当てられた受取人オブジェクトに配置されます。借方操作が完了すると、送信者オブジェクトは使用されなくなり、削除できます。同様に、残高が受信者オブジェクトから受信者のアカウントに移動すると、受信者オブジェクトを削除できます。processSendersAndReceivers
は、処理されたすべてのセンダー・オブジェクトを識別し、それらを削除します。また、残高を含むすべての受信者オブジェクトを識別し、残高を対応する受信者のアカウント・キー/値ペアに移動してから、受信者オブジェクトを削除します。次に示すように、Oracle Blockchain PlatformのscheduleTransactions
APIエンドポイントを使用して、processSendersAndReceivers
APIを定期的に実行するようにスケジュールします。
- エンド・ポイント
/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 }'