Files
dodo-contractV2/contracts/CrowdPooling/impl/CPStorage.sol

113 lines
2.9 KiB
Solidity
Raw Normal View History

2020-12-06 11:25:03 +08:00
/*
Copyright 2020 DODO ZOO.
SPDX-License-Identifier: Apache-2.0
*/
pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;
import {InitializableOwnable} from "../../lib/InitializableOwnable.sol";
import {ReentrancyGuard} from "../../lib/ReentrancyGuard.sol";
2020-12-08 18:13:45 +08:00
import {IPermissionManager} from "../../lib/PermissionManager.sol";
2020-12-10 19:46:06 +08:00
import {IFeeRateModel} from "../../lib/FeeRateModel.sol";
2020-12-06 11:25:03 +08:00
import {SafeMath} from "../../lib/SafeMath.sol";
import {IERC20} from "../../intf/IERC20.sol";
2020-12-12 15:53:42 +08:00
contract CPStorage is InitializableOwnable, ReentrancyGuard {
2020-12-06 11:25:03 +08:00
using SafeMath for uint256;
// ============ Constant ============
2020-12-13 17:47:47 +08:00
uint256 internal constant _SETTLEMENT_EXPIRE_ = 86400 * 7;
2020-12-30 17:05:31 +08:00
uint256 internal constant _SETTEL_FUND_ = 200 finney;
2020-12-08 19:52:32 +08:00
2020-12-06 11:25:03 +08:00
// ============ Timeline ============
2020-12-13 17:47:47 +08:00
uint256 public _PHASE_BID_STARTTIME_;
uint256 public _PHASE_BID_ENDTIME_;
uint256 public _PHASE_CALM_ENDTIME_;
uint256 public _SETTLED_TIME_;
bool public _SETTLED_;
2020-12-06 11:25:03 +08:00
// ============ Core Address ============
IERC20 public _BASE_TOKEN_;
IERC20 public _QUOTE_TOKEN_;
// ============ Distribution Parameters ============
2020-12-13 17:47:47 +08:00
uint256 public _TOTAL_BASE_;
uint256 public _POOL_QUOTE_CAP_;
2020-12-11 22:52:00 +08:00
// ============ Settlement ============
2020-12-06 11:25:03 +08:00
uint256 public _QUOTE_RESERVE_;
2020-12-11 22:52:00 +08:00
uint256 public _UNUSED_BASE_;
uint256 public _UNUSED_QUOTE_;
uint256 public _TOTAL_SHARES_;
mapping(address => uint256) internal _SHARES_;
2020-12-18 16:08:02 +08:00
mapping(address => bool) internal _CLAIMED_;
2020-12-11 22:52:00 +08:00
2020-12-13 17:47:47 +08:00
address public _POOL_FACTORY_;
address public _POOL_;
uint256 public _AVG_SETTLED_PRICE_;
2020-12-10 19:46:06 +08:00
// ============ Advanced Control ============
address public _MAINTAINER_;
IFeeRateModel public _MT_FEE_RATE_MODEL_;
2020-12-08 18:13:45 +08:00
IPermissionManager public _BIDDER_PERMISSION_;
2020-12-06 11:25:03 +08:00
// ============ PMM Parameters ============
uint256 public _K_;
uint256 public _I_;
2020-12-18 16:08:02 +08:00
// ============ LP Token Vesting ============
uint256 public _TOTAL_LP_AMOUNT_;
2020-12-18 18:31:45 +08:00
uint256 public _FREEZE_DURATION_;
2020-12-18 16:08:02 +08:00
uint256 public _VESTING_DURATION_;
uint256 public _CLIFF_RATE_;
2020-12-06 11:25:03 +08:00
// ============ Modifiers ============
modifier phaseBid() {
require(
2020-12-12 15:53:42 +08:00
block.timestamp >= _PHASE_BID_STARTTIME_ && block.timestamp < _PHASE_BID_ENDTIME_,
2020-12-06 11:25:03 +08:00
"NOT_PHASE_BID"
);
_;
}
modifier phaseCalm() {
require(
2020-12-12 15:53:42 +08:00
block.timestamp >= _PHASE_BID_ENDTIME_ && block.timestamp < _PHASE_CALM_ENDTIME_,
2020-12-06 11:25:03 +08:00
"NOT_PHASE_CALM"
);
_;
}
modifier phaseBidOrCalm() {
require(
2020-12-12 15:53:42 +08:00
block.timestamp >= _PHASE_BID_STARTTIME_ && block.timestamp < _PHASE_CALM_ENDTIME_,
2020-12-06 11:25:03 +08:00
"NOT_PHASE_BID_OR_CALM"
);
_;
}
modifier phaseSettlement() {
2020-12-12 15:53:42 +08:00
require(block.timestamp >= _PHASE_CALM_ENDTIME_, "NOT_PHASE_EXE");
2020-12-06 11:25:03 +08:00
_;
}
modifier phaseVesting() {
require(_SETTLED_, "NOT_VESTING");
_;
}
}