From b9570ea3c3db9b11d90a2504d601468001c83ad3 Mon Sep 17 00:00:00 2001 From: Alexey Date: Fri, 12 Mar 2021 16:09:05 +0400 Subject: [PATCH] _updateInstance updates --- contracts/TornadoProxy.sol | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/contracts/TornadoProxy.sol b/contracts/TornadoProxy.sol index a3ebc87..304ad02 100644 --- a/contracts/TornadoProxy.sol +++ b/contracts/TornadoProxy.sol @@ -90,7 +90,6 @@ contract TornadoProxy { function updateInstance(Tornado calldata _tornado) external onlyGovernance { _updateInstance(_tornado); - emit InstanceStateUpdate(_tornado.addr, _tornado.instance.state); } function setTornadoTreesContract(address _tornadoTrees) external onlyGovernance { @@ -124,7 +123,14 @@ contract TornadoProxy { if (_tornado.instance.isERC20) { IERC20 token = IERC20(_tornado.addr.token()); require(token == _tornado.instance.token, "Incorrect token"); - token.safeApprove(address(_tornado.addr), uint256(-1)); + uint256 allowance = token.allowance(address(this), address(_tornado.addr)); + + if (_tornado.instance.state != InstanceState.Disabled && allowance == 0) { + token.safeApprove(address(_tornado.addr), uint256(-1)); + } else if (_tornado.instance.state == InstanceState.Disabled && allowance != 0) { + token.safeApprove(address(_tornado.addr), 0); + } } + emit InstanceStateUpdate(_tornado.addr, _tornado.instance.state); } }