Tokenization Engine

Tokenization Engine CERT Integration Guide

Summary

zerohashʼs tokenization engine facilitates the creation, movement, and redemption of digital assets
representing real-world assets (RWAs). It also offers flexible administrative tools and controls to manage these assets at-scale.

This document outlines the steps for a platform to interact with zerohashʼs tokenization engine once a
platform is onboarded to zerohashʼs Certification (“CERTˮ) platform.

Supported Token Types

For demonstration purposes, the tokenization engine is configured to create an ERC1155 multi-token that supports both Fungible Token (USDFI) and Non-Fungible tokens (LOANFI).

Token symbols are used throughout this guide with “.ETH” appended which specifies the Ethereum L1 network. zerohash supports 10 EVM networks for seamless cross-chain deployments.

Smart contracts and sample transactions are shown on the Ethereum Sepolia test network which is the test network zerohash’s Certification (CERT) environment utilizes.

USDFI (Fungible 1:1 USD Stablecoin)

  • This token is configured to behave like an ERC-20 token with a precision of 6 decimals.
  • This token can be minted multiple times and with configurable amounts.
  • The token ID to identify this specific token is 0.

LOANFI (Non-Fungible Tokenized Loan)

  • Every token minted has a unique identifier (token ID) where the Token ID must be > 0.
  • The token ID can be minted just once allowing this unique identifier to be linked to an off-chain loan ID.
  • For demonstration purposes, the amount is fixed with a value of 1.

Network Fee Abstraction

zerohash’s platform implements a configurable payor system that abstracts network fee payments.
This system allows platforms to specify (1) who pays for network fees, and (2) how they are paid (such as USD or in crypto) allowing products to be tailored to their products and customer base.

1:1 USD Stablecoin Fungible Token: USDFI

1. Mint USDFI tokens

After locking fiat, this call is used to mint a specified amount of stablecoin tokens to the receiver address, which can be an internal or external address.

POST https://api.cert.seedcx.net/token/mint

{ 
    "amount": "1.56", 
    "token_symbol": "USDFI.ETH", 
    "client_request_id": "22b6cbea-1c77-415f-b866-2987b0b869ab", 
    "participant_code": "SB5LRL", 
    "receiver": "0x45D9A0Ee3a917Eccd6182C030dC9f18897eCf79E" 
}

Response

{ 
    "token_request_id": "22b6cbea-1c77-415f-b866-2987b0b869ab", 
 }

Example on-chain transaction

2. Burn USDFI Tokens

The burn function is used to redeem the stablecoin tokens so that the fiat reserve can be sent to the holder.

POST https://api.cert.seedcx.net/token/burn

{ 
    "amount": "0.56", 
    "token_symbol": "USDFI.ETH", 
    "client_request_id": "33b6cbea-1c77-415f-b866-2987b0b869cc", 
    "participant_code": "SB5LRL", 
    "owner": "0x45D9A0Ee3a917Eccd6182C030dC9f18897eCf79E" 
}

Response

{ 
    "token_request_id": "33b6cbea-1c77-415f-b866-2987b0b869cc", 
}

Example on-chain transaction

3. GET USDFI Token Requests

You can get the mint/burn token requests initiated in the previous steps to get the latest updates from the tokenization request.

GET https://api.cert.seedcx.net/token/22b6cbea-1c77-415f-b866-2987b0b869ab

Response

{ 
    "message": { 
        "token_request_id": "22b6cbea-1c77-415f-b866-2987b0b869ab", 
        "token_symbol": "USDFI.ETH", 
        "token_id": "", 
        "action": "MINT", 
        "owner": "0x45D9A0Ee3a917Eccd6182C030dC9f18897eCf79E", 
        "amount": "1.56", 
        "platform_code": "NAXJ2C", 
        "participant_code": "SB5LRL", 
        "status": "COMPLETED", 
        "tx_hash": "0x8ab7bedd266aee63b5493be7b06aefa1ae4df11ade278c95a13adc1854663558", 
        "network_fee": "0.000099" 
    } 
}

Non-Fungible Token: LOANFI

1. Mint LOANFI NFT

Each LOANFI token minted is unique and contains a unique identifier to represent a singular loan that can be tied to an off-chain asset.

POST https://api.dev.seedcx.net/token/mint

{ 
    "amount": "1", 
    "token_symbol": "LOANFI.ETH", 
    "token_id": "1", 
    "client_request_id": "21532ea2-c59d-4ba9-90e7-f51302f43937", 
    "participant_code": "SB5LRL", 
    "receiver": "0x45D9A0Ee3a917Eccd6182C030dC9f18897eCf79E" 
}

Response

{ 
    "token_request_id": "21532ea2-c59d-4ba9-90e7-f51302f43937", 
}

Example on-chain transaction

2. Burn/Redeem LOANFI NFT

Redeeming a LOANFI token burns this unique token so that the Token ID tied to an asset can be managed off-chain.

POST https://api.dev.seedcx.net/token/burn

{ 
    "amount": "1", 
    "token_symbol": "LOANFI.ETH", 
    "token_id": "2", 
    "client_request_id": "85d45c34-7fb9-448f-91b0-a2b248e22518", 
    "participant_code": "SB5LRL", 
    "owner": "0x45D9A0Ee3a917Eccd6182C030dC9f18897eCf79E" 
}

Response

{ 
    "token_request_id": "85d45c34-7fb9-448f-91b0-a2b248e22518", 
}

Example on-chain transaction

3. GET LOANFI Token Requests

You can get the mint/burn token requests initiated in the previous steps to get the latest updates from the tokenization request.

GET https://api.cert.seedcx.net/token/85d45c34-7fb9-448f-91b0-a2b248e22518

Response

{ 
    "message": { 
        "token_request_id": "85d45c34-7fb9-448f-91b0-a2b248e22518", 
        "token_symbol": "LOANFI.ETH", 
        "token_id": "2", 
        "action": "BURN", 
        "owner": "0x45D9A0Ee3a917Eccd6182C030dC9f18897eCf79E", 
        "amount": "1", 
        "platform_code": "NAXJ2C", 
        "participant_code": "SB5LRL", 
        "status": "COMPLETED", 
        "tx_hash": "0x09c33fac347da8163a3de575d8f82ee0ab5cacd6a7885f707f9924451446ac96", 
        "network_fee": "0.000035" 
    } 
}

Economics

1. Commission

A smart contract commission mechanism referred to as “taxation” is implemented where a percentage of the fungible token transfers are sent to a specific address (taxAddress).

  • Tax BPS (Basis Points): A tax rate is defined in basis points (BPS), and the maximum allowed BPS is 5000 (50%).
  • Taxed Token (FT): Only transfers of the fungible token (id == 0) are subject to tax.

Transfer example with taxes:

2. Yield

Stablecoin yield can be simulated in the Certification environment by calling the mint function using the holding address. This simulates how yield could be airdropped to an address once the interest is deposited into the reserve account.

NFT yield such as a tokenized loan can be represented using different mechanisms including on-chain, off-chain, or some combination.

Off-chain
Minting creates an NFT (ERC-721/1155) that represents a unique loan (or portfolio) specified by the Token ID. The burning of this token represents a redemption where any price difference would be settled via an off-chain loan registry.

NFT token standards additionally allow the implementation of additional metadata, for instance off-chain loan terms, tenor, and even repayment history.

On-Chain
Incorporating native Ethereum standard ERC-4626 initializes an on-chain vault that can represent an asset such as a loan or loan pool. Investors deposit stablecoins (ERC-20) and receive a representative token that can be redeemed back for ERC-20 which may include a price differential at the time of redemption.

Administrative

The zerohash token contract includes configurable parameters that can be managed by the contract owner or an assigned administrator. Please note that these administrative functions are not currently exposed through a public API.

1. Configure Commission (“taxesˮ)

  • Tax Address: Designated recipient of the commission on fungible token (FT) transfers.
  • Tax Basis Points (BPS): Configurable up to a maximum of 5000 BPS (equivalent to 50%).
  • Default value is 5bps.

2. Freeze/Unfreeze

Ability to pause or unpause all token minting, burning and transfers, providing an emergency stop
mechanism.

3. URI Management

Capability to update the base URI used to resolve metadata for NFT token types.