Synthetic tokens are collateral-backed tokens whose value fluctuates depending on the tokens’ reference index. Synthetic tokens blend features of prediction markets, futures markets, and collateralized loans.
Some examples of synthetic tokens include:
synthetic real-world assets (eg: gold or Tesla stock price)
synthetic cross-chain cryptoassets
tracking tokens for various non-tradable indices
Some of the most creative ideas for synthetic tokens fall in the last category. Check out our Slack channel #tokenideas for more project ideas like:
tokens that track the future usage of DeFi projects (e.g. assets locked in Uniswap)
tokens that track the number of downloads of a Chrome extension (e.g. Metamask)
tokens that track the success of trade ideas on r/WallStreetBets
“Priceless” synthetic tokens are synthetic tokens that are securely collateralized without an on-chain price feed. These tokens are designed with mechanisms to incentivize token sponsors (those who create synthetic tokens) to properly collateralize their positions. These mechanisms include a liquidation and dispute process that allows token holders to be rewarded for identifying improperly collateralized token sponsor positions. The dispute process relies on an oracle, the UMA DVM, to settle disputes regarding liquidations.
For more details on how a “priceless” framework can be applied more generally to other types of financial contract templates on the blockchain, check out this blog post.
To launch a new type of synthetic token for which an existing market does not yet exist, that synthetic token’s smart contract must first be parameterized and deployed. Anyone can parameterize and deploy this contract.
This smart contract can be deployed using UMA’s synthetic token contract template and defining key parameters. Some parameters to highlight are:
This tutorial will show you how to parameterize and deploy the smart contract for a new synthetic token from the command line.
After the contract is deployed, anyone can interact with the contract to create synthetic tokens. These actors are called “token sponsors”, since they sponsor the creation of synthetic tokens.
Token sponsors deposit collateral into the contract to collateralize synthetic tokens, which they can then withdraw and trade with others. The first token sponsor to create synthetic tokens is able to immediately withdraw synthetic tokens from the contract. Any following token sponsors who wish to create synthetic tokens can do so, but must collateralize their positions by at least as much as the system’s global collateralization ratio. This ensures that all newly created tokens sponsor positions are correctly collateralized upon initialization.
The global collateralization ratio (GCR) is the average collateralization ratio among all token sponsor positions that have not yet been liquidated nor have any outstanding withdrawal requests. Requiring new token sponsors to collateralize their positions by as much as the GCR provides some assurances that so long as those token sponsors collateralized below the GCR have not yet been liquidated, those above the GCR need not be at risk of liquidation.
This tutorial will show you how to mint tokens from the command line after having parameterized and deployed the synthetic token’s smart contract.
During the lifetime of the synthetic token, token sponsors may want to deposit additional collateral to their positions so as to avoid liquidation. Sponsors may also want to withdraw excess collateral if the position has moved in their favor.
Token sponsors can deposit additional collateral at any time.
Token sponsors can withdraw excess collateral in one of two ways: a “fast” withdrawal or “slow” withdrawal.
A “fast” withdrawal allows a token sponsor to withdraw excess collateral from his position immediately, so long as the resulting position is collateralized by at least as much as the global collateralization ratio (GCR). Requiring withdrawals to result in collateralization at least as high as the GCR provides some assurances that so long as the other token sponsors collateralized below the GCR have not yet been liquidated, this token sponsor should not be liquidated after making this withdrawal.
If the token sponsor wishes to withdraw collateral from his position that would bring his collateralization below the global collateralization ratio, he can do so via a “slow” withdrawal. Because withdrawing this amount of collateral could potentially jeopardize the solvency of the fungible synthetic tokens, this “slow”, 2-part, withdrawal process allows other token holders to flag if a withdrawal would render the token sponsor insolvent.
In a “slow” withdrawal, there are two parts: The token sponsor submits a withdrawal request to the contract indicating the amount of collateral he wishes to withdraw and the timestamp of the request.
During this period, any token holder can liquidate the token sponsor’s position if they believe a withdrawal of the amount indicated in the withdrawal request would bring the token sponsor’s collateralization below the “collateralization requirement” at the time of liquidation. If the “withdrawal liveness period” passes without a token holder liquidating the token sponsor, the token sponsor may withdraw collateral from his position up to the amount requested.
At any time, a token holder may liquidate a token sponsor’s position. Liquidations happen immediately without calling the oracle. Anyone may dispute a liquidation within the “liquidation liveness period”.
To liquidate a token sponsor position, a token holder submits tokens to the contract. The tokens are submitted for 3 purposes: to indicate the size of the position to be liquidated, to close the token sponsor’s position, and to post a bond attesting to the liquidator’s belief that the token sponsor’s position should be liquidated. The liquidator will lose a portion of this bond if their liquidation is disputed and found to be invalid.
Here are three ways in which a liquidation can be resolved:
No one disputes the liquidation during the liquidation liveness period. After the liquidation liveness period ends, collateral deposited by the token sponsor is returned to the liquidator, proportional to the number of synthetic tokens the liquidator has submitted in liquidation. As a numerical example, assume a token sponsor has deposited 150 DAI of collateral to create 100 synthetic tokens, which they then sold to the market. Later, a liquidator submits 30 synthetic tokens to liquidate the token sponsor. If no one disputes the liquidation, the liquidator will receive 30% of the token sponsor’s collateral, or 45 DAI.
Someone disputes the liquidation during the liquidation liveness period. To do this, the disputer must post a bond. Once the dispute is raised, a price request is made to the UMA DVM. This price request will return the value of the price identifier at the time of the liquidation, which will determine if the token sponsor was undercollateralized and resolve the "dispute".
If the price returned by the DVM indicates that the token sponsor was undercollateralized at the time of the liquidation:
The disputer will lose their bond.
The liquidator will receive all of the token sponsor position’s collateral.
The token sponsor will not receive any of the collateral they have previously deposited into the position.
If the price returned by the DVM indicates that the token sponsor was not undercollateralized at the time of the liquidation:
The disputer will receive back their dispute bond and a dispute reward.
The liquidator will receive collateral equalling: (i) the value of the token at the time of liquidation as determined by the DVM, less (ii) the dispute reward paid to the disputer, less (iii) the improper liquidation reward paid to the original token sponsor.
The token sponsor will receive any remaining collateral and a reward for the improper liquidation.
Before the expiration date of the token, tokens may only be redeemed by token sponsors. A token sponsor redeems a token by submitting it to the contract to be burned and receiving collateral proportional to the total amount of collateral that the token sponsor has deposited to the contract.
Consider the following example. Assume a token sponsor has deposited 150 DAI of collateral to create 100 synthetic tokens, which they then sold to the market. Later, the token sponsor repurchases 30 tokens and decides to redeem them. These 30 tokens represent 30% of the token sponsors original position, so by redeeming them the token sponsor receives 30% of their initial collateral, or 45 DAI (since 30% * 150 = 45).
After the expiration timestamp for the synthetic tokens, anyone may settle the contract. This calls on the UMA DVM to return the value of the token’s price identifier at the expiration timestamp.
After this value is returned to the contract and the contract is settled, any token holder can redeem the tokens against the contract. Redemption of the tokens returns the token holder collateral equal to the price identifier value returned by the UMA DVM.