Stablecoin 鏈碼套件
Oracle Blockchain Platform Digital Assets Edition 包含穩定貨幣生命週期案例的鏈碼範例。
穩定幣鏈碼支援穩定幣的完整生命週期,由基於延伸記號分類架構標準的有趣記號所代表。您可以使用鏈碼方法來進行任務型核准的提示、轉移、保留和燒錄權杖。
穩定的鏈碼套件可以從 Oracle Blockchain Platform 主控台下載,並且包含下列元件。
Stablecoin.zip,包含要部署之封裝鏈碼的封存檔案。Stablecoin.yaml,您可以與區塊鏈應用程式建置器搭配使用的規格檔案,用來編排Stablecoin鏈碼。Stablecoin_postman_collection.json是一種 Postman 集合,可讓您測試鏈碼中的 API。README.md,使用鏈碼的逐步指引。
若要取得穩定的鏈碼套件,請在 Oracle Blockchain Platform Digital Assets 主控台中按一下數位資產頁籤,然後選取 Stablecoin 應用程式。
規格檔案
穩定幣規格檔案 (Stablecoin.yml) 是以延伸的「記號分類架構」規格檔案為基礎。除了 stablecoin 資產之外,規格檔案還定義了 AccountPolicyCheck、ApprovalPolicyCheck 和 ApprovalTransactions 資產。#
# Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
#
assets:
# Token asset to manage the complete lifecycle of stablecoin
- name: stablecoin # Asset name
type: token # Asset type
standard: ttf+ # Token standard
anatomy:
type: fungible # Token type
unit: fractional # Token unit
behavior: # Token behaviors
- divisible:
decimal: 2
- mintable:
mint_approval_required: true
- transferable
- burnable:
burn_approval_required: true
- holdable
- roles:
minter_role_name: minter
burner_role_name: burner
notary_role_name: notary
mint_approver_role_name: notary
burn_approver_role_name: notary
properties: # Custom asset attributes for stablecoin
- name: currencyName # The currency name that the stablecoin is pegged with
type: string
mandatory: true
- name: conversionRate # The currency to stablecoin conversion rate
type: float
mandatory: true
# Generic asset to maintain the account policy and approval policy details
- name: AccountPolicyCheck # Asset name
properties: # Asset attributes
- name: accountPolicyId
type: string
mandatory: true
id: true
derived:
strategy: concat
format: ["APID~%1~%2","orgId","userId"]
- name: orgId
type: string
mandatory: true
validate: required()
- name: userId
type: string
mandatory: true
validate: required()
- name: kycCompliance
type: string
validate: /^\s*(true|false)\s*$/
mandatory: true
- name: amlCompliance
type: string
validate: /^\s*(true|false)\s*$/
mandatory: true
- name: riskScore
type: float
validate: min(0)
- name: restrictionFlag
type: string
validate: /^\s*(true|false)\s*$/
mandatory: true
methods:
crud: [create, update, getById, delete]
others: [getHistoryById, getByRange]
- name: ApprovalPolicyCheck # Asset name
properties: # Asset attributes
- name: approvalPolicyId
type: string
mandatory: true
id: true
derived:
strategy: concat
format: ["GPID~%1~%2","transactionLowerLimit","transactionUpperLimit"]
- name: transactionLowerLimit
type: string
validate: required()
- name: transactionUpperLimit
type: string
validate: required()
- name: numberOfApprovalsRequired
type: number
mandatory: true
validate: min(0)
- name: approverDetails
type: approverDetails[]
methods:
crud: [create, update, getById, delete]
others: [getHistoryById, getByRange]
- name: approverDetails # Asset name
type: embedded
properties: # Asset attributes
- name: approverOrgId
type: string
mandatory: true
validate: required()
- name: approverUserId
type: string
mandatory: true
validate: required()
- name: approvalSequence
type: number
mandatory: true
validate: positive()
- name: ApprovalTransactions # Asset name
properties: # Asset attributes
- name: approvalTransactionId
type: string
mandatory: true
id: true
derived:
strategy: concat
format: ["%1~%2","approvalOperationId","approverAccountId"]
- name: approvalOperationId
type: string
mandatory: true
- name: fromAccountId
type: string
mandatory: true
- name: toAccountId
type: string
mandatory: true
- name: approverAccountId
type: string
mandatory: true
- name: totalApprovals
type: number
mandatory: true
validate: min(0)
- name: timestamp
type: string
mandatory: true
methods:
crud: [getById ]
others: []
customMethods:
- "getApproverDetailsByTransferAmount(Amount: number)" # Customized method for fetching approver details