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

86 lines
2.3 KiB
Solidity
Raw Normal View History

2020-12-12 15:53:42 +08:00
/*
Copyright 2020 DODO ZOO.
SPDX-License-Identifier: Apache-2.0
*/
pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;
import {CPVesting} from "./CPVesting.sol";
import {IERC20} from "../../intf/IERC20.sol";
import {IPermissionManager} from "../../lib/PermissionManager.sol";
import {IFeeRateModel} from "../../lib/FeeRateModel.sol";
import {SafeMath} from "../../lib/SafeMath.sol";
contract CP is CPVesting {
using SafeMath for uint256;
function init(
address[] calldata addressList,
uint256[] calldata timeLine,
uint256[] calldata valueList
) external {
/*
Address List
0. owner
1. maintainer
2. baseToken
3. quoteToken
4. permissionManager
5. feeRateModel
6. poolFactory
*/
2020-12-13 17:47:47 +08:00
require(addressList.length == 7, "LIST_LENGTH_WRONG");
2020-12-12 15:53:42 +08:00
initOwner(addressList[0]);
_MAINTAINER_ = addressList[1];
_BASE_TOKEN_ = IERC20(addressList[2]);
_QUOTE_TOKEN_ = IERC20(addressList[3]);
_BIDDER_PERMISSION_ = IPermissionManager(addressList[4]);
_MT_FEE_RATE_MODEL_ = IFeeRateModel(addressList[5]);
_POOL_FACTORY_ = addressList[6];
/*
Time Line
0. phase bid starttime
1. phase bid duration
2. phase calm duration
3. freeze duration
*/
2020-12-13 17:47:47 +08:00
require(timeLine.length == 4, "LIST_LENGTH_WRONG");
2020-12-12 15:53:42 +08:00
_PHASE_BID_STARTTIME_ = timeLine[0];
_PHASE_BID_ENDTIME_ = _PHASE_BID_STARTTIME_.add(timeLine[1]);
_PHASE_CALM_ENDTIME_ = _PHASE_BID_ENDTIME_.add(timeLine[2]);
_FREEZE_DURATION_ = timeLine[3];
2020-12-13 17:47:47 +08:00
require(block.timestamp <= _PHASE_BID_STARTTIME_, "TIMELINE_WRONG");
2020-12-12 15:53:42 +08:00
/*
Value List
0. pool quote cap
2020-12-13 17:47:47 +08:00
1. owner quote ratio
2. k
3. i
2020-12-12 15:53:42 +08:00
*/
2020-12-13 17:47:47 +08:00
require(valueList.length == 4, "LIST_LENGTH_WRONG");
2020-12-12 15:53:42 +08:00
_POOL_QUOTE_CAP_ = valueList[0];
2020-12-13 17:47:47 +08:00
_OWNER_QUOTE_RATIO_ = valueList[1];
2020-12-12 15:53:42 +08:00
_K_ = valueList[2];
_I_ = valueList[3];
2020-12-13 17:47:47 +08:00
require(_I_ > 0 && _I_ <= 10**36, "I_VALUE_WRONG");
require(_K_ <= 10**18, "K_VALUE_WRONG");
require(_OWNER_QUOTE_RATIO_ <= 10**18, "OWNER_RATIO_WRONG");
2020-12-12 15:53:42 +08:00
_TOTAL_BASE_ = _BASE_TOKEN_.balanceOf(address(this));
}
}