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