Skip to main content

Implementation

Meritic is building a platform and marketplace for creators and projects to issue four types of credit using ERC-3525 SFT standard.

  • Time credit: value represents units of time, redeemable for service.
  • Cash credit: value represents money, redeemable for purchases or service.
  • Items credit: value represents quantity of an item that can be redeemed.
  • Priority credit: value represents position in a waitlist or queue.

In our implementation, a service token holds one of these four types of credit and is backed by a stablecoin asset. A creator or project configures and deploys an ERC-3525-based service contract to the blockchain. The project also provides at least one blockchain wallet address for accruing revenue from credit redemptions and lists their service offerings on a Web3 marketplace. A customer buys credit using a stablecoin like USDC (or cryptocurrency which we swap for stablecoin). The project’s smart contract holds the stablecoin and issues the credit token. As the customer redeems the token, the smart contract transfers the stablecoin to the project revenue wallet.

The figure below explains the process of buying a service token from a project. We use USDC as the stablecoin for this illustration. First, a customer, Jack, purchase Project XYZ’s service token (Token #3 in the diagram) with a minimum bid price of 100 USDC. Jack agrees to pay the bid price plus commission to the marketplace and signs the transaction, giving approval for the USDC smart contract to transfer his funds to Meritic's marketplace wallet. In Step 2, Meritic deducts its commission and transfers the funds to Meritic's Wrapped USDC contract. This Wrapped USDC contract facilitates pooling of token underlying assets, USDC in this case, for each service contract. Next, Meritic sends a request to Project XYZ’s service contract to mint Token #3 with credit value 100 and set Jack as owner. The service contract starts minting Token #3, which requires it to ask the Wrapped USDC contract to allocate an equivalent amount of USDC value to XYZ's asset pool. In Step 5, the Wrapped USDC contract transfers the 100 USDC, which it received from Meritic's marketplace wallet, to XYZ's USDC pool. Once this transfer completes, Step 6 (not shown) requires XYZ contract to mark Jack as owner of Token #3, concluding the sale transaction. It is important to note that each service contract address holds its own token-holders underlying USDC assets in a pool. Whenever Jack spend's a portion of his token credit, underlying USDC value is deducted from XYZ's pool and transferred to the project’s revenue wallet.

The Time credit contract requires a specified unit of time (hours, days, months, etc) as the displayed time unit for tokens minted on the contract. The contract standardizes time credit to units of seconcds though; therefore, some unit conversion required to display credit value the appropriate time units.