機密ホールセールCBDCアプリケーション・ワークフロー
機密中央銀行デジタル通貨(CBDC)シナリオは、機密情報が個人的に格納された構造化された金融機関階層を介して配布される通貨を表します。
卸売CBDCシナリオの機密バージョンは、トランザクション・データの処理方法によって異なります。基本的なトランザクション詳細や組織勘定科目情報などの機密でない情報は、公開元帳に格納されます。機密情報(ユーザーID、実際の残高値、ブラインド・ファクタなど)は、各組織のプライベート・データ収集に格納され、一時マップを介してチェーンコードに渡されるため、パブリック元帳に書き込まれることはありません。勘定残高および保留残高は、Pedersenコミットメント値として公開元帳に表示され、基礎となる金額を公開せずにゼロ知識証明による公開検証が可能になります。中央銀行レベルでは、保留振替は、executeHoldTokensSender APIとexecuteHoldTokensReceiver APIの両方を同時に実行する必要があるアトミック・トランザクションに対して2フェーズ・コミット・プロセスを使用します。これにより、転送中の機密性が維持されます。金融機関レベルでの振替では、標準の単一のexecuteHoldTokens APIが使用されます。
次の表に、卸売CBDCシナリオの非機密バージョンと機密バージョンの主な違いをまとめます。
| 操作/データ | 非機密CBDC | 機密CBDC |
|---|---|---|
| 組織間移動(中央銀行承認者が保留を実行) | executeHoldTokens API (単一コール)
|
executeHoldTokensSenderおよびexecuteHoldTokensReceiver API (2フェーズ・コミットで2つの同時コールが実行される)
|
| 組織内転送(金融機関承認者が保留を実行) | executeHoldTokens API (単一コール)
|
executeHoldTokens API (単一コール、違いなし)
|
| 元帳のトランザクション・データ | すべてのデータが公開元帳にプレーン形式で格納され、データの分離は行われません。 | 各組織のプライベート・データ収集に格納されている、公開元帳、機密データ(ユーザーID、実績残高、ブラインド・ファクタ)に関する非機密データ |
| 残高表示 | 直接格納された実績残高値 | Pedersen取引約定値として表される残高(公開元帳に表示されない実績金額) |
| 検証メソッド | 直接: 値は元帳で読取り可能です。 | ゼロナレッジ・プルーフにより、基礎となる金額を明らかにすることなく公開検証が可能 |
| 機密データの処理 | 公開元帳に保存 | 一時マップを介してチェーンコードに渡され、公開元帳には書き込まれません |
ノート:
executeHoldTokensSenderおよびexecuteHoldTokensReceiver APIは、2フェーズ・コミット・プロセスの一部として同時にコールする必要があります。1つだけをもう1つだけ呼び出すと、エラーが発生します。
次の表に、このシナリオのアクターの概要を示します。
| アクター | ロール | 説明 |
|---|---|---|
| Administrator | トークン管理 | システムを初期化し、ロールを割り当てます。 |
| クリエータ | マイナー | トークンのミントを要求し、ミントされたトークンを受け取ります。 |
| 中央銀行承認者 | 公証人 | 中央銀行レベルで全ての業務を承認します。 |
| 発行者 | なし | 作成者からトークンを受け取り、トークンを金融機関の役員または退職者にルーティングします。 |
| 金融機関役員 | なし | 発行者からトークンを受け取り、金融機関ユーザーにトークンを配布します。 |
| 金融機関承認者 | 公証人 | 金融機関役員から金融機関ユーザーへの保留振替を承認します。 |
| 金融機関ユーザー | なし | 金融機関で転送されたトークンの最終受信者。 |
| リタイア | バーナー | 発行者からトークンを受け取り、バーン・リクエストを中央銀行承認者に送信します。 |
管理者は、次のステップを実行してシステムを初期化します。
initializeCBDCTokenAPIを使用してCBDCシステムを初期化します。registerOrgAPIを使用して組織を登録します。createAccountAPIを使用してアカウントを作成します。associateTokenToAccountAPIを使用して、トークンをアカウントに関連付けます。addRoleAPIを使用して、作成者にminterロール、中央銀行承認者にnotaryロール、およびretirerにurnerロールを割り当てます。
システムの初期化後、一般的なプロセス・フローは次の基本ステップに従います。
- Mint currency(貨幣)
- トークン作成者は、
requestMintAPIを使用して、デポジット・トークンをミントするリクエストを送信します。 - 中央銀行承認者は、
approveMintAPIを使用してミント・リクエストを確認および承認します。トークンは、作成者のアカウントにクレジットされます。または、中央銀行承認者はrejectMintAPIを使用してリクエストを拒否できます。
- トークン作成者は、
- トークンを発行者に転送します。
- 作成者は、発行者にトークンを送信する
transferTokensAPIを使用します。
- 作成者は、発行者にトークンを送信する
- トークンを財務担当者に転送します。
- 発行者は、
holdTokensAPIを使用して、金融機関役員にトークンを送信します。 - 中央銀行承認者は、2フェーズ・コミットの一部として
executeHoldTokensSenderおよびexecuteHoldTokensReceiverAPIを使用して、転送リクエストを検証および承認します。または、中央銀行承認者は、releaseHoldAPIを使用して振替を拒否できます。
- 発行者は、
- ユーザーにトークンを発行します。
- 金融機関担当者は、
holdTokensAPIを使用して、金融機関ユーザーにトークンを送信します。 - 金融機関承認者は、
executeHoldTokensAPIを使用して、振替要求を検証および承認します。または、金融機関承認者は、releaseHoldAPIを使用して振替を拒否できます。
- 金融機関担当者は、
- トークンを書き込みます。
- 発行者は、
transferTokensAPIを使用してトークンをリタイラに転送します。 - リタイラは、
requestBurnAPIを使用して、バーン・リクエストを中央銀行承認者に送信します。 - 中央銀行承認者は
approveBurnAPIを使用してバーン・リクエストを承認し、トークンは破棄されます。または、中央銀行承認者はrejectBurnAPIを使用してリクエストを拒否できます。
- 発行者は、
- トークンの残高を確認します。
- ユーザーは、
getAccountBalanceAPIを使用して、保有する通貨の合計数を取得できます。
- ユーザーは、