📃USDO Smart Contract
USDO Smart Contract
Smart contract implementation of the USDO token, allowing for decentralized minting/burning of USDO tokens, along with holding the underlying hyper-collateralized asset, and allowing for collateral staking. Implements OpenZeppelin’s ERC-20, Ownable, and ReentrancyGuard.
USDO Token Address
Note that this is the only valid USDO token address: do not use any others as they are likely scams.
Official USDO Token Address:
0xD95086Fe465a2DC59F989B927472a901E2e05ff2
USDO is currently only available on Dogechain.
Smart Contract Functionality
Modifier _requiresOverCollateralization()
Given operation will cease to function if the current staking pool is not overcollateralized.
mint(uint256 n) _requiresOverCollateralization
Accepts n amount of collateral/underlying tokens from the caller, and mints the equivalent token amount in USDO. Limited to minting 10% of the total USDO supply per heartbeat (or, a maximum of 3,000 USDO per heartbeat in the event of the current supply being under 30,000 USDO).
burn(uint256 n)
Burns n amount of USDO from the caller, returning the equivalent token amount in the underlying token asset.
stake(uint256 n)
Stakes n amount of collateral/underlying tokens from the caller, and issues internal shares to distribute any owed fees proportionally to the caller.
unstake(uint256 n) _requiresOverCollateralization
Unstakes n amount of collateral/underlying tokens from the caller’s shares, up to a maximum of 10% of the total collateral/underlying tokens per heartbeat.
heartbeat(uint price_of_token) Ownable
Heartbeat command, updating the current price of the underlying asset per token - and resetting any heartbeat-limited functionality per cycle.
setHeartbeatTimer(uint seconds_between_beats) Ownable
Sets the maximum acceptable time between each heartbeat, not exceeding 15 minutes.
setHeartbeatRewardAddr(address addr) Ownable
Sets the address to be rewarded with a fee share in the event of a heartbeat event being received. In the event of a decentralized smart contract being launched which allows for users to submit queries to any given decentralized pricing oracles, this reward fee should be received by said contract, and then distributed directly to said user.
Last updated