diff --git a/contracts/deployer.sol b/contracts/deployer.sol index 958abb0..2f5b411 100644 --- a/contracts/deployer.sol +++ b/contracts/deployer.sol @@ -4,9 +4,12 @@ pragma solidity ^0.6.8; contract Deployer { - mapping (address => address) public flushers; - event LogNewFlusher(address indexed owner, address indexed flusher, address indexed logic); + event LogEnableConnector(address indexed connector); + event LogDisableConnector(address indexed connector); + + mapping (address => address) public flushers; + mapping (address => bool) public connectors; // deploy create2 + minimal proxy function deployLogic(address owner, address logic) public returns (address proxy) { @@ -31,6 +34,33 @@ contract Deployer { emit LogNewFlusher(owner, proxy, logic); } + // enable flusher connector + function enableConnector(address _connector) external isChief { + require(!connectors[_connector], "already-enabled"); + require(_connector != address(0), "invalid-connector"); + connectors[_connector] = true; + emit LogEnableConnector(_connector); + } + + // disable flusher connector + function disableConnector(address _connector) external isChief { + require(connectors[_connector], "already-disabled"); + delete connectors[_connector]; + emit LogDisableConnector(_connector); + } + + // check if connectors[] are enabled + function isConnector(address[] calldata _connectors) external view returns (bool isOk) { + isOk = true; + for (uint i = 0; i < _connectors.length; i++) { + if (!connectors[_connectors[i]]) { + isOk = false; + break; + } + } + } + + // is flusher deployed? function isFlusherDeployed(address _address) public view returns (bool) { uint32 size; assembly { @@ -54,10 +84,12 @@ contract Deployer { return address(bytes20(rawAddress << 96)); } + // get logic contract creation code function getCreationCode(address logic) public pure returns (bytes memory) { bytes20 a = bytes20(0x3D602d80600A3D3981F3363d3d373d3D3D363d73); bytes20 b = bytes20(logic); bytes15 c = bytes15(0x5af43d82803e903d91602b57fd5bf3); return abi.encodePacked(a, b, c); } + } \ No newline at end of file diff --git a/contracts/registry.sol b/contracts/registry.sol index 6ec26e4..cc62f38 100644 --- a/contracts/registry.sol +++ b/contracts/registry.sol @@ -14,24 +14,19 @@ contract Registry { event LogAddSigner(address indexed signer); event LogRemoveSigner(address indexed signer); event LogUpdatePoolLogic(address token, address newLogic); - event LogUpdateFlusherLogic(address token, address newLogic); event LogUpdateFee(address token, uint newFee); event LogUpdateCap(address token, uint newFee); event LogAddSettleLogic(address indexed token, address indexed logic); event LogRemoveSettleLogic(address indexed token, address indexed logic); - event LogFlusherConnectorsEnable(address indexed connector); - event LogFlusherConnectorsDisable(address indexed connector); IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723); mapping (address => bool) public chief; mapping (address => bool) public signer; mapping (address => address) public poolLogic; - mapping (address => address) public flusherLogic; mapping (address => uint) public poolCap; mapping (address => uint) public fee; mapping (address => mapping(address => bool)) public settleLogic; - mapping (address => bool) public flusherConnectors; modifier isMaster() { require(msg.sender == instaIndex.master(), "not-master"); @@ -100,19 +95,6 @@ contract Registry { emit LogUpdatePoolLogic(_pool, _newLogic); } - /** - * @dev update flusher logic - * @param _pool pool address - * @param _newLogic new flusher logic address - */ - function updateFlusherLogic(address _pool, address _newLogic) external isMaster { - require(_pool != address(0), "invalid-pool"); - require(_newLogic != address(0), "invalid-address"); - require(flusherLogic[_pool] != _newLogic, "same-pool-logic"); - flusherLogic[_pool] = _newLogic; - emit LogUpdateFlusherLogic(_pool, _newLogic); - } - /** * @dev update pool fee * @param _pool pool address @@ -159,27 +141,6 @@ contract Registry { emit LogRemoveSettleLogic(_pool, _logic); } - /** - * @dev enable pool connector - * @param _connector logic proxy - */ - function enableConnector(address _connector) external isChief { - require(!flusherConnectors[_connector], "already-enabled"); - require(_connector != address(0), "invalid-connector"); - flusherConnectors[_connector] = true; - emit LogFlusherConnectorsEnable(_connector); - } - - /** - * @dev disable pool connector - * @param _connector logic proxy - */ - function disableConnector(address _connector) external isChief { - require(flusherConnectors[_connector], "already-disabled"); - delete flusherConnectors[_connector]; - emit LogFlusherConnectorsDisable(_connector); - } - /** * @dev check if settle logics are enabled * @param _pool token pool address @@ -195,20 +156,6 @@ contract Registry { } } - /** - * @dev check if connectors are enabled - * @param _connectors array of logic proxy - */ - function isConnector(address[] calldata _connectors) external view returns (bool isOk) { - isOk = true; - for (uint i = 0; i < _connectors.length; i++) { - if (!flusherConnectors[_connectors[i]]) { - isOk = false; - break; - } - } - } - constructor(address _chief) public { chief[_chief] = true; emit LogAddChief(_chief);