Files
dodo-contractV2/contracts/PoolKickstarter/impl/CA.sol
2020-12-11 22:52:00 +08:00

99 lines
2.5 KiB
Solidity

/*
Copyright 2020 DODO ZOO.
SPDX-License-Identifier: Apache-2.0
*/
pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;
import {CAVesting} from "./CAVesting.sol";
import {IERC20} from "../../intf/IERC20.sol";
import {IPermissionManager} from "../../lib/PermissionManager.sol";
import {IFeeRateModel} from "../../lib/FeeRateModel.sol";
contract CA is CAVesting {
function init(
address[] calldata addressList,
uint256[] calldata timeLine,
uint256[] calldata valueList,
bytes calldata basePayBackData,
bytes calldata quotePayBackData
) external {
/*
Address List
0. owner
1. maintainer
2. baseToken
3. quoteToken
4. basePayBack
5. quotePayBack
6. permissionManager
7. feeRateModel
*/
initOwner(addressList[0]);
_MAINTAINER_ = addressList[1];
_BASE_TOKEN_ = IERC20(addressList[2]);
_QUOTE_TOKEN_ = IERC20(addressList[3]);
_BASE_PAY_BACK_ = addressList[4];
_QUOTE_PAY_BACK_ = addressList[5];
_BIDDER_PERMISSION_ = IPermissionManager(addressList[6]);
_MT_FEE_RATE_MODEL_ = IFeeRateModel(addressList[7]);
/*
Time Line
0. phase bid starttime
1. phase bid endtime
2. phase calm endtime
3. start vesting time
4. vesting duration
*/
require(
block.timestamp <= timeLine[0] &&
timeLine[0] <= timeLine[1] &&
timeLine[1] <= timeLine[2] &&
timeLine[2] <= timeLine[3],
"TIMELINE_WRONG"
);
_PHASE_BID_STARTTIME_ = timeLine[0];
_PHASE_BID_ENDTIME_ = timeLine[1];
_PHASE_CALM_ENDTIME_ = timeLine[2];
_START_VESTING_TIME_ = timeLine[3];
_VESTING_DURATION_ = timeLine[4];
/*
Value List
0. quote cap
1. cliff rate
2. k
3. i
4. owner ratio
*/
require(
valueList[1] <= 10**18 &&
valueList[2] <= 10**18 &&
valueList[3] > 0 &&
valueList[3] <= 10**36 &&
valueList[4] <= 10**18,
"VALUE_RANGE_WRONG"
);
_QUOTE_CAP_ = valueList[0];
_CLIFF_RATE_ = valueList[1];
_K_ = valueList[2];
_I_ = valueList[3];
_OWNER_RATIO_ = valueList[4];
// ============ External Call Data ============
_BASE_PAY_BACK_CALL_DATA_ = basePayBackData;
_QUOTE_PAY_BACK_CALL_DATA_ = quotePayBackData;
}
}