try to avoid re-entrancy on burn function
Signed-off-by: Uncle Fatso <uncle.fatso@ghostchain.io>
This commit is contained in:
		
							parent
							
								
									941aba02fa
								
							
						
					
					
						commit
						34fdb21d82
					
				| @ -55,12 +55,15 @@ contract Reserve is ERC20Permit { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function burn(uint256 amount) external payable { |     function burn(uint256 amount) external payable { | ||||||
|         (bool sent,) = msg.sender.call{ value: estimateAmount(amount) }(""); |  | ||||||
|         require(sent, "Failed to send Ether"); |  | ||||||
|         _innerBurn(msg.sender, amount); |         _innerBurn(msg.sender, amount); | ||||||
|  |         uint256 valueDiff = address(this).balance - accumulatedDonation; | ||||||
|  |         uint256 valueBack = amount * valueDiff / (amount + totalSupply()); | ||||||
|  | 
 | ||||||
|  |         (bool sent,) = msg.sender.call{ value: valueBack }(""); | ||||||
|  |         require(sent, "Failed to send Ether"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function estimateAmount(uint256 amount) public view returns (uint256) { |     function estimateAmount(uint256 amount) external view returns (uint256) { | ||||||
|         uint256 valueDiff = address(this).balance - accumulatedDonation; |         uint256 valueDiff = address(this).balance - accumulatedDonation; | ||||||
|         return amount * valueDiff / totalSupply(); |         return amount * valueDiff / totalSupply(); | ||||||
|     } |     } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user