From bbfe01231f3e0400c1545245c89ad82fcc15510a Mon Sep 17 00:00:00 2001 From: owen05 Date: Sat, 9 Oct 2021 10:30:43 +0800 Subject: [PATCH] fix --- contracts/Factory/DPPFactory.sol | 38 +++++++++++++++++++++++++++++++- migrations/2_deploy_v2.js | 5 +++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/contracts/Factory/DPPFactory.sol b/contracts/Factory/DPPFactory.sol index 912a234..51912e2 100644 --- a/contracts/Factory/DPPFactory.sol +++ b/contracts/Factory/DPPFactory.sol @@ -30,6 +30,8 @@ contract DPPFactory is InitializableOwnable { address public _DPP_TEMPLATE_; address public _DPP_ADMIN_TEMPLATE_; + mapping (address => bool) public isAdminListed; + // ============ Registry ============ // base -> quote -> DPP address list @@ -46,9 +48,11 @@ contract DPPFactory is InitializableOwnable { address dpp ); - event RemoveDPP(address dpp); + event addAdmin(address admin); + event removeAdmin(address admin); + constructor( address cloneFactory, address dppTemplate, @@ -81,6 +85,7 @@ contract DPPFactory is InitializableOwnable { uint256 i, bool isOpenTwap ) external { + require(isAdminListed[msg.sender], "ACCESS_DENIED"); { address _dppAddress = dppAddress; address adminModel = _createDPPAdminModel( @@ -131,6 +136,16 @@ contract DPPFactory is InitializableOwnable { _DPP_TEMPLATE_ = _newDPPTemplate; } + function addAdminList (address contractAddr) external onlyOwner { + isAdminListed[contractAddr] = true; + emit addAdmin(contractAddr); + } + + function removeAdminList (address contractAddr) external onlyOwner { + isAdminListed[contractAddr] = false; + emit removeAdmin(contractAddr); + } + function addPoolByAdmin( address creator, address baseToken, @@ -142,6 +157,27 @@ contract DPPFactory is InitializableOwnable { emit NewDPP(baseToken, quoteToken, creator, pool); } + function batchAddPoolByAdmin( + address[] memory creators, + address[] memory baseTokens, + address[] memory quoteTokens, + address[] memory pools + ) external onlyOwner { + require(creators.length == baseTokens.length,"PARAMS_INVALID"); + require(creators.length == quoteTokens.length,"PARAMS_INVALID"); + require(creators.length == pools.length,"PARAMS_INVALID"); + for(uint256 i = 0; i < creators.length; i++) { + address creator = creators[i]; + address baseToken = baseTokens[i]; + address quoteToken = quoteTokens[i]; + address pool = pools[i]; + + _REGISTRY_[baseToken][quoteToken].push(pool); + _USER_REGISTRY_[creator].push(pool); + emit NewDPP(baseToken, quoteToken, creator, pool); + } + } + function removePoolByAdmin( address creator, address baseToken, diff --git a/migrations/2_deploy_v2.js b/migrations/2_deploy_v2.js index 4d89033..b5aa361 100644 --- a/migrations/2_deploy_v2.js +++ b/migrations/2_deploy_v2.js @@ -492,6 +492,11 @@ module.exports = async (deployer, network, accounts) => { const dodoMineV3RegistryInstance = await DODOMineV3Registry.at(DODOMineV3RegistryAddress); var tx = await dodoMineV3RegistryInstance.addAdminList(DODOMineV3ProxyAddress); logger.log("DODOMineV3RegistryAddress Init tx: ", tx.tx); + + //DPPFactory add DODProxy as admin + const dppFactoryInstance = await DPPFactory.at(DppFactoryAddress); + var tx = await dppFactoryInstance.addAdminList(DODOV2ProxyAddress); + logger.log("DPPFactory Init tx: ", tx.tx); } }