first commit
This commit is contained in:
106
contracts/impl/Storage.sol
Normal file
106
contracts/impl/Storage.sol
Normal file
@@ -0,0 +1,106 @@
|
||||
/*
|
||||
|
||||
Copyright 2020 DODO ZOO.
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
*/
|
||||
|
||||
pragma solidity 0.6.9;
|
||||
pragma experimental ABIEncoderV2;
|
||||
|
||||
import {Ownable} from "../lib/Ownable.sol";
|
||||
import {SafeMath} from "../lib/SafeMath.sol";
|
||||
import {DecimalMath} from "../lib/DecimalMath.sol";
|
||||
import {ReentrancyGuard} from "../lib/ReentrancyGuard.sol";
|
||||
import {IOracle} from "../intf/IOracle.sol";
|
||||
import {IDODOLpToken} from "../intf/IDODOLpToken.sol";
|
||||
import {Types} from "../lib/Types.sol";
|
||||
|
||||
/**
|
||||
* @title Storage
|
||||
* @author DODO Breeder
|
||||
*
|
||||
* @notice Local Variables
|
||||
*/
|
||||
contract Storage is Ownable, ReentrancyGuard {
|
||||
using SafeMath for uint256;
|
||||
|
||||
// ============ Variables for Control ============
|
||||
|
||||
bool internal _INITIALIZED_;
|
||||
bool public _CLOSED_;
|
||||
bool public _DEPOSIT_QUOTE_ALLOWED_;
|
||||
bool public _DEPOSIT_BASE_ALLOWED_;
|
||||
bool public _TRADE_ALLOWED_;
|
||||
uint256 public _GAS_PRICE_LIMIT_;
|
||||
|
||||
// ============ Core Address ============
|
||||
|
||||
address public _SUPERVISOR_; // could freeze system in emergency
|
||||
address public _MAINTAINER_; // collect maintainer fee to buy food for DODO
|
||||
|
||||
address public _BASE_TOKEN_;
|
||||
address public _QUOTE_TOKEN_;
|
||||
address public _ORACLE_;
|
||||
|
||||
// ============ Variables for PMM Algorithm ============
|
||||
|
||||
uint256 public _LP_FEE_RATE_;
|
||||
uint256 public _MT_FEE_RATE_;
|
||||
uint256 public _K_;
|
||||
|
||||
Types.RStatus public _R_STATUS_;
|
||||
uint256 public _TARGET_BASE_TOKEN_AMOUNT_;
|
||||
uint256 public _TARGET_QUOTE_TOKEN_AMOUNT_;
|
||||
uint256 public _BASE_BALANCE_;
|
||||
uint256 public _QUOTE_BALANCE_;
|
||||
|
||||
address public _BASE_CAPITAL_TOKEN_;
|
||||
address public _QUOTE_CAPITAL_TOKEN_;
|
||||
|
||||
// ============ Variables for Final Settlement ============
|
||||
|
||||
uint256 public _BASE_CAPITAL_RECEIVE_QUOTE_;
|
||||
uint256 public _QUOTE_CAPITAL_RECEIVE_BASE_;
|
||||
mapping(address => bool) public _CLAIMED_;
|
||||
|
||||
// ============ Modifiers ============
|
||||
|
||||
modifier onlySupervisorOrOwner() {
|
||||
require(msg.sender == _SUPERVISOR_ || msg.sender == _OWNER_, "NOT_SUPERVISOR_OR_OWNER");
|
||||
_;
|
||||
}
|
||||
|
||||
modifier notClosed() {
|
||||
require(!_CLOSED_, "DODO_IS_CLOSED");
|
||||
_;
|
||||
}
|
||||
|
||||
// ============ Helper Functions ============
|
||||
|
||||
function _checkDODOParameters() internal view returns (uint256) {
|
||||
require(_K_ < DecimalMath.ONE, "K_MUST_BE_LESS_THAN_ONE");
|
||||
require(_K_ > 0, "K_MUST_BE_GREATER_THAN_ZERO");
|
||||
require(_LP_FEE_RATE_.add(_MT_FEE_RATE_) < DecimalMath.ONE, "FEE_MUST_BE_LESS_THAN_ONE");
|
||||
}
|
||||
|
||||
function getOraclePrice() public view returns (uint256) {
|
||||
return IOracle(_ORACLE_).getPrice();
|
||||
}
|
||||
|
||||
function getBaseCapitalBalanceOf(address lp) public view returns (uint256) {
|
||||
return IDODOLpToken(_BASE_CAPITAL_TOKEN_).balanceOf(lp);
|
||||
}
|
||||
|
||||
function getTotalBaseCapital() public view returns (uint256) {
|
||||
return IDODOLpToken(_BASE_CAPITAL_TOKEN_).totalSupply();
|
||||
}
|
||||
|
||||
function getQuoteCapitalBalanceOf(address lp) public view returns (uint256) {
|
||||
return IDODOLpToken(_QUOTE_CAPITAL_TOKEN_).balanceOf(lp);
|
||||
}
|
||||
|
||||
function getTotalQuoteCapital() public view returns (uint256) {
|
||||
return IDODOLpToken(_QUOTE_CAPITAL_TOKEN_).totalSupply();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user