Centralized exchanges will play an important role in helping us reach our goal of making OUSD ubiquitous. We are happy to help any exchange that wants to make OUSD available to its users. We believe OUSD will make a great addition to any exchange that wants to offer both a superior stablecoin and a new high-yield opportunity for their users.
These docs are a great starting point for understanding how OUSD works. Here are some important questions for exchanges that wish to integrate OUSD to consider:
Do you want to participate in the yield that is generated?
We're assuming the answer will be yes and we highly encourage this as well! However, there may be some instances where you would prefer to move fast and list OUSD without participating in the rebasing nature of OUSD since it's the fastest and simplest integration. For exchanges that want to list OUSD, but are strapped for engineering resources, you may want to launch the non-rebasing version first while your engineers make whatever changes are necessary. To make OUSD non-rebasing you can call
rebaseOptOut() from each EOA wallet that holds OUSD, or do nothing if you are storing OUSD on smart contracts. Non-rebasing OUSD behaves just like any other ERC-20 token.
Are you storing customer balances on smart contracts (ie. multi-sigs) or EOA wallets?
Any smart contract that is holding OUSD needs to manually opt-in to receive the yield by calling
rebaseOptIn(). This is due to the elastic supply and the rebasing nature of OUSD. Many exchanges sweep customer funds into a multi-sig wallet for cold storage. If you do this, you'll want to make sure that you opt-in to rebasing so that you are always earning.
Are you caching user balances?
OUSD dynamically updates the value returned by the
balanceOf() function on our ERC20 contract. Users balances will update at unpredictable times as new yield is generated by the protocol. As long as you aren't caching this value, users will always see the correct amount of OUSD that they are holding.
Are you comingling user funds?
If you are comingling funds, you'll want to be sure that each user gets their pro-rata amount of the yield that is generated by the protocol. Probably the easiest way to do this is to track each user's balance as a percentage of a pool instead of as a fixed amount.
What is your plan for liquidity?
OUSD can be minted or redeemed at any time using the Origin Dollar DApp, or directly from our smart contracts. If you are planning on providing liquidity yourself, you should be aware that the exact amount of OUSD you will receive in exchange for your USDT, USDC, or DAI depends on the current exchange rates as determined by the oracles. If you are planning on redeeming OUSD for the underlying stablecoins, you should know there is a 0.5% exit fee and OUSD will return a basket of stable coins in proportion to the backing stablecoins in the pool. We encourage exchanges to leverage other pools of liquidity, such as on Uniswap or Curve to avoid those fees. If possible, mints or redeems should be done in large batches for maximum efficiency.