Stablecoin 應用程式工作流程

穩定幣是一種有趣的代幣,代表具有內建合規性執行的數位貨幣。

穩定案例會強制瞭解您的客戶 (KYC) 和反洗錢 (AML) 政策、移轉限制及多方核准。系統支援直接調動與保留型調動,在調動發生前需要核准。

  • 需有次要、燃燒器及公證角色。
  • 帳戶政策會強制執行 KYC/AML 與限制旗標。
  • 核准原則會定義保留型移轉的臨界值與循序核准者需求。
  • 移轉限制是選擇性的,可以隨時設定。
  • 核准原則比對可用來判斷使用 holdTokens API 時是否需要核准。
  • 交易歷史記錄 API 支援稽核和監控。
下表摘要此案例中的動作者。
動作項目 角色 描述
Administrator 權杖管理 初始化系統、指派角色、建立帳戶及核准政策。
Minter Minter 要求微調權杖。
薄荷核准者 公證人 核准或拒絕 Mint 要求。
燒錄核准者 公證人 核准或拒絕燒錄要求。
傳送者 起始直接或保留型移轉。
核准者 以已定義的順序核准異動。核准者是在核准原則中指定為核准者的一般帳戶持有人 (而非指定角色)。
公證人 公證人 完成或核發核准後以保留為基準的移轉。
接收者 接收移轉的權杖。
稽核員 權杖稽核者 查詢交易歷史記錄以符合規範和報告目的。
管理員完成下列步驟以初始化系統。
  1. 使用 initializeStablecoinToken API 起始 stablecoin。
  2. 使用 registerOrg API 註冊組織。
  3. 使用 createAccountassociateTokenToAccount API 建立帳戶。
  4. 使用 addRole API 將 minter、burner、公證角色指定給適當的帳號。
  5. 使用 createStablecoinAccountPolicyCheck API 建立帳戶原則。
  6. 使用 createApprovalPolicyCheck API 建立核准原則。
系統初始化之後,典型的處理流程會遵循這些基本步驟。
  1. 薄荷穩定幣。
    1. 礦工使用 requestMint API 送出薄荷穩定幣的要求。
    2. mint 核准者使用 approveMint API 來複查並核准要求以提示穩定幣。此外,提示核准者也可以使用 rejectMint API 來拒絕要求。
  2. 不需核准即可轉移穩定幣。
    • 寄件者使用 transferTokens API 將穩定幣傳送給使用者。
  3. 通過批准轉移穩定幣。
    1. 寄件者使用 holdTokens API 來要求傳輸記號。
    2. 如有需要,核准者可使用 approveTransaction API 核准核准原則所指定的傳輸。
    3. 公證人使用 executeHoldTokens API 來核准傳輸要求。您可以改用 releaseHold API 來拒絕傳輸。
  4. 驗證權杖餘額。
    • 使用者可以使用 getAccountBalance API 取得持有的穩定貨幣數量。
  5. 燒錄權杖。
    1. 使用者可以使用 requestBurn API 提交要求以燒錄穩定的錢幣。
    2. 燒錄核准者使用 approveBurn API 來複查和核准要求。燒錄核准者可以改用 rejectBurn API 來拒絕要求。
  6. 審核異動記錄。
    • 稽核者和使用者可以使用 getAccountTransactionHistorygetAccountTransactionHistoryWithFilters API 取得稽核和報告的交易歷史記錄。

帳戶政策驗證

所有轉移或持有穩定幣的帳戶都必須使用帳戶政策。帳戶原則會在下列 API 中驗證:transferTokensholdTokensapproveTransactionexecuteHoldTokens

每個帳戶原則包含三個參數:KYCAMLrestrictionFlag。在轉移任何記號之前,會對發送方和接收方驗證這些值。

KYC (瞭解客戶)
只有當傳送方與接收方帳戶的 KYC 值皆為 true 時,才允許轉移。
AML (打擊洗錢)
只有在傳送方與接收方帳戶的 AML 值皆為 true 時,才允許移轉。
restrictionFlag
如果傳送方帳戶和接收方帳戶的限制旗標都設為 false,則會通過驗證。如果傳送方或接收方帳戶、holdTokensapproveTransactionexecuteHoldTokens API 的限制旗標設為 true,則只有在有最低可用核准原則存在且金額在原則限制內時,才允許移轉。否則,該轉移將被封鎖。對於 transferTokens 方法,只有在金額位於轉移限制限制的下限和上限時,才允許轉移。

核准原則比對

核准原則比對會在呼叫 holdTokens API 之後觸發。核准原則可定義異動臨界值、必要的核准數目,以及核准者詳細資訊,並設定多層次核准的順序。保留作業必須要有核准原則。若無核准原則,使用者在套用限制時無法保留或移轉權杖。

核准原則比對決定公證人是否需要核准,才能完成保留移轉。若需要核准,核准原則比對會決定需要哪些核准者,以及需要的順序。

如果傳送方與接收方都未設定任何限制旗標,則會將保留金額與所有設定的核准原則臨界值進行比較,以尋找相符項目。若找到相符項目,則會使用對應的核准者與順序。如果找不到相符項目,則不需要核准,且交易會直接繼續前往公證人。

如果設定寄件者或接收者的限制旗標,則會使用最低的可用核准原則。如果沒有可用的原則,交易就會被封鎖。

決定原則比對之後,系統會從原則擷取下列詳細資訊,以用於核准處理作業:
  • 所需核准者
  • 核准序列
  • 所需核准數目

交易核准

異動核准驗證會在呼叫 approveTransaction API 之後觸發。此驗證會強制執行所有在呼叫 holdTokens API 時相符之核准原則中定義的核准規則。驗證會依下列步驟,依序為每位核准者執行。

  1. 驗證核准者識別:檢查目前使用者是否存在於核准原則的必要核准者清單中。
  2. 驗證順序:檢查目前核准者是否為目前順序位置的預期核准者。
  3. 檢查重複核准:防止相同的核准者多次核准相同的異動。
  4. 帳戶政策驗證:再次執行帳戶政策驗證,以確保傳送方與接收方帳戶狀態在建立保留後未變更。
  5. 記錄核准:記錄含時間戳記的核准,增加核准計數,並檢查是否完成所有必要的核准。
若記錄了所有核准,異動會被公證人標記為可完成。若需要更多核准,系統會依序等待下一個核准者。