Stablecoinアプリケーションワークフロー
ステーブルコインは、コンプライアンスの実施が組み込まれたデジタル通貨を表す真菌性トークンです。
安定したコインのシナリオでは、顧客(KYC)とマネーロンダリング防止(AML)ポリシー、転送制限、マルチパーティの承認が強制されます。システムでは、直接振替と保留ベースの振替がサポートされており、振替が発生する前に承認が必要です。
- Minter、Burner、Notaryの役割が必要です。
- アカウント・ポリシーにより、KYC/AMLおよび制限フラグが強制されます。
- 承認ポリシーは、保留ベースの転送のしきい値および順次承認者の要件を定義します。
- 転送制限はオプションであり、いつでも構成できます。
- 承認ポリシーの一致は、
holdTokensAPIの使用時に承認が必要かどうかを判断するために使用されます。 - トランザクション履歴APIでは、監査および監視がサポートされています。
| アクター | ロール | 説明 |
|---|---|---|
| Administrator | トークン管理 | システムを初期化し、ロールを割り当て、アカウントおよび承認ポリシーを作成します。 |
| マイナー | マイナー | トークンのミントを要求します。 |
| ミント承認者 | 公証人 | ミント要求を承認または否認します。 |
| 消化承認者 | 公証人 | 書き込み要求を承認または拒否します。 |
| 送信者 | なし | 直接または保留ベースの転送を開始します。 |
| 承認者 | なし | 定義済の順序でトランザクションを承認します。承認者は、承認ポリシーで(割り当てられたロールではなく)承認者として指定した通常のアカウント所有者です。 |
| 公証人 | 公証人 | 承認後に保留ベースの転送を完了またはリリースします。 |
| 受信者 | なし | 転送されたトークンを受け取ります。 |
| 監査者 | トークン監査者 | コンプライアンスおよびレポート目的でトランザクション履歴を問い合せます。 |
initializeStablecoinTokenAPIを使用してstablecoinを初期化します。registerOrgAPIを使用して組織を登録します。createAccountおよびassociateTokenToAccountAPIを使用してアカウントを作成します。addRoleAPIを使用して、minterロール、burnerロールおよびnotaryロールを適切なアカウントに割り当てます。createStablecoinAccountPolicyCheckAPIを使用してアカウント・ポリシーを作成します。createApprovalPolicyCheckAPIを使用して承認ポリシーを作成します。
- ミントのstablecoins。
- minterは、
requestMintAPIを使用してmint stablecoinsにリクエストを送信します。 - ミント承認者は、
approveMintAPIを使用して、ミントstablecoinsへのリクエストを確認および承認します。または、ミント承認者はrejectMintAPIを使用してリクエストを拒否できます。
- minterは、
- 承認なしでstablecoinsを移動します。
- 送信者は、
transferTokensAPIを使用してstablecoinsをユーザーに送信します。
- 送信者は、
- 承認付きでstablecoinsを転送します。
- 送信者は、
holdTokensAPIを使用してトークンの転送をリクエストします。 - 必要に応じて、承認者は
approveTransactionAPIを使用して、承認ポリシーで指定された転送を承認します。 - 公証人は、
executeHoldTokensAPIを使用して転送リクエストを承認します。または、公証人はreleaseHoldAPIを使用して転送を拒否できます。
- 送信者は、
- トークンの残高を確認します。
- ユーザーは、
getAccountBalanceAPIを使用して、保持するstablecoinsの量を取得できます。
- ユーザーは、
- トークンを書き込みます。
- ユーザーは、
requestBurnAPIを使用して、安定したコインを書き込むリクエストを送信できます。 - バーン承認者は、
approveBurnAPIを使用してリクエストをレビューおよび承認します。または、バーン承認者はrejectBurnAPIを使用してリクエストを拒否できます。
- ユーザーは、
- トランザクション履歴を監査します。
- 監査者およびユーザーは、
getAccountTransactionHistoryおよびgetAccountTransactionHistoryWithFiltersAPIを使用して、監査およびレポート用のトランザクション履歴を取得できます。
- 監査者およびユーザーは、
アカウント・ポリシー検証
アカウントポリシーは、ステーブルコインを譲渡または保持するすべてのアカウントに必須です。アカウント・ポリシーは、transferTokens、holdTokens、approveTransaction、executeHoldTokensのAPIで検証されます。
各アカウント・ポリシーには、KYC、AMLおよびrestrictionFlagの3つのパラメータが含まれます。これらは、トークンが転送される前に、送信者と受信者の両方で検証されます。
-
KYC(顧客身元確認) - 転送が許可されるのは、送信者と受信者の両方のアカウントでKYC値が
trueの場合のみです。 -
AML(マネーロンダリング防止) - 転送が許可されるのは、送信者と受信者の両方のアカウントでAML値が
trueの場合のみです。 -
restrictionFlag - 送信者と受信者の両方のアカウントで制限フラグが
falseに設定されている場合、検証は成功します。送信者または受信者アカウントのholdTokens、approveTransactionおよびexecuteHoldTokensAPIの制限フラグがtrueに設定されている場合、使用可能な最小の承認ポリシーが存在し、その量がポリシー制限の範囲内にある場合にのみ、転送が許可されます。それ以外の場合、転送はブロックされます。transferTokensメソッドの場合、転送が許可されるのは、その量が転送制限の下限と上限にある場合のみです。
承認ポリシー照合
承認ポリシーの一致は、holdTokens APIのコール後にトリガーされます。承認ポリシーは、トランザクションしきい値、必要な承認数および承認者詳細を定義し、複数レベルの承認の順序を設定します。保留操作には承認ポリシーが必須です。承認ポリシーがない場合、ユーザーは制限が適用されたときにトークンを保持または転送できません。
承認ポリシー照合によって、公証人が保留振替を完了する前に承認が必要かどうかが決まります。承認が必要な場合は、承認ポリシーの一致によって、必要な承認者と順序が決まります。
送信者と受信者の両方に制限フラグが設定されていない場合、保留金額が構成されたすべての承認ポリシーしきい値と比較され、一致が検索されます。一致が見つかった場合は、対応する承認者および順序が使用されます。一致するものが見つからなかった場合、承認は必要なく、トランザクションは公証人に直接進みます。
送信者または受信者に制限フラグが設定されている場合は、使用可能な最も低い承認ポリシーが使用されます。ポリシーを使用できない場合、トランザクションはブロックされます。
- 必須承認者
- 承認連番
- 必要な承認数
トランザクション承認
トランザクション承認検証は、approveTransaction APIのコール後にトリガーされます。検証では、holdTokens APIのコール中に一致した承認ポリシーに定義されているすべての承認ルールが適用されます。次のステップに従って、各承認者の検証が順番に実行されます。
- Validate Approver Identity (承認者IDの検証): 承認ポリシーの必須承認者リストに現在のユーザーが存在するかどうかをチェックします。
- Validate Sequence Order(順序順序の検証): 現在の承認者が現在の順序位置で予想される承認者であるかどうかを確認します。
- 重複承認のチェック: 同じ承認者が同じトランザクションを複数回承認できないようにします。
- アカウント・ポリシー検証: アカウント・ポリシー検証を再度実行して、保留が作成されてから送信者および受信者のアカウント・ステータスが変更されていないことを確認します。
- レコード承認: 承認をタイム・スタンプで記録し、承認数を増やして、必要なすべての承認が完了しているかどうかを確認します。