mirror of
				https://github.com/Instadapp/yield-contract.git
				synced 2024-07-29 21:47:29 +00:00 
			
		
		
		
	event added and eth edits
This commit is contained in:
		
							parent
							
								
									29dbb98bea
								
							
						
					
					
						commit
						a115927405
					
				|  | @ -35,25 +35,32 @@ interface RateInterface { | ||||||
| contract PoolToken is ERC20, DSMath { | contract PoolToken is ERC20, DSMath { | ||||||
|     using SafeERC20 for IERC20; |     using SafeERC20 for IERC20; | ||||||
| 
 | 
 | ||||||
|     IERC20 public immutable baseToken; |     event LogDeploy(uint amount); | ||||||
|     RegistryInterface public immutable registry; |     event LogExchangeRate(uint exchangeRate, uint tokenBalance, uint insuranceAmt); | ||||||
|  |     event LogSettle(uint settleTime); | ||||||
|  |     event LogDeposit(uint depositAmt, uint poolMintAmt); | ||||||
|  |     event LogWithdraw(uint withdrawAmt, uint poolBurnAmt); | ||||||
|  |     event LogAddInsurance(uint amount); | ||||||
|  |     event LogPoolShut(bool); | ||||||
|  | 
 | ||||||
|  |     // IERC20 public immutable baseToken; | ||||||
|  |     RegistryInterface public immutable registry; // Pool Registry | ||||||
|     IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723); |     IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723); | ||||||
|     AccountInterface public immutable dsa; |     AccountInterface public immutable dsa; // Pool's DSA account | ||||||
| 
 | 
 | ||||||
|     uint private tokenBalance; // total token balance since last rebalancing |     uint private tokenBalance; // total token balance since last rebalancing | ||||||
|     uint public exchangeRate = 1000000000000000000; // initial 1 token = 1 |     uint public exchangeRate = 1000000000000000000; // initial 1 token = 1 | ||||||
|     uint public insuranceAmt; // insurance amount to keep pool safe |     uint public insuranceAmt; // insurance amount to keep pool safe | ||||||
|     bool public shutPool; |     bool public shutPool; // shutdown deposits and withdrawals | ||||||
| 
 | 
 | ||||||
|     constructor( |     constructor( | ||||||
|         address _registry, |         address _registry, | ||||||
|         string memory _name, |         string memory _name, | ||||||
|         string memory _symbol, |         string memory _symbol, | ||||||
|         address _baseToken, |  | ||||||
|         address _origin |         address _origin | ||||||
|     ) public ERC20(_name, _symbol) { |     ) public ERC20(_name, _symbol) { | ||||||
|         // TODO - 0 |         // TODO - 0 | ||||||
|         baseToken = IERC20(_baseToken); |         // baseToken = IERC20(_baseToken); | ||||||
|         registry = RegistryInterface(_registry); |         registry = RegistryInterface(_registry); | ||||||
|         address _dsa = instaIndex.build(address(this), 1, _origin); |         address _dsa = instaIndex.build(address(this), 1, _origin); | ||||||
|         dsa = AccountInterface(_dsa); |         dsa = AccountInterface(_dsa); | ||||||
|  | @ -65,7 +72,8 @@ contract PoolToken is ERC20, DSMath { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function deploy(uint amount) external isChief { |     function deploy(uint amount) external isChief { | ||||||
|         baseToken.safeTransfer(address(dsa), amount); |         payable(address(dsa)).transfer(amount); | ||||||
|  |         emit LogDeploy(amount); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function setExchangeRate() public isChief { |     function setExchangeRate() public isChief { | ||||||
|  | @ -86,6 +94,7 @@ contract PoolToken is ERC20, DSMath { | ||||||
|             tokenBalance = sub(_totalToken, insuranceAmt); |             tokenBalance = sub(_totalToken, insuranceAmt); | ||||||
|         } |         } | ||||||
|         exchangeRate = _currentRate; |         exchangeRate = _currentRate; | ||||||
|  |         emit LogExchangeRate(exchangeRate, tokenBalance, insuranceAmt); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function settle(address[] calldata _targets, bytes[] calldata _datas, address _origin) external isChief { |     function settle(address[] calldata _targets, bytes[] calldata _datas, address _origin) external isChief { | ||||||
|  | @ -93,21 +102,25 @@ contract PoolToken is ERC20, DSMath { | ||||||
|             dsa.cast(_targets, _datas, _origin); |             dsa.cast(_targets, _datas, _origin); | ||||||
|         } |         } | ||||||
|         setExchangeRate(); |         setExchangeRate(); | ||||||
|  | 
 | ||||||
|  |         emit LogSettle(block.timestamp); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function deposit(uint tknAmt) public payable returns(uint) { |     function deposit(uint tknAmt) public payable returns(uint) { | ||||||
|         require(!shutPool, "pool-shut"); |         require(!shutPool, "pool-shut"); | ||||||
|         uint _newTokenBal = add(tokenBalance, tknAmt); |         require(tknAmt == msg.value, "unmatched-amount"); | ||||||
|  |         uint _newTokenBal = add(tokenBalance, msg.value); | ||||||
|         require(_newTokenBal <= registry.poolCap(address(this)), "deposit-cap-reached"); |         require(_newTokenBal <= registry.poolCap(address(this)), "deposit-cap-reached"); | ||||||
| 
 | 
 | ||||||
|         baseToken.safeTransferFrom(msg.sender, address(this), tknAmt); |         uint _mintAmt = wdiv(msg.value, exchangeRate); | ||||||
|         uint _mintAmt = wdiv(tknAmt, exchangeRate); |  | ||||||
|         _mint(msg.sender, _mintAmt); |         _mint(msg.sender, _mintAmt); | ||||||
|  | 
 | ||||||
|  |         emit LogDeposit(tknAmt, _mintAmt); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function withdraw(uint tknAmt, address to) external returns (uint) { |     function withdraw(uint tknAmt, address to) external returns (uint) { | ||||||
|         require(!shutPool, "pool-shut"); |         require(!shutPool, "pool-shut"); | ||||||
|         uint poolBal = baseToken.balanceOf(address(this)); |         uint poolBal = address(this).balance; | ||||||
|         require(tknAmt <= poolBal, "not-enough-liquidity-available"); |         require(tknAmt <= poolBal, "not-enough-liquidity-available"); | ||||||
|         uint _bal = balanceOf(msg.sender); |         uint _bal = balanceOf(msg.sender); | ||||||
|         uint _tknBal = wmul(_bal, exchangeRate); |         uint _tknBal = wmul(_bal, exchangeRate); | ||||||
|  | @ -124,17 +137,21 @@ contract PoolToken is ERC20, DSMath { | ||||||
| 
 | 
 | ||||||
|         _burn(msg.sender, _burnAmt); |         _burn(msg.sender, _burnAmt); | ||||||
| 
 | 
 | ||||||
|         baseToken.safeTransfer(to, _tknAmt); |         payable(to).transfer(_tknAmt); | ||||||
|  | 
 | ||||||
|  |         emit LogWithdraw(tknAmt, _burnAmt); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function addInsurance(uint tknAmt) external { |     function addInsurance(uint tknAmt) external payable { | ||||||
|         baseToken.safeTransferFrom(msg.sender, address(this), tknAmt); |         require(tknAmt == msg.value, "unmatched-amount"); | ||||||
|         insuranceAmt = tknAmt; |         insuranceAmt += tknAmt; | ||||||
|  |         emit LogAddInsurance(tknAmt); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function shutdown() external { |     function shutdown() external { | ||||||
|         require(msg.sender == instaIndex.master(), "not-master"); |         require(msg.sender == instaIndex.master(), "not-master"); | ||||||
|         shutPool = !shutPool; |         shutPool = !shutPool; | ||||||
|  |         emit LogPoolShut(shutPool); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     receive() external payable { |     receive() external payable { | ||||||
|  |  | ||||||
|  | @ -17,6 +17,10 @@ contract Registry { | ||||||
| 
 | 
 | ||||||
|   event LogAddChief(address indexed chief); |   event LogAddChief(address indexed chief); | ||||||
|   event LogRemoveChief(address indexed chief); |   event LogRemoveChief(address indexed chief); | ||||||
|  |   event LogSwitchPool(address pool, bool); | ||||||
|  |   event LogUpdatePoolCap(address pool, uint newCap); | ||||||
|  |   event LogUpdatePoolLogic(address pool, address newLogic); | ||||||
|  |   event LogUpdateInsureFee(address pool, uint newFee); | ||||||
| 
 | 
 | ||||||
|   IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723); |   IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723); | ||||||
| 
 | 
 | ||||||
|  | @ -58,25 +62,29 @@ contract Registry { | ||||||
|     emit LogRemoveChief(_chief); |     emit LogRemoveChief(_chief); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   function enablePool(address _pool) external isMaster { |   function switchPool(address _pool) external isMaster { | ||||||
|     isPool[_pool] = true; |     isPool[_pool] = !isPool[_pool]; | ||||||
|  |     emit LogSwitchPool(_pool, isPool[_pool]); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   function updatePoolCap(address _pool, uint _newCap) external isChief { |   function updatePoolCap(address _pool, uint _newCap) external isChief { | ||||||
|     require(isPool[_pool], "not-a-pool"); |     require(isPool[_pool], "not-a-pool"); | ||||||
|     poolCap[_pool] = _newCap; |     poolCap[_pool] = _newCap; | ||||||
|  |     emit LogUpdatePoolCap(_pool, _newCap); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   function updateLogic(address _pool, address _newLogic) external isChief { |   function updatePoolLogic(address _pool, address _newLogic) external isChief { | ||||||
|     require(isPool[_pool], "not-a-pool"); |     require(isPool[_pool], "not-a-pool"); | ||||||
|     require(_newLogic != address(0), "address-0"); |     require(_newLogic != address(0), "address-0"); | ||||||
|     poolLogic[_pool] = _newLogic; |     poolLogic[_pool] = _newLogic; | ||||||
|  |     emit LogUpdatePoolLogic(_pool, _newLogic); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   function updateInsureFee(address _pool, uint _newFee) external isChief { |   function updateInsureFee(address _pool, uint _newFee) external isChief { | ||||||
|     require(isPool[_pool], "not-a-pool"); |     require(isPool[_pool], "not-a-pool"); | ||||||
|     require(_newFee < 1000000000000000000, "insure-fee-limit-reached"); |     require(_newFee < 1000000000000000000, "insure-fee-limit-reached"); | ||||||
|     insureFee[_pool] = _newFee; |     insureFee[_pool] = _newFee; | ||||||
|  |     emit LogUpdateInsureFee(_pool, _newFee); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   constructor(address _chief) public { |   constructor(address _chief) public { | ||||||
|  |  | ||||||
|  | @ -35,15 +35,23 @@ interface RateInterface { | ||||||
| contract PoolToken is ERC20, DSMath { | contract PoolToken is ERC20, DSMath { | ||||||
|     using SafeERC20 for IERC20; |     using SafeERC20 for IERC20; | ||||||
| 
 | 
 | ||||||
|     IERC20 public immutable baseToken; |     event LogDeploy(uint amount); | ||||||
|     RegistryInterface public immutable registry; |     event LogExchangeRate(uint exchangeRate, uint tokenBalance, uint insuranceAmt); | ||||||
|     IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723); |     event LogSettle(uint settleTime); | ||||||
|     AccountInterface public immutable dsa; |     event LogDeposit(uint depositAmt, uint poolMintAmt); | ||||||
|  |     event LogWithdraw(uint withdrawAmt, uint poolBurnAmt); | ||||||
|  |     event LogAddInsurance(uint amount); | ||||||
|  |     event LogPoolShut(bool); | ||||||
|  | 
 | ||||||
|  |     IERC20 public immutable baseToken; // Base token. Eg:- DAI, USDC, etc. | ||||||
|  |     RegistryInterface public immutable registry; // Pool Registry | ||||||
|  |     IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723); // Main Index | ||||||
|  |     AccountInterface public immutable dsa; // Pool's DSA account | ||||||
| 
 | 
 | ||||||
|     uint private tokenBalance; // total token balance since last rebalancing |     uint private tokenBalance; // total token balance since last rebalancing | ||||||
|     uint public exchangeRate = 1000000000000000000; // initial 1 token = 1 |     uint public exchangeRate = 1000000000000000000; // initial 1 token = 1 | ||||||
|     uint public insuranceAmt; // insurance amount to keep pool safe |     uint public insuranceAmt; // insurance amount to keep pool safe | ||||||
|     bool public shutPool; |     bool public shutPool; // shutdown deposits and withdrawals | ||||||
| 
 | 
 | ||||||
|     constructor( |     constructor( | ||||||
|         address _registry, |         address _registry, | ||||||
|  | @ -52,7 +60,6 @@ contract PoolToken is ERC20, DSMath { | ||||||
|         address _baseToken, |         address _baseToken, | ||||||
|         address _origin |         address _origin | ||||||
|     ) public ERC20(_name, _symbol) { |     ) public ERC20(_name, _symbol) { | ||||||
|         // TODO - 0 |  | ||||||
|         baseToken = IERC20(_baseToken); |         baseToken = IERC20(_baseToken); | ||||||
|         registry = RegistryInterface(_registry); |         registry = RegistryInterface(_registry); | ||||||
|         address _dsa = instaIndex.build(address(this), 1, _origin); |         address _dsa = instaIndex.build(address(this), 1, _origin); | ||||||
|  | @ -66,6 +73,7 @@ contract PoolToken is ERC20, DSMath { | ||||||
| 
 | 
 | ||||||
|     function deploy(uint amount) public isChief { |     function deploy(uint amount) public isChief { | ||||||
|         baseToken.safeTransfer(address(dsa), amount); |         baseToken.safeTransfer(address(dsa), amount); | ||||||
|  |         emit LogDeploy(amount); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function setExchangeRate() public isChief { |     function setExchangeRate() public isChief { | ||||||
|  | @ -86,6 +94,7 @@ contract PoolToken is ERC20, DSMath { | ||||||
|             tokenBalance = sub(_totalToken, insuranceAmt); |             tokenBalance = sub(_totalToken, insuranceAmt); | ||||||
|         } |         } | ||||||
|         exchangeRate = _currentRate; |         exchangeRate = _currentRate; | ||||||
|  |         emit LogExchangeRate(exchangeRate, tokenBalance, insuranceAmt); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function settle(address[] calldata _targets, bytes[] calldata _datas, address _origin) external isChief { |     function settle(address[] calldata _targets, bytes[] calldata _datas, address _origin) external isChief { | ||||||
|  | @ -93,6 +102,7 @@ contract PoolToken is ERC20, DSMath { | ||||||
|             dsa.cast(_targets, _datas, _origin); |             dsa.cast(_targets, _datas, _origin); | ||||||
|         } |         } | ||||||
|         setExchangeRate(); |         setExchangeRate(); | ||||||
|  |         emit LogSettle(block.timestamp); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function deposit(uint tknAmt) external payable returns(uint) { |     function deposit(uint tknAmt) external payable returns(uint) { | ||||||
|  | @ -103,6 +113,8 @@ contract PoolToken is ERC20, DSMath { | ||||||
|         baseToken.safeTransferFrom(msg.sender, address(this), tknAmt); |         baseToken.safeTransferFrom(msg.sender, address(this), tknAmt); | ||||||
|         uint _mintAmt = wdiv(tknAmt, exchangeRate); |         uint _mintAmt = wdiv(tknAmt, exchangeRate); | ||||||
|         _mint(msg.sender, _mintAmt); |         _mint(msg.sender, _mintAmt); | ||||||
|  | 
 | ||||||
|  |         emit LogDeposit(tknAmt, _mintAmt); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function withdraw(uint tknAmt, address to) external returns (uint) { |     function withdraw(uint tknAmt, address to) external returns (uint) { | ||||||
|  | @ -125,16 +137,20 @@ contract PoolToken is ERC20, DSMath { | ||||||
|         _burn(msg.sender, _burnAmt); |         _burn(msg.sender, _burnAmt); | ||||||
| 
 | 
 | ||||||
|         baseToken.safeTransfer(to, _tknAmt); |         baseToken.safeTransfer(to, _tknAmt); | ||||||
|  | 
 | ||||||
|  |         emit LogWithdraw(tknAmt, _burnAmt); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function addInsurance(uint tknAmt) external { |     function addInsurance(uint tknAmt) external payable { | ||||||
|         baseToken.safeTransferFrom(msg.sender, address(this), tknAmt); |         baseToken.safeTransferFrom(msg.sender, address(this), tknAmt); | ||||||
|         insuranceAmt = tknAmt; |         insuranceAmt += tknAmt; | ||||||
|  |         emit LogAddInsurance(tknAmt); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function shutdown() external { |     function shutdown() external { | ||||||
|         require(msg.sender == instaIndex.master(), "not-master"); |         require(msg.sender == instaIndex.master(), "not-master"); | ||||||
|         shutPool = !shutPool; |         shutPool = !shutPool; | ||||||
|  |         emit LogPoolShut(shutPool); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Samyak Jain
						Samyak Jain