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 immutable _DEFAULT_PERMISSION_MANAGER_;
address public _CP_TEMPLATE_; address public _CP_TEMPLATE_;
uint256 public _X_ = 50; //default // ============ Settings =============
uint256 public _Y_ = 0; //default 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 ============ // ============ Registry ============
// base -> quote -> CP address list // base -> quote -> CP address list
@@ -42,14 +49,14 @@ contract CrowdPoolingFactory is InitializableOwnable {
uint256[] memory timeLine, uint256[] memory timeLine,
uint256[] memory valueList) uint256[] memory valueList)
{ {
require(timeLine[2] == 0,"CP_FACTORY : PHASE_CALM_DURATION_ZERO_ONLY"); require(timeLine[2] == _CALM_DURATION_, "CP_FACTORY : PHASE_CALM_DURATION_INVALID");
require(timeLine[4] == 0,"CP_FACTORY : VEST_DURATION_ZERO_ONLY"); require(timeLine[4] == _VEST_DURATION_, "CP_FACTORY : VEST_DURATION_INVALID");
require(valueList[1] == 0,"CP_FACTORY : K_ZERO_ONLY"); require(valueList[1] == _K_, "CP_FACTORY : K_INVALID");
require(valueList[3] == DecimalMath.ONE,"CP_FACTORY : CLIFF_RATE_DECIMAL_MATH_ONE_ONLY"); require(valueList[3] == _CLIFF_RATE_, "CP_FACTORY : CLIFF_RATE_INVALID");
uint256 baseTokenBalance = IERC20(baseToken).balanceOf(cpAddress); 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(valueList[0].mul(100) <= baseTokenBalance.mul(valueList[2]).div(10**18).mul(_CAP_RATIO_),"CP_FACTORY : QUOTE_CAPE_INVALID");
require(timeLine[3]>= _Y_,"CP_FACTORY : FREEZE_DURATION_INVALID"); require(timeLine[3]>= _FREEZE_DURATION_, "CP_FACTORY : FREEZE_DURATION_INVALID");
_; _;
} }
@@ -78,8 +85,6 @@ contract CrowdPoolingFactory is InitializableOwnable {
_DEFAULT_MAINTAINER_ = defaultMaintainer; _DEFAULT_MAINTAINER_ = defaultMaintainer;
_DEFAULT_MT_FEE_RATE_MODEL_ = defaultMtFeeRateModel; _DEFAULT_MT_FEE_RATE_MODEL_ = defaultMtFeeRateModel;
_DEFAULT_PERMISSION_MANAGER_ = defaultPermissionManager; _DEFAULT_PERMISSION_MANAGER_ = defaultPermissionManager;
_X_ = 50;
_Y_ = 30 days;
} }
function createCrowdPooling() external returns (address newCrowdPooling) { function createCrowdPooling() external returns (address newCrowdPooling) {
@@ -148,9 +153,30 @@ contract CrowdPoolingFactory is InitializableOwnable {
_CP_TEMPLATE_ = _newCPTemplate; _CP_TEMPLATE_ = _newCPTemplate;
} }
function setXY(uint256 x,uint256 y) public onlyOwner { function setCapRatio(uint256 _newCapRatio) public onlyOwner {
require(x>0&&x<=100,"CP_FACTORY : INVALID_X"); require(_newCapRatio > 0 && _newCapRatio <= 100, "CP_FACTORY : INVALID");
_X_=x; _CAP_RATIO_ = _newCapRatio;
_Y_=y; }
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( function addLiquidityToV1(
address to, address assetTo,
address pair, address pair,
uint256 baseAmount, uint256 baseAmount,
uint256 quoteAmount, uint256 quoteAmount,
@@ -660,11 +660,11 @@ contract DODOV2Proxy01 is IDODOV2Proxy01, ReentrancyGuard, InitializableOwnable
if(baseAmount > 0) { if(baseAmount > 0) {
IERC20(_baseToken).universalApproveMax(pair, baseAmount); IERC20(_baseToken).universalApproveMax(pair, baseAmount);
baseShares = IDODOV1(pair).depositBaseTo(to, baseAmount); baseShares = IDODOV1(pair).depositBaseTo(assetTo, baseAmount);
} }
if(quoteAmount > 0) { if(quoteAmount > 0) {
IERC20(_quoteToken).universalApproveMax(pair, quoteAmount); 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"); 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(); var beforeState = await DPP_DODO_USDT.methods.getPMMState().call();
assert.equal(beforeState.K, config.k); assert.equal(beforeState.K, config.k);
assert.equal(beforeState.B, decimalStr("100000")); assert.equal(beforeState.B, decimalStr("100000"));