tornado-pool-factory/contracts/denomination_templates/Add1Instance.sol

42 lines
1.3 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.7.6;
pragma abicoder v2;
import "../TornadoInstanceCloneFactory.sol";
import "../tornado_proxy/TornadoProxy.sol";
contract Add1Instance {
TornadoInstanceCloneFactory public immutable instanceFactory;
address public immutable token;
address public immutable proxyAddress;
uint256 public immutable denomination;
event UpdatedInstanceForProxy(address instance, address token, uint256 denomination);
constructor(
address _proxyAddress,
address _instanceFactory,
uint256 _denomination,
address _token
) {
instanceFactory = TornadoInstanceCloneFactory(_instanceFactory);
token = _token;
proxyAddress = _proxyAddress;
denomination = _denomination;
}
function executeProposal() external {
TornadoProxy tornadoProxy = TornadoProxy(proxyAddress);
ITornadoInstance instance = ITornadoInstance(instanceFactory.createInstanceClone(denomination, token));
TornadoProxy.Instance memory newInstanceData = TornadoProxy.Instance(true, IERC20(token), TornadoProxy.InstanceState.ENABLED);
TornadoProxy.Tornado memory tornadoForUpdate = TornadoProxy.Tornado(instance, newInstanceData);
tornadoProxy.updateInstance(tornadoForUpdate);
emit UpdatedInstanceForProxy(address(instance), instance.token(), instance.denomination());
}
}