update cpfactory
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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"));
|
||||
|
||||
Reference in New Issue
Block a user