📃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