Stablecoin Chaincode-Paket
Die Oracle Blockchain Platform Digital Assets Edition enthält Beispiel-Chaincode für ein Stablecoin-Lebenszyklus-Szenario.
Der Stablecoin Chaincode unterstützt den gesamten Lebenszyklus eines Stablecoins, dargestellt durch ein fungibles Token, das auf dem erweiterten Token Taxonomy Framework-Standard basiert. Mit Chaincode-Methoden können Sie Token mit rollenbasierten Genehmigungen prägen, übertragen, sperren und brennen.
Das Stablecoin Chaincode-Paket kann von der Oracle Blockchain Platform-Konsole heruntergeladen werden und umfasst die folgenden Komponenten.
Stablecoin.zip, eine Archivdatei, die den in einem Package integrierten Chaincode für das Deployment enthält.Stablecoin.yaml, eine Spezifikationsdatei, die Sie mit Blockchain App Builder verwenden können, um denStablecoin-Chaincode zu erstellen.Stablecoin_postman_collection.json, eine Postman-Collection, mit der Sie die APIs im Chaincode testen können.README.md, eine Schritt-für-Schritt-Anleitungen zum Arbeiten mit Chaincode.
Um das Stablecoin-Chaincode-Paket abzurufen, klicken Sie in der Oracle Blockchain Platform Digital Assets-Konsole auf die Registerkarte Digital Assets, und wählen Sie Stablecoin-Anwendung aus.
Spezifikationsdatei
Die Stablecoin-Spezifikationsdatei (Stablecoin.yml) basiert auf der erweiterten Token Taxonomy Framework-Spezifikationsdatei. Zusätzlich zum Asset stablecoin definiert die Spezifikationsdatei AccountPolicyCheck, ApprovalPolicyCheck und ApprovalTransactions die TransferRestriction-Assets.#
# Copyright (c) 2026, 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
# AccountPolicyCheck — Defines policies for an account to decide whether an account is eligible to transact
- name: AccountPolicyCheck # Asset name
properties: # Asset attributes
- name: accountPolicyId #Unique derived ID for the account policy, ensuring one policy per account.
type: string
mandatory: true
id: true
derived:
strategy: concat
format: ["APID~%1~%2","orgId","userId"]
- name: orgId # Organization owning the account.
type: string
mandatory: true
validate: required()
- name: userId # Account holder identifier linked to this policy.
type: string
mandatory: true
validate: required()
- name: kycCompliance # Indicates whether KYC verification is complete. Required for transaction eligibility. If true, the account can transfer stablecoins.
type: string
validate: /^\s*(true|false)\s*$/
mandatory: true
- name: amlCompliance # Indicates AML screening status. Prevents suspicious accounts from transacting. If true, the account can transfer stablecoins.
type: string
validate: /^\s*(true|false)\s*$/
mandatory: true
- name: riskScore # Quantitative risk indicator.
type: float
validate: min(0)
- name: restrictionFlag #Transaction blocking flag. If true, hold operations are limited to the lowest bucket range defined in the approval policy, and any amount above that range is rejected;
#for transfer operations, the account can transfer only within the bucket limits specified in the TransferRestriction asset.
type: string
validate: /^\s*(true|false)\s*$/
mandatory: true
methods:
crud: [create, update, getById, delete]
others: [getHistoryById, getByRange]
# ApprovalPolicyCheck — Maps transaction amount slabs to approval rules
- name: ApprovalPolicyCheck # Asset name
properties: # Asset attributes
- name: approvalPolicyId # Unique derived identifier for each approval slab based on amount range.
type: string
mandatory: true
id: true
derived:
strategy: concat
format: ["GPID~%1~%2","transactionLowerLimit","transactionUpperLimit"]
- name: transactionLowerLimit # Minimum transaction amount where this rule applies.
type: float
validate: min(0)
mandatory: true
- name: transactionUpperLimit # Maximum transaction amount covered by this rule.
type: float
validate: min(0)
mandatory: true
- name: numberOfApprovalsRequired # Total approvals needed for transactions in this range.
type: number
mandatory: true
validate: min(0)
- name: approverDetails # List of authorized approvers and their sequence for this slab.
type: approverDetails[]
methods:
crud: [create, update, getById, delete]
others: [getHistoryById, getByRange]
# ApproverDetails (Embedded) — Defines the list of approvers along with the approval sequences
- name: approverDetails # Asset name
type: embedded
properties: # Asset attributes
- name: approverOrgId # Organization to which the approver belongs.
type: string
mandatory: true
validate: required()
- name: approverUserId # Specific user authorized to approve.
type: string
mandatory: true
validate: required()
- name: approvalSequence # Order of approval when sequential approvals are enforced.
type: number
mandatory: true
validate: positive()
# ApprovalTransactions — Tracks approval progress for a specific operation
- name: ApprovalTransactions # Asset name
properties: # Asset attributes
- name: approvalTransactionId # Unique ID for each approval action tied to operation and approver.
type: string
mandatory: true
id: true
derived:
strategy: concat
format: ["%1~%2~%3","approvalOperationId","approverOrgId", "approverUserId"]
- name: approvalOperationId # Identifier of the original transaction requiring approval.
type: string
mandatory: true
- name: fromAccountId # Source account involved in the operation.
type: string
mandatory: true
- name: toAccountId # Destination account for the operation.
type: string
mandatory: true
- name: approverOrgId # Organization of the approver performing the action.
type: string
mandatory: true
- name: approverUserId # User who approved the operation.
type: string
mandatory: true
- name: receivedApprovalsCount # Number of approvals completed so far.
type: number
mandatory: true
validate: min(0)
- name: requiredApprovalsCount # Total approvals needed before execution.
type: number
mandatory: true
validate: min(0)
- name: timestamp # Time when the approval was recorded for audit traceability.
type: string
mandatory: true
methods:
crud: [getById ]
others: []
# TransferRestriction — Defines global transaction boundaries
- name: TransferRestriction # Asset name
properties: # Asset attributes
- name: id # Unique identifier for the restriction rule.
type: string
mandatory: true
id: true
- name: transactionLowerLimit # Smallest allowable transfer amount in the system.
type: number
mandatory: true
default: 0
validate: min(0)
- name: transactionUpperLimit # Largest allowable transfer amount without special governance.
type: number
mandatory: true
default: 1000000
validate: min(0)
methods:
crud: [ ]
others: []
customMethods:
- "getApproverDetailsByTransferAmount(Amount: number)" # Customized method for fetching approver details