From 6618bf28c35bceb3c61493eca4d155bdb8617613 Mon Sep 17 00:00:00 2001 From: Sowmay Jain Date: Sat, 12 Sep 2020 19:33:57 +1000 Subject: [PATCH 01/10] removed flusher restriction from pool --- contracts/deployer.sol | 5 +++-- contracts/flusher.sol | 2 +- contracts/pools/erc20.sol | 12 +----------- contracts/pools/eth.sol | 13 ++----------- 4 files changed, 7 insertions(+), 25 deletions(-) diff --git a/contracts/deployer.sol b/contracts/deployer.sol index f57bc22..958abb0 100644 --- a/contracts/deployer.sol +++ b/contracts/deployer.sol @@ -1,9 +1,10 @@ // SPDX-License-Identifier: MIT + pragma solidity ^0.6.8; contract Deployer { - mapping (address => bool) public flushers; + mapping (address => address) public flushers; event LogNewFlusher(address indexed owner, address indexed flusher, address indexed logic); @@ -26,7 +27,7 @@ contract Deployer { ) proxy := create2(0, clone, 0x37, salt) } - flushers[proxy] = true; + flushers[proxy] = owner; emit LogNewFlusher(owner, proxy, logic); } diff --git a/contracts/flusher.sol b/contracts/flusher.sol index 7834cb5..115118f 100644 --- a/contracts/flusher.sol +++ b/contracts/flusher.sol @@ -4,7 +4,7 @@ pragma solidity ^0.6.8; pragma experimental ABIEncoderV2; interface RegistryInterface { - function signer(address) external view returns (bool); + function signer(address) external view returns (bool); function isConnector(address[] calldata) external view returns (bool); } diff --git a/contracts/pools/erc20.sol b/contracts/pools/erc20.sol index 7bf253b..75fc0a3 100644 --- a/contracts/pools/erc20.sol +++ b/contracts/pools/erc20.sol @@ -15,7 +15,6 @@ interface IndexInterface { interface RegistryInterface { function chief(address) external view returns (bool); function poolLogic(address) external returns (address); - function flusherLogic(address) external returns (address); function fee(address) external view returns (uint); function poolCap(address) external view returns (uint); function checkSettleLogics(address, address[] calldata) external view returns (bool); @@ -25,10 +24,6 @@ interface RateInterface { function getTotalToken() external returns (uint totalUnderlyingTkn); } -interface FlusherLogicInterface { - function isFlusher(address) external returns (bool); -} - contract PoolToken is ReentrancyGuard, ERC20Pausable, DSMath { using SafeERC20 for IERC20; @@ -61,11 +56,6 @@ contract PoolToken is ReentrancyGuard, ERC20Pausable, DSMath { _; } - modifier isFlusher() { - require(FlusherLogicInterface(registry.flusherLogic(address(this))).isFlusher(msg.sender), "not-flusher"); - _; - } - /** * @dev sets exchange rate */ @@ -128,7 +118,7 @@ contract PoolToken is ReentrancyGuard, ERC20Pausable, DSMath { * @param tknAmt token amount * @return mintAmt amount of wrap token minted */ - function deposit(uint tknAmt) public payable whenNotPaused isFlusher returns (uint mintAmt) { + function deposit(uint tknAmt) public payable whenNotPaused returns (uint mintAmt) { require(msg.value == 0, "non-eth-pool"); uint _tokenBal = wdiv(totalSupply(), exchangeRate); uint _newTknBal = add(_tokenBal, tknAmt); diff --git a/contracts/pools/eth.sol b/contracts/pools/eth.sol index 38049eb..2294402 100644 --- a/contracts/pools/eth.sol +++ b/contracts/pools/eth.sol @@ -15,7 +15,6 @@ interface IndexInterface { interface RegistryInterface { function chief(address) external view returns (bool); function poolLogic(address) external returns (address); - function flusherLogic(address) external returns (address); function fee(address) external view returns (uint); function poolCap(address) external view returns (uint); function checkSettleLogics(address, address[] calldata) external view returns (bool); @@ -25,10 +24,6 @@ interface RateInterface { function getTotalToken() external returns (uint totalUnderlyingTkn); } -interface FlusherLogicInterface { - function isFlusher(address) external returns (bool); -} - contract PoolETH is ReentrancyGuard, ERC20Pausable, DSMath { using SafeERC20 for IERC20; @@ -41,6 +36,7 @@ contract PoolETH is ReentrancyGuard, ERC20Pausable, DSMath { IERC20 public immutable baseToken; // Base token. RegistryInterface public immutable registry; // Pool Registry IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723); + DeployerInterface public constant deployer = DeployerInterface(address(0)); // TODO - Change while deploying uint public exchangeRate = 10 ** 18; // initial 1 token = 1 uint public feeAmt; // fee collected on profits @@ -60,11 +56,6 @@ contract PoolETH is ReentrancyGuard, ERC20Pausable, DSMath { _; } - modifier isFlusher() { - require(FlusherLogicInterface(registry.flusherLogic(address(this))).isFlusher(msg.sender), "not-flusher"); - _; - } - /** * @dev sets exchange rate */ @@ -127,7 +118,7 @@ contract PoolETH is ReentrancyGuard, ERC20Pausable, DSMath { * @param tknAmt token amount * @return mintAmt amount of wrap token minted */ - function deposit(uint tknAmt) public whenNotPaused payable isFlusher returns (uint mintAmt) { + function deposit(uint tknAmt) public whenNotPaused payable returns (uint mintAmt) { require(tknAmt == msg.value, "unmatched-amount"); uint _tokenBal = wdiv(totalSupply(), exchangeRate); uint _newTknBal = add(_tokenBal, tknAmt); From c3a05c66d7f4993513277af07536a5cc18e44488 Mon Sep 17 00:00:00 2001 From: Sowmay Jain Date: Sat, 12 Sep 2020 19:54:48 +1000 Subject: [PATCH 02/10] turned flusher deployer into flusher registry --- contracts/deployer.sol | 36 ++++++++++++++++++++++++++-- contracts/registry.sol | 53 ------------------------------------------ 2 files changed, 34 insertions(+), 55 deletions(-) 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); From 52fbd8c0fc32d7abfec78aaca73edbef7165217d Mon Sep 17 00:00:00 2001 From: Sowmay Jain Date: Sat, 12 Sep 2020 20:05:49 +1000 Subject: [PATCH 03/10] seperated flusher master --- contracts/deployer.sol | 86 ++++++++++++++++++++++++++++++------------ contracts/registry.sol | 2 +- 2 files changed, 63 insertions(+), 25 deletions(-) diff --git a/contracts/deployer.sol b/contracts/deployer.sol index 2f5b411..228a332 100644 --- a/contracts/deployer.sol +++ b/contracts/deployer.sol @@ -2,36 +2,38 @@ pragma solidity ^0.6.8; -contract Deployer { +contract Controller { - event LogNewFlusher(address indexed owner, address indexed flusher, address indexed logic); + event LogNewMaster(address indexed master); + event LogUpdateMaster(address indexed master); event LogEnableConnector(address indexed connector); event LogDisableConnector(address indexed connector); - mapping (address => address) public flushers; + address private newMaster; + address public master; mapping (address => bool) public connectors; - // deploy create2 + minimal proxy - function deployLogic(address owner, address logic) public returns (address proxy) { - require(!(isFlusherDeployed(getAddress(owner, logic))), "flusher-already-deployed"); - bytes32 salt = keccak256(abi.encodePacked(owner, proxy)); - bytes20 targetBytes = bytes20(logic); - // solium-disable-next-line security/no-inline-assembly - assembly { - let clone := mload(0x40) - mstore( - clone, - 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000 - ) - mstore(add(clone, 0x14), targetBytes) - mstore( - add(clone, 0x28), - 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000 - ) - proxy := create2(0, clone, 0x37, salt) - } - flushers[proxy] = owner; - emit LogNewFlusher(owner, proxy, logic); + modifier isMaster() { + require(msg.sender == master, "not-master"); + _; + } + + // change the master address + function changeMaster(address _newMaster) external isMaster { + require(_newMaster != master, "already-a-master"); + require(_newMaster != address(0), "not-valid-address"); + require(newMaster != _newMaster, "already-a-new-master"); + newMaster = _newMaster; + emit LogNewMaster(_newMaster); + } + + // new master claiming master position + function claimMaster() external { + require(newMaster != address(0), "not-valid-address"); + require(msg.sender == newMaster, "not-new-master"); + master = newMaster; + newMaster = address(0); + emit LogUpdateMaster(master); } // enable flusher connector @@ -60,6 +62,37 @@ contract Deployer { } } +} + +contract Deployer is Controller { + + event LogNewFlusher(address indexed owner, address indexed flusher, address indexed logic); + + mapping (address => address) public flushers; + + // deploy create2 + minimal proxy + function deployLogic(address owner, address logic) public returns (address proxy) { + require(!(isFlusherDeployed(getAddress(owner, logic))), "flusher-already-deployed"); + bytes32 salt = keccak256(abi.encodePacked(owner, proxy)); + bytes20 targetBytes = bytes20(logic); + // solium-disable-next-line security/no-inline-assembly + assembly { + let clone := mload(0x40) + mstore( + clone, + 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000 + ) + mstore(add(clone, 0x14), targetBytes) + mstore( + add(clone, 0x28), + 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000 + ) + proxy := create2(0, clone, 0x37, salt) + } + flushers[proxy] = owner; + emit LogNewFlusher(owner, proxy, logic); + } + // is flusher deployed? function isFlusherDeployed(address _address) public view returns (bool) { uint32 size; @@ -92,4 +125,9 @@ contract Deployer { return abi.encodePacked(a, b, c); } + constructor(address _master) public { + master = _master; + emit LogUpdateMaster(master); + } + } \ No newline at end of file diff --git a/contracts/registry.sol b/contracts/registry.sol index cc62f38..bc0d63b 100644 --- a/contracts/registry.sol +++ b/contracts/registry.sol @@ -159,5 +159,5 @@ contract Registry { constructor(address _chief) public { chief[_chief] = true; emit LogAddChief(_chief); - } + } } From beaa67232e259cb9ba866fc383c26ea18074ffbb Mon Sep 17 00:00:00 2001 From: Sowmay Jain Date: Sat, 12 Sep 2020 20:12:37 +1000 Subject: [PATCH 04/10] moved signers to deployed contracts --- contracts/deployer.sol | 27 +++++++++++++++++++++++---- contracts/flusher.sol | 8 ++++---- contracts/registry.sol | 25 ------------------------- 3 files changed, 27 insertions(+), 33 deletions(-) diff --git a/contracts/deployer.sol b/contracts/deployer.sol index 228a332..0616112 100644 --- a/contracts/deployer.sol +++ b/contracts/deployer.sol @@ -8,10 +8,13 @@ contract Controller { event LogUpdateMaster(address indexed master); event LogEnableConnector(address indexed connector); event LogDisableConnector(address indexed connector); + event LogAddSigner(address indexed signer); + event LogRemoveSigner(address indexed signer); address private newMaster; address public master; mapping (address => bool) public connectors; + mapping (address => bool) public signer; modifier isMaster() { require(msg.sender == master, "not-master"); @@ -36,21 +39,37 @@ contract Controller { emit LogUpdateMaster(master); } - // enable flusher connector - function enableConnector(address _connector) external isChief { + // enable connector + function enableConnector(address _connector) external isMaster { 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 { + // disable connector + function disableConnector(address _connector) external isMaster { require(connectors[_connector], "already-disabled"); delete connectors[_connector]; emit LogDisableConnector(_connector); } + // enable signer + function enableSigner(address _signer) external isMaster { + require(_signer != address(0), "invalid-address"); + require(!signer[_signer], "signer-already-enabled"); + signer[_signer] = true; + emit LogAddSigner(_signer); + } + + // disable signer + function disableSigner(address _signer) external isMaster { + require(_signer != address(0), "invalid-address"); + require(signer[_signer], "signer-already-disabled"); + delete signer[_signer]; + emit LogRemoveSigner(_signer); + } + // check if connectors[] are enabled function isConnector(address[] calldata _connectors) external view returns (bool isOk) { isOk = true; diff --git a/contracts/flusher.sol b/contracts/flusher.sol index 115118f..3535b8a 100644 --- a/contracts/flusher.sol +++ b/contracts/flusher.sol @@ -3,7 +3,7 @@ pragma solidity ^0.6.8; pragma experimental ABIEncoderV2; -interface RegistryInterface { +interface DeployerInterface { function signer(address) external view returns (bool); function isConnector(address[] calldata) external view returns (bool); } @@ -13,7 +13,7 @@ contract Flusher { string constant public name = "Flusher-v1"; - RegistryInterface public constant registry = RegistryInterface(address(0)); // TODO - Change while deploying + DeployerInterface public constant deployer = DeployerInterface(address(0)); // TODO - Change while deploying function spell(address _target, bytes memory _data) internal { require(_target != address(0), "target-invalid"); @@ -29,9 +29,9 @@ contract Flusher { } function cast(address[] calldata _targets, bytes[] calldata _datas) external payable { - require(registry.signer(msg.sender), "not-signer"); + require(deployer.signer(msg.sender), "not-signer"); require(_targets.length == _datas.length , "invalid-array-length"); - require(registry.isConnector(_targets), "not-connector"); + require(deployer.isConnector(_targets), "not-connector"); for (uint i = 0; i < _targets.length; i++) { spell(_targets[i], _datas[i]); } diff --git a/contracts/registry.sol b/contracts/registry.sol index bc0d63b..fb7fffa 100644 --- a/contracts/registry.sol +++ b/contracts/registry.sol @@ -11,8 +11,6 @@ contract Registry { event LogAddChief(address indexed chief); event LogRemoveChief(address indexed chief); - event LogAddSigner(address indexed signer); - event LogRemoveSigner(address indexed signer); event LogUpdatePoolLogic(address token, address newLogic); event LogUpdateFee(address token, uint newFee); event LogUpdateCap(address token, uint newFee); @@ -22,7 +20,6 @@ contract Registry { IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723); mapping (address => bool) public chief; - mapping (address => bool) public signer; mapping (address => address) public poolLogic; mapping (address => uint) public poolCap; mapping (address => uint) public fee; @@ -60,28 +57,6 @@ contract Registry { emit LogRemoveChief(_chief); } - /** - * @dev Enable New Signer. - * @param _signer Address of the new signer. - */ - function enableSigner(address _signer) external isChief { - require(_signer != address(0), "invalid-address"); - require(!signer[_signer], "signer-already-enabled"); - signer[_signer] = true; - emit LogAddSigner(_signer); - } - - /** - * @dev Disable Signer. - * @param _signer Address of the existing signer. - */ - function disableSigner(address _signer) external isChief { - require(_signer != address(0), "invalid-address"); - require(signer[_signer], "signer-already-disabled"); - delete signer[_signer]; - emit LogRemoveSigner(_signer); - } - /** * @dev update pool rate logic * @param _pool pool address From bce87812583f9286dc8c4d98e6f495e96fcc6605 Mon Sep 17 00:00:00 2001 From: Sowmay Jain Date: Sat, 12 Sep 2020 20:14:32 +1000 Subject: [PATCH 05/10] made deployer name little fancy = InstaDeployer --- contracts/deployer.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/deployer.sol b/contracts/deployer.sol index 0616112..4c7d012 100644 --- a/contracts/deployer.sol +++ b/contracts/deployer.sol @@ -83,7 +83,7 @@ contract Controller { } -contract Deployer is Controller { +contract InstaDeployer is Controller { event LogNewFlusher(address indexed owner, address indexed flusher, address indexed logic); From cb545f8fa3834339156fdf9e5fdede3ad44f4d0f Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Sun, 13 Sep 2020 02:08:43 +0530 Subject: [PATCH 06/10] Remaned `token` => `pool` in events --- contracts/registry.sol | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/contracts/registry.sol b/contracts/registry.sol index fb7fffa..e66df77 100644 --- a/contracts/registry.sol +++ b/contracts/registry.sol @@ -11,11 +11,11 @@ contract Registry { event LogAddChief(address indexed chief); event LogRemoveChief(address indexed chief); - event LogUpdatePoolLogic(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 LogUpdatePoolLogic(address pool, address newLogic); + event LogUpdateFee(address pool, uint newFee); + event LogUpdateCap(address pool, uint newCap); + event LogAddSettleLogic(address indexed pool, address indexed logic); + event LogRemoveSettleLogic(address indexed pool, address indexed logic); IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723); From 72f42ac9bc4e965fd263de5d1479e42dfd86638a Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Sun, 13 Sep 2020 02:12:28 +0530 Subject: [PATCH 07/10] Updated comments --- contracts/registry.sol | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/contracts/registry.sol b/contracts/registry.sol index e66df77..aa0485c 100644 --- a/contracts/registry.sol +++ b/contracts/registry.sol @@ -84,9 +84,9 @@ contract Registry { } /** - * @dev update pool fee + * @dev update pool cap * @param _pool pool address - * @param _newCap new fee amount + * @param _newCap new cap amount */ function updateCap(address _pool, uint _newCap) external isMaster { require(_pool != address(0), "invalid-pool"); @@ -101,6 +101,7 @@ contract Registry { */ function addSettleLogic(address _pool, address _logic) external isMaster { require(_pool != address(0), "invalid-pool"); + require(!settleLogic[_pool][_logic], "already-settle-added"); settleLogic[_pool][_logic] = true; emit LogAddSettleLogic(_pool, _logic); } @@ -112,6 +113,7 @@ contract Registry { */ function removeSettleLogic(address _pool, address _logic) external isMaster { require(_pool != address(0), "invalid-pool"); + require(settleLogic[_pool][_logic], "already-settle-removed"); delete settleLogic[_pool][_logic]; emit LogRemoveSettleLogic(_pool, _logic); } From 659daa3b761a786f6020e8c606a556805bf2db0b Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Sun, 13 Sep 2020 02:18:06 +0530 Subject: [PATCH 08/10] Fixed bug --- contracts/deployer.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/deployer.sol b/contracts/deployer.sol index 4c7d012..480cee9 100644 --- a/contracts/deployer.sol +++ b/contracts/deployer.sol @@ -92,7 +92,7 @@ contract InstaDeployer is Controller { // deploy create2 + minimal proxy function deployLogic(address owner, address logic) public returns (address proxy) { require(!(isFlusherDeployed(getAddress(owner, logic))), "flusher-already-deployed"); - bytes32 salt = keccak256(abi.encodePacked(owner, proxy)); + bytes32 salt = keccak256(abi.encodePacked(owner, logic)); bytes20 targetBytes = bytes20(logic); // solium-disable-next-line security/no-inline-assembly assembly { From fd450b33ecec8175c37f530540ba4d1962ea0a97 Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Sun, 13 Sep 2020 03:21:43 +0530 Subject: [PATCH 09/10] Minor edits in eth pool contract --- contracts/pools/eth.sol | 3 --- 1 file changed, 3 deletions(-) diff --git a/contracts/pools/eth.sol b/contracts/pools/eth.sol index 2294402..329ff9c 100644 --- a/contracts/pools/eth.sol +++ b/contracts/pools/eth.sol @@ -2,7 +2,6 @@ pragma solidity ^0.6.8; pragma experimental ABIEncoderV2; -import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; import "@openzeppelin/contracts/token/ERC20/ERC20Pausable.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; @@ -25,7 +24,6 @@ interface RateInterface { } contract PoolETH is ReentrancyGuard, ERC20Pausable, DSMath { - using SafeERC20 for IERC20; event LogExchangeRate(uint exchangeRate, uint tokenBalance, uint insuranceAmt); event LogSettle(uint settleBlock); @@ -36,7 +34,6 @@ contract PoolETH is ReentrancyGuard, ERC20Pausable, DSMath { IERC20 public immutable baseToken; // Base token. RegistryInterface public immutable registry; // Pool Registry IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723); - DeployerInterface public constant deployer = DeployerInterface(address(0)); // TODO - Change while deploying uint public exchangeRate = 10 ** 18; // initial 1 token = 1 uint public feeAmt; // fee collected on profits From 6028f48ce3db12388e729f8c67f08fd3b2222fac Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Sun, 13 Sep 2020 03:24:25 +0530 Subject: [PATCH 10/10] Changed `public` => `external` for deposit func in pools --- contracts/pools/erc20.sol | 2 +- contracts/pools/eth.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/pools/erc20.sol b/contracts/pools/erc20.sol index 75fc0a3..49900d1 100644 --- a/contracts/pools/erc20.sol +++ b/contracts/pools/erc20.sol @@ -118,7 +118,7 @@ contract PoolToken is ReentrancyGuard, ERC20Pausable, DSMath { * @param tknAmt token amount * @return mintAmt amount of wrap token minted */ - function deposit(uint tknAmt) public payable whenNotPaused returns (uint mintAmt) { + function deposit(uint tknAmt) external payable whenNotPaused returns (uint mintAmt) { require(msg.value == 0, "non-eth-pool"); uint _tokenBal = wdiv(totalSupply(), exchangeRate); uint _newTknBal = add(_tokenBal, tknAmt); diff --git a/contracts/pools/eth.sol b/contracts/pools/eth.sol index 329ff9c..71a3fdb 100644 --- a/contracts/pools/eth.sol +++ b/contracts/pools/eth.sol @@ -115,7 +115,7 @@ contract PoolETH is ReentrancyGuard, ERC20Pausable, DSMath { * @param tknAmt token amount * @return mintAmt amount of wrap token minted */ - function deposit(uint tknAmt) public whenNotPaused payable returns (uint mintAmt) { + function deposit(uint tknAmt) external whenNotPaused payable returns (uint mintAmt) { require(tknAmt == msg.value, "unmatched-amount"); uint _tokenBal = wdiv(totalSupply(), exchangeRate); uint _newTknBal = add(_tokenBal, tknAmt);