update starter

This commit is contained in:
owen05
2021-12-23 18:13:04 +08:00
parent abdaacdf95
commit b1b84f8818
9 changed files with 86 additions and 72 deletions

View File

@@ -38,8 +38,6 @@ contract UpCrowdPoolingFactory is InitializableOwnable {
uint256 public _VEST_DURATION_ = 0;
uint256 public _CLIFF_RATE_ = 10**18;
mapping(address => address) liquidityProtectWhitelist;
// ============ Registry ============
// base -> quote -> CP address list
@@ -50,19 +48,12 @@ contract UpCrowdPoolingFactory is InitializableOwnable {
// ============ modifiers ===========
modifier valueCheck(
address creator,
address cpAddress,
address baseToken,
uint256[] memory timeLine,
uint256[] memory valueList)
{
require(timeLine[2] <= _CALM_DURATION_, "CP_FACTORY : PHASE_CALM_DURATION_INVALID");
require(timeLine[4] == _VEST_DURATION_, "CP_FACTORY : VEST_DURATION_INVALID");
require(valueList[3] == _CLIFF_RATE_, "CP_FACTORY : CLIFF_RATE_INVALID");
if(liquidityProtectWhitelist[creator] != baseToken) {
require(timeLine[3]>= _FREEZE_DURATION_, "CP_FACTORY : FREEZE_DURATION_INVALID");
}
_;
}
@@ -75,6 +66,8 @@ contract UpCrowdPoolingFactory is InitializableOwnable {
address cp
);
event RemoveCP(address cp);
constructor(
address cloneFactory,
address cpTemplate,
@@ -104,7 +97,7 @@ contract UpCrowdPoolingFactory is InitializableOwnable {
uint256[] memory timeLine,
uint256[] memory valueList,
bool[] memory switches
) external valueCheck(creator,cpAddress,tokens[0],timeLine,valueList) {
) external valueCheck(timeLine,valueList) {
{
address[] memory addressList = new address[](7);
addressList[0] = creator;
@@ -158,10 +151,6 @@ contract UpCrowdPoolingFactory is InitializableOwnable {
}
// ============ Owner Functions ============
function setLiquidityProtectWhitelist(address creator, address baseToken) external onlyOwner {
liquidityProtectWhitelist[creator] = baseToken;
}
function updateCPTemplate(address _newCPTemplate) external onlyOwner {
_CP_TEMPLATE_ = _newCPTemplate;
@@ -187,4 +176,31 @@ contract UpCrowdPoolingFactory is InitializableOwnable {
require(_newCliffRate <= 10**18, "CP_FACTORY : INVALID");
_CLIFF_RATE_ = _newCliffRate;
}
function removePoolByAdmin(
address creator,
address baseToken,
address quoteToken,
address pool
) external onlyOwner {
address[] memory registryList = _REGISTRY_[baseToken][quoteToken];
for (uint256 i = 0; i < registryList.length; i++) {
if (registryList[i] == pool) {
registryList[i] = registryList[registryList.length - 1];
break;
}
}
_REGISTRY_[baseToken][quoteToken] = registryList;
_REGISTRY_[baseToken][quoteToken].pop();
address[] memory userRegistryList = _USER_REGISTRY_[creator];
for (uint256 i = 0; i < userRegistryList.length; i++) {
if (userRegistryList[i] == pool) {
userRegistryList[i] = userRegistryList[userRegistryList.length - 1];
break;
}
}
_USER_REGISTRY_[creator] = userRegistryList;
_USER_REGISTRY_[creator].pop();
emit RemoveCP(pool);
}
}