update cpfactory

This commit is contained in:
owen05
2021-01-07 14:21:57 +08:00
parent 6e8c5d6f91
commit 9d45b310bb
3 changed files with 44 additions and 18 deletions

View File

@@ -26,8 +26,15 @@ contract CrowdPoolingFactory is InitializableOwnable {
address public immutable _DEFAULT_PERMISSION_MANAGER_;
address public _CP_TEMPLATE_;
uint256 public _X_ = 50; //default
uint256 public _Y_ = 0; //default
// ============ Settings =============
uint256 public _CAP_RATIO_ = 50;
uint256 public _FREEZE_DURATION_ = 30 days;
uint256 public _CALM_DURATION_ = 0;
uint256 public _VEST_DURATION_ = 0;
uint256 public _K_ = 0;
uint256 public _CLIFF_RATE_ = 10**18;
// ============ Registry ============
// base -> quote -> CP address list
@@ -42,14 +49,14 @@ contract CrowdPoolingFactory is InitializableOwnable {
uint256[] memory timeLine,
uint256[] memory valueList)
{
require(timeLine[2] == 0,"CP_FACTORY : PHASE_CALM_DURATION_ZERO_ONLY");
require(timeLine[4] == 0,"CP_FACTORY : VEST_DURATION_ZERO_ONLY");
require(valueList[1] == 0,"CP_FACTORY : K_ZERO_ONLY");
require(valueList[3] == DecimalMath.ONE,"CP_FACTORY : CLIFF_RATE_DECIMAL_MATH_ONE_ONLY");
require(timeLine[2] == _CALM_DURATION_, "CP_FACTORY : PHASE_CALM_DURATION_INVALID");
require(timeLine[4] == _VEST_DURATION_, "CP_FACTORY : VEST_DURATION_INVALID");
require(valueList[1] == _K_, "CP_FACTORY : K_INVALID");
require(valueList[3] == _CLIFF_RATE_, "CP_FACTORY : CLIFF_RATE_INVALID");
uint256 baseTokenBalance = IERC20(baseToken).balanceOf(cpAddress);
require(valueList[0].mul(100) <= baseTokenBalance.mul(valueList[2]).div(10**18).mul(_X_),"CP_FACTORY : QUOTE_CAPE_INVALID");
require(timeLine[3]>= _Y_,"CP_FACTORY : FREEZE_DURATION_INVALID");
require(valueList[0].mul(100) <= baseTokenBalance.mul(valueList[2]).div(10**18).mul(_CAP_RATIO_),"CP_FACTORY : QUOTE_CAPE_INVALID");
require(timeLine[3]>= _FREEZE_DURATION_, "CP_FACTORY : FREEZE_DURATION_INVALID");
_;
}
@@ -78,8 +85,6 @@ contract CrowdPoolingFactory is InitializableOwnable {
_DEFAULT_MAINTAINER_ = defaultMaintainer;
_DEFAULT_MT_FEE_RATE_MODEL_ = defaultMtFeeRateModel;
_DEFAULT_PERMISSION_MANAGER_ = defaultPermissionManager;
_X_ = 50;
_Y_ = 30 days;
}
function createCrowdPooling() external returns (address newCrowdPooling) {
@@ -148,9 +153,30 @@ contract CrowdPoolingFactory is InitializableOwnable {
_CP_TEMPLATE_ = _newCPTemplate;
}
function setXY(uint256 x,uint256 y) public onlyOwner {
require(x>0&&x<=100,"CP_FACTORY : INVALID_X");
_X_=x;
_Y_=y;
function setCapRatio(uint256 _newCapRatio) public onlyOwner {
require(_newCapRatio > 0 && _newCapRatio <= 100, "CP_FACTORY : INVALID");
_CAP_RATIO_ = _newCapRatio;
}
function setFreezeDuration(uint256 _newFreeDuration) public onlyOwner {
_FREEZE_DURATION_ = _newFreeDuration;
}
function setCalmDuration(uint256 _newCalmDuration) public onlyOwner {
_CALM_DURATION_ = _newCalmDuration;
}
function setVestDuration(uint256 _newVestDuration) public onlyOwner {
_VEST_DURATION_ = _newVestDuration;
}
function setK(uint256 _newK) public onlyOwner {
require(_newK <= 10**18, "CP_FACTORY : INVALID");
_K_ = _newK;
}
function setCliffRate(uint256 _newCliffRate) public onlyOwner {
require(_newCliffRate <= 10**18, "CP_FACTORY : INVALID");
_CLIFF_RATE_ = _newCliffRate;
}
}

View File

@@ -642,7 +642,7 @@ contract DODOV2Proxy01 is IDODOV2Proxy01, ReentrancyGuard, InitializableOwnable
function addLiquidityToV1(
address to,
address assetTo,
address pair,
uint256 baseAmount,
uint256 quoteAmount,
@@ -660,11 +660,11 @@ contract DODOV2Proxy01 is IDODOV2Proxy01, ReentrancyGuard, InitializableOwnable
if(baseAmount > 0) {
IERC20(_baseToken).universalApproveMax(pair, baseAmount);
baseShares = IDODOV1(pair).depositBaseTo(to, baseAmount);
baseShares = IDODOV1(pair).depositBaseTo(assetTo, baseAmount);
}
if(quoteAmount > 0) {
IERC20(_quoteToken).universalApproveMax(pair, quoteAmount);
quoteShares = IDODOV1(pair).depositQuoteTo(to, quoteAmount);
quoteShares = IDODOV1(pair).depositQuoteTo(assetTo, quoteAmount);
}
require(baseShares >= baseMinShares && quoteShares >= quoteMinShares,"DODOV2Proxy01: Return DLP is not enough");

View File

@@ -155,7 +155,7 @@ describe("DODOProxyV2.0", () => {
// );
// });
it.only("resetDPP", async () => {
it("resetDPP", async () => {
var beforeState = await DPP_DODO_USDT.methods.getPMMState().call();
assert.equal(beforeState.K, config.k);
assert.equal(beforeState.B, decimalStr("100000"));