Wholesale CBDC Application Workflow
The wholesale central bank digital currency (CBDC) scenario represents currency that is distributed through a structured financial institution hierarchy.
In this scenario, the central bank approver governs all central bank operations, while financial institution approvers govern internal transfers at the institutional level. Tokens are minted by the creator and issued to financial institution officers by the issuer. Financial institution officers then issue the tokens to financial institution users. Tokens can be burned by the retirer. In the non-confidential version, all transaction details including participant account information and actual balance values are stored directly on the public ledger in plain form. There is no separation between sensitive and non-sensitive data, making it suitable for environments where transaction privacy is not required.
- Minter, burner, and notary roles are required.
- The burner role is assigned to the retirer. Regular users cannot burn their own tokens.
- All hold-based transfers run in two steps: first the
holdTokensAPI and then either theexecuteHoldTokensorreleaseHoldAPI. - The issuer acts as the distribution point, choosing whether to route tokens to the financial institution hierarchy or to the retirer.
| Actor | Role | Description |
|---|---|---|
| Administrator | Token Admin | Initializes the system, assigns roles. |
| Creator | Minter | Requests minting of tokens and receives minted tokens. |
| Central Bank Approver | Notary | Approves all operations at the central bank level. |
| Issuer | none | Receives tokens from the creator, routes tokens to the financial institution officer or retirer. |
| Financial Institution Officer | none | Receives tokens from the issuer, distributes tokens to financial institution users. |
| Financial Institution Approver | Notary | Approves hold transfers from financial institution officer to financial institution users. |
| Financial Institution User | none | Final recipient of transferred tokens at a financial institution. |
| Retirer | Burner | Receives tokens from the issuer and sends burn requests to the central bank approver. |
- Initialize the CBDC system by using the
initializeCBDCTokenAPI. - Register organizations by using the
registerOrgAPI. - Create accounts by using the
createAccountAPI. - Associate the token to accounts by using the
associateTokenToAccountAPI. - Assign the minter role to the creator, the notary role to the central bank approver, and the burner role to the retirer by using the
addRoleAPI.
- Mint currency.
- The token creator uses the
requestMintAPI to submit a request to mint deposit tokens. - The central bank approver uses the
approveMintAPI to review and approve the mint request. The tokens are credited to the creator's account. Alternately, the central bank approver can userejectMintAPI to deny the request.
- The token creator uses the
- Transfer tokens to the issuer.
- The creator uses the
transferTokensAPI send tokens to the issuer.
- The creator uses the
- Transfer tokens to financial officers.
- The issuer uses the
holdTokensAPI send tokens to a financial institution officer. - The central bank approver uses the
executeHoldTokensAPI to validate and approve the transfer request. Alternately, the central bank approver can use thereleaseHoldAPI to reject the transfer.
- The issuer uses the
- Issue tokens to users.
- The financial institution officer uses the
holdTokensAPI send tokens to a financial institution user. - The financial institution approver uses the
executeHoldTokensAPI to validate and approve the transfer request. Alternately, the financial institution approver can use thereleaseHoldAPI to reject the transfer.
- The financial institution officer uses the
- Burn tokens.
- The issuer uses the
transferTokensAPI to transfer tokens to the retirer. - The retirer uses the
requestBurnAPI to send a burn request to the central bank approver. - The central bank approver uses the
approveBurnAPI to approve the burn request, and the tokens are destroyed. Alternately, the central bank approver can use therejectBurnAPI to reject the request.
- The issuer uses the
- Verify token balance.
- Users can use the
getAccountBalanceAPI to get the total number of currency they hold.
- Users can use the