Deposit Token Application Workflow

A deposit token is a fungible token that represents a bank deposit.

The deposit token scenario supports issuance and distribution of tokens with minimal governance overhead. Tokens are minted by the creator and then issued to users by the issuer. The creator uses a hold-based transfer to send tokens to the Issuer, which requires sign-off by the approver. The issuer can distribute tokens directly to users with no further approvals required. Users do not need approvals to burn their own tokens.

  • Minter and notary roles are required.
  • The burner role is not required. Users can burn their own tokens by using the burnTokens API.
  • The Issuer uses the transferTokens method to transfer tokens to a user directly.
  • The only hold-based transfer is between the creator and the issuer.
The following table summarizes the actors in this scenario.
Actor Role Description
Administrator Token Admin Initializes the system, assigns the minter and notary roles.
Creator Minter Requests minting and initiates hold-based transfer to the issuer.
Approver Notary Approves mint requests and completes hold transfers.
Issuer none Receives tokens from the creator and distributes them directly to users.
User none Receives tokens directly from the issuer. Users can burn their tokens with no approval required.
The administrator completes the following steps to initialize the system.
  1. Initialize the deposit token system by using the initializeDepositToken API.
  2. Register organizations by using the registerOrg API.
  3. Create accounts by using the createAccount API.
  4. Associate the token to accounts by using the associateTokenToAccount API.
  5. Assign the minter role to the creator and the notary role to the approver by using the addRole API.
After the system is initialized, a typical process flow follows these basic steps.
  1. Mint deposit tokens.
    1. The token creator uses the requestMint API to submit a request to mint deposit tokens.
    2. The approver uses the approveMint API to review and approve the request to mint deposit tokens. The deposit tokens are credited to the creator's account. Alternately, the approver can use rejectMint API to deny the request.
  2. Transfer deposit tokens to the issuer.
    1. The creator uses the holdTokens API to request transfer of the tokens to the issuer.
    2. The approver uses the executeHoldTokens API to validate and approve the transfer request. The deposit tokens are transferred to the issuer's account. Alternately, the approver can use the releaseHold API to reject the transfer.
  3. Issue tokens to users.
    • The issuer uses the transferTokens API to a user. The deposit tokens are credit to the user's account.
  4. Burn tokens.
    • User can use the burnTokens API to redeem their deposit tokens.
  5. Verify token balance.
    • Users can use the getAccountBalance API to get the total number of deposit tokens they hold.