Rebasing & Smart Contracts

If you are using a multi-sig wallet or another smart contract that wishes to participate in the rebasing aspect of OUSD you must call OUSD’srebaseOptIn() function. This only applies to smart contracts as standard EOA wallets are enrolled automatically.

Multi-sig wallets or other smart contracts must callrebaseOptIn()to earn yield.

By default, OUSD that is held on smart contracts will not participate in the rebasing nature of the token and will forfeit any yield unless the smart contract explicitly opts-in. This increases the composability of OUSD within DeFi as many protocols weren't designed with the expectation that balances might change. To other DeFi protocols, OUSD works just like any other normal, well-behaved ERC-20 until you ask it to change. This is a particularly useful attribute for automated market makers (AMM’s) like Uniswap which break when the number of tokens they are holding changes unexpectedly.

Smart contracts must explicitly opt-in to receiving yield via the rebasing mechanism. This fixes the issue with the expanding supply on AMM’s while still allowing multi-sig wallets and other smart contracts the opportunity to still participate and earn yield.

If you are deploying a contract and intend to callrebaseOptIn()to earn yield you cannot call it from the contract's constructor. The contract must be deployed before it can be called.

If you are using a multi-sig wallet like Gnosis Wallet or Gnosis Safe, you will need the proxy contract address for OUSD and the corresponding ABI. Once you add those, you will be able to call the rebaseOptIn() function to opt into receiving yield via rebasing orrebaseOptOut() to turn it off again.