diff --git a/config/boba-config.js b/config/boba-config.js index edfc636..5d7f9b8 100644 --- a/config/boba-config.js +++ b/config/boba-config.js @@ -1,7 +1,7 @@ module.exports = { BOBA_CONFIG: { - // DODOZoo: "", - // DODO: "", + // DODOZoo: "0x69f52AC40185A2A005D49114F0B77b7bA856F0a0", + // DODO: "0x3554a4c51945659E6d6c0F6f786545b56bdF9c39", //TOKEN WETH: "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000", diff --git a/contracts/DODOStarter/impl/FairFunding.sol b/contracts/DODOStarter/impl/FairFunding.sol index ae1778e..248cde7 100644 --- a/contracts/DODOStarter/impl/FairFunding.sol +++ b/contracts/DODOStarter/impl/FairFunding.sol @@ -143,17 +143,17 @@ contract FairFunding is InitializableOwnable, ReentrancyGuard { // ============ Timeline Control Functions ============ - function isDepositOpen() public returns (bool) { + function isDepositOpen() public view returns (bool) { return block.timestamp >= _START_TIME_ && 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_); } - function isSettled() public returns (bool) { + function isSettled() public view returns (bool) { return _FINAL_PRICE_ != 0; } } diff --git a/contracts/DODOStarter/impl/InstantFunding.sol b/contracts/DODOStarter/impl/InstantFunding.sol index 748b4b2..6d57954 100644 --- a/contracts/DODOStarter/impl/InstantFunding.sol +++ b/contracts/DODOStarter/impl/InstantFunding.sol @@ -49,8 +49,8 @@ contract InstantFunding is InitializableOwnable, ReentrancyGuard { price = _END_PRICE_; } else { uint256 timePast = block.timestamp.sub(_START_TIME_); - price = _START_PRICE_.mul(timePast).div(_DURATION_).add( - _END_PRICE_.mul(_DURATION_.sub(timePast)).div(_DURATION_) + price = _START_PRICE_.mul(_DURATION_.sub(timePast)).div(_DURATION_).add( + _END_PRICE_.mul(timePast).div(_DURATION_) ); } } @@ -68,7 +68,7 @@ contract InstantFunding is InitializableOwnable, ReentrancyGuard { } // ============ Funding Functions ============ - + //TODO:强制转入,适配通缩代币 function depositToken(uint256 amount) external preventReentrant onlyOwner { require(block.timestamp < _START_TIME_, "FUNDING_ALREADY_STARTED"); IERC20(_TOKEN_ADDRESS_).safeTransferFrom(msg.sender, address(this), amount); @@ -80,6 +80,7 @@ contract InstantFunding is InitializableOwnable, ReentrancyGuard { preventReentrant returns (uint256 newTokenAllocation) { + require(isDepositOpen(), "DEPOSIT_NOT_OPEN"); // input fund check uint256 inputFund = IERC20(_FUNDS_ADDRESS_).balanceOf(address(this)).sub(_FUNDS_RESERVE_); _FUNDS_RESERVE_ = _FUNDS_RESERVE_.add(inputFund); @@ -118,7 +119,20 @@ contract InstantFunding is InitializableOwnable, ReentrancyGuard { } function withdrawUnallocatedToken(address to) external preventReentrant onlyOwner { + require(isFundingEnd(), "CAN_NOT_WITHDRAW"); IERC20(_TOKEN_ADDRESS_).safeTransfer(to, _TOTAL_TOKEN_AMOUNT_.sub(_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_); + } } diff --git a/contracts/DODOStarter/impl/Vesting.sol b/contracts/DODOStarter/impl/Vesting.sol index 0af54fc..2a6846a 100644 --- a/contracts/DODOStarter/impl/Vesting.sol +++ b/contracts/DODOStarter/impl/Vesting.sol @@ -75,10 +75,10 @@ contract Vesting is InstantFunding { _INITIAL_POOL_ = IDVMFactory(_POOL_FACTORY_).createDODOVendingMachine( _TOKEN_ADDRESS_, _FUNDS_ADDRESS_, - 3e15, // 0.3% lp feeRate + 3e15, // 0.3% lp feeRate DIP3 1, DecimalMath.ONE, - true + true //TODO:是否开启 ); IERC20(_TOKEN_ADDRESS_).transferFrom(msg.sender, _INITIAL_POOL_, initialTokenAmount); IERC20(_FUNDS_ADDRESS_).transfer(_INITIAL_POOL_, _INITIAL_FUND_LIQUIDITY_);