start fix ing
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
BOBA_CONFIG: {
|
BOBA_CONFIG: {
|
||||||
// DODOZoo: "",
|
// DODOZoo: "0x69f52AC40185A2A005D49114F0B77b7bA856F0a0",
|
||||||
// DODO: "",
|
// DODO: "0x3554a4c51945659E6d6c0F6f786545b56bdF9c39",
|
||||||
|
|
||||||
//TOKEN
|
//TOKEN
|
||||||
WETH: "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000",
|
WETH: "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000",
|
||||||
|
|||||||
@@ -143,17 +143,17 @@ contract FairFunding is InitializableOwnable, ReentrancyGuard {
|
|||||||
|
|
||||||
// ============ Timeline Control Functions ============
|
// ============ Timeline Control Functions ============
|
||||||
|
|
||||||
function isDepositOpen() public returns (bool) {
|
function isDepositOpen() public view returns (bool) {
|
||||||
return
|
return
|
||||||
block.timestamp >= _START_TIME_ &&
|
block.timestamp >= _START_TIME_ &&
|
||||||
block.timestamp < _START_TIME_.add(_BIDDING_DURATION_);
|
block.timestamp < _START_TIME_.add(_BIDDING_DURATION_);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isFundingEnd() public returns (bool) {
|
function isFundingEnd() public view returns (bool) {
|
||||||
return block.timestamp > _START_TIME_.add(_BIDDING_DURATION_).add(_COOLING_DURATION_);
|
return block.timestamp > _START_TIME_.add(_BIDDING_DURATION_).add(_COOLING_DURATION_);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isSettled() public returns (bool) {
|
function isSettled() public view returns (bool) {
|
||||||
return _FINAL_PRICE_ != 0;
|
return _FINAL_PRICE_ != 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,8 +49,8 @@ contract InstantFunding is InitializableOwnable, ReentrancyGuard {
|
|||||||
price = _END_PRICE_;
|
price = _END_PRICE_;
|
||||||
} else {
|
} else {
|
||||||
uint256 timePast = block.timestamp.sub(_START_TIME_);
|
uint256 timePast = block.timestamp.sub(_START_TIME_);
|
||||||
price = _START_PRICE_.mul(timePast).div(_DURATION_).add(
|
price = _START_PRICE_.mul(_DURATION_.sub(timePast)).div(_DURATION_).add(
|
||||||
_END_PRICE_.mul(_DURATION_.sub(timePast)).div(_DURATION_)
|
_END_PRICE_.mul(timePast).div(_DURATION_)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -68,7 +68,7 @@ contract InstantFunding is InitializableOwnable, ReentrancyGuard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ============ Funding Functions ============
|
// ============ Funding Functions ============
|
||||||
|
//TODO:强制转入,适配通缩代币
|
||||||
function depositToken(uint256 amount) external preventReentrant onlyOwner {
|
function depositToken(uint256 amount) external preventReentrant onlyOwner {
|
||||||
require(block.timestamp < _START_TIME_, "FUNDING_ALREADY_STARTED");
|
require(block.timestamp < _START_TIME_, "FUNDING_ALREADY_STARTED");
|
||||||
IERC20(_TOKEN_ADDRESS_).safeTransferFrom(msg.sender, address(this), amount);
|
IERC20(_TOKEN_ADDRESS_).safeTransferFrom(msg.sender, address(this), amount);
|
||||||
@@ -80,6 +80,7 @@ contract InstantFunding is InitializableOwnable, ReentrancyGuard {
|
|||||||
preventReentrant
|
preventReentrant
|
||||||
returns (uint256 newTokenAllocation)
|
returns (uint256 newTokenAllocation)
|
||||||
{
|
{
|
||||||
|
require(isDepositOpen(), "DEPOSIT_NOT_OPEN");
|
||||||
// input fund check
|
// input fund check
|
||||||
uint256 inputFund = IERC20(_FUNDS_ADDRESS_).balanceOf(address(this)).sub(_FUNDS_RESERVE_);
|
uint256 inputFund = IERC20(_FUNDS_ADDRESS_).balanceOf(address(this)).sub(_FUNDS_RESERVE_);
|
||||||
_FUNDS_RESERVE_ = _FUNDS_RESERVE_.add(inputFund);
|
_FUNDS_RESERVE_ = _FUNDS_RESERVE_.add(inputFund);
|
||||||
@@ -118,7 +119,20 @@ contract InstantFunding is InitializableOwnable, ReentrancyGuard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function withdrawUnallocatedToken(address to) external preventReentrant onlyOwner {
|
function withdrawUnallocatedToken(address to) external preventReentrant onlyOwner {
|
||||||
|
require(isFundingEnd(), "CAN_NOT_WITHDRAW");
|
||||||
IERC20(_TOKEN_ADDRESS_).safeTransfer(to, _TOTAL_TOKEN_AMOUNT_.sub(_TOTAL_ALLOCATED_TOKEN_));
|
IERC20(_TOKEN_ADDRESS_).safeTransfer(to, _TOTAL_TOKEN_AMOUNT_.sub(_TOTAL_ALLOCATED_TOKEN_));
|
||||||
_TOTAL_TOKEN_AMOUNT_ = _TOTAL_ALLOCATED_TOKEN_;
|
_TOTAL_TOKEN_AMOUNT_ = _TOTAL_ALLOCATED_TOKEN_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ============ Timeline Control Functions ============
|
||||||
|
|
||||||
|
function isDepositOpen() public view returns (bool) {
|
||||||
|
return
|
||||||
|
block.timestamp >= _START_TIME_ &&
|
||||||
|
block.timestamp < _START_TIME_.add(_DURATION_);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isFundingEnd() public view returns (bool) {
|
||||||
|
return block.timestamp > _START_TIME_.add(_DURATION_);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,10 +75,10 @@ contract Vesting is InstantFunding {
|
|||||||
_INITIAL_POOL_ = IDVMFactory(_POOL_FACTORY_).createDODOVendingMachine(
|
_INITIAL_POOL_ = IDVMFactory(_POOL_FACTORY_).createDODOVendingMachine(
|
||||||
_TOKEN_ADDRESS_,
|
_TOKEN_ADDRESS_,
|
||||||
_FUNDS_ADDRESS_,
|
_FUNDS_ADDRESS_,
|
||||||
3e15, // 0.3% lp feeRate
|
3e15, // 0.3% lp feeRate DIP3
|
||||||
1,
|
1,
|
||||||
DecimalMath.ONE,
|
DecimalMath.ONE,
|
||||||
true
|
true //TODO:是否开启
|
||||||
);
|
);
|
||||||
IERC20(_TOKEN_ADDRESS_).transferFrom(msg.sender, _INITIAL_POOL_, initialTokenAmount);
|
IERC20(_TOKEN_ADDRESS_).transferFrom(msg.sender, _INITIAL_POOL_, initialTokenAmount);
|
||||||
IERC20(_FUNDS_ADDRESS_).transfer(_INITIAL_POOL_, _INITIAL_FUND_LIQUIDITY_);
|
IERC20(_FUNDS_ADDRESS_).transfer(_INITIAL_POOL_, _INITIAL_FUND_LIQUIDITY_);
|
||||||
|
|||||||
Reference in New Issue
Block a user