mirror of
				https://github.com/Instadapp/yield-contract.git
				synced 2024-07-29 21:47:29 +00:00 
			
		
		
		
	turned flusher deployer into flusher registry
This commit is contained in:
		
							parent
							
								
									6618bf28c3
								
							
						
					
					
						commit
						c3a05c66d7
					
				|  | @ -4,9 +4,12 @@ pragma solidity ^0.6.8; | ||||||
| 
 | 
 | ||||||
| contract Deployer { | contract Deployer { | ||||||
| 
 | 
 | ||||||
|   mapping (address => address) public flushers; |  | ||||||
| 
 |  | ||||||
|   event LogNewFlusher(address indexed owner, address indexed flusher, address indexed logic); |   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 |   // deploy create2 + minimal proxy | ||||||
|   function deployLogic(address owner, address logic) public returns (address proxy) { |   function deployLogic(address owner, address logic) public returns (address proxy) { | ||||||
|  | @ -31,6 +34,33 @@ contract Deployer { | ||||||
|     emit LogNewFlusher(owner, proxy, logic); |     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) { |   function isFlusherDeployed(address _address) public view returns (bool) { | ||||||
|     uint32 size; |     uint32 size; | ||||||
|     assembly { |     assembly { | ||||||
|  | @ -54,10 +84,12 @@ contract Deployer { | ||||||
|     return address(bytes20(rawAddress << 96)); |     return address(bytes20(rawAddress << 96)); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   // get logic contract creation code | ||||||
|   function getCreationCode(address logic) public pure returns (bytes memory) { |   function getCreationCode(address logic) public pure returns (bytes memory) { | ||||||
|     bytes20 a = bytes20(0x3D602d80600A3D3981F3363d3d373d3D3D363d73); |     bytes20 a = bytes20(0x3D602d80600A3D3981F3363d3d373d3D3D363d73); | ||||||
|     bytes20 b = bytes20(logic); |     bytes20 b = bytes20(logic); | ||||||
|     bytes15 c = bytes15(0x5af43d82803e903d91602b57fd5bf3); |     bytes15 c = bytes15(0x5af43d82803e903d91602b57fd5bf3); | ||||||
|     return abi.encodePacked(a, b, c); |     return abi.encodePacked(a, b, c); | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  | @ -14,24 +14,19 @@ contract Registry { | ||||||
|   event LogAddSigner(address indexed signer); |   event LogAddSigner(address indexed signer); | ||||||
|   event LogRemoveSigner(address indexed signer); |   event LogRemoveSigner(address indexed signer); | ||||||
|   event LogUpdatePoolLogic(address token, address newLogic); |   event LogUpdatePoolLogic(address token, address newLogic); | ||||||
|   event LogUpdateFlusherLogic(address token, address newLogic); |  | ||||||
|   event LogUpdateFee(address token, uint newFee); |   event LogUpdateFee(address token, uint newFee); | ||||||
|   event LogUpdateCap(address token, uint newFee); |   event LogUpdateCap(address token, uint newFee); | ||||||
|   event LogAddSettleLogic(address indexed token, address indexed logic); |   event LogAddSettleLogic(address indexed token, address indexed logic); | ||||||
|   event LogRemoveSettleLogic(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); |   IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723); | ||||||
| 
 | 
 | ||||||
|   mapping (address => bool) public chief; |   mapping (address => bool) public chief; | ||||||
|   mapping (address => bool) public signer; |   mapping (address => bool) public signer; | ||||||
|   mapping (address => address) public poolLogic; |   mapping (address => address) public poolLogic; | ||||||
|   mapping (address => address) public flusherLogic; |  | ||||||
|   mapping (address => uint) public poolCap; |   mapping (address => uint) public poolCap; | ||||||
|   mapping (address => uint) public fee; |   mapping (address => uint) public fee; | ||||||
|   mapping (address => mapping(address => bool)) public settleLogic; |   mapping (address => mapping(address => bool)) public settleLogic; | ||||||
|   mapping (address => bool) public flusherConnectors; |  | ||||||
| 
 | 
 | ||||||
|   modifier isMaster() { |   modifier isMaster() { | ||||||
|     require(msg.sender == instaIndex.master(), "not-master"); |     require(msg.sender == instaIndex.master(), "not-master"); | ||||||
|  | @ -100,19 +95,6 @@ contract Registry { | ||||||
|     emit LogUpdatePoolLogic(_pool, _newLogic); |     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 |     * @dev update pool fee | ||||||
|     * @param _pool pool address |     * @param _pool pool address | ||||||
|  | @ -159,27 +141,6 @@ contract Registry { | ||||||
|     emit LogRemoveSettleLogic(_pool, _logic); |     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 |     * @dev check if settle logics are enabled | ||||||
|     * @param _pool token pool address |     * @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 { |   constructor(address _chief) public { | ||||||
|     chief[_chief] = true; |     chief[_chief] = true; | ||||||
|     emit LogAddChief(_chief); |     emit LogAddChief(_chief); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Sowmay Jain
						Sowmay Jain