0e5cb316b0
Signed-off-by: AlienTornadosaurusHex <>
48 lines
1.7 KiB
Solidity
48 lines
1.7 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
|
|
pragma solidity ^0.6.12;
|
|
pragma experimental ABIEncoderV2;
|
|
|
|
import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol";
|
|
import { LoopbackProxy } from "../v1/LoopbackProxy.sol";
|
|
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
import { Address } from "@openzeppelin/contracts/utils/Address.sol";
|
|
|
|
import { GovernancePatchUpgrade } from "./GovernancePatchUpgrade.sol";
|
|
import { TornadoStakingRewards } from "./TornadoStakingRewards.sol";
|
|
|
|
contract RelayerRegistryProposal {
|
|
using SafeMath for uint256;
|
|
using Address for address;
|
|
|
|
IERC20 public constant TORN = IERC20(0x77777FeDdddFfC19Ff86DB637967013e6C6A116C);
|
|
|
|
address public immutable registry;
|
|
|
|
constructor(address _registry) public {
|
|
registry = _registry;
|
|
}
|
|
|
|
// Aight lets do this sirs
|
|
function executeProposal() external {
|
|
// address(this) has to be governance
|
|
address payable governance = payable(address(this));
|
|
|
|
// Get the two contracts gov depends on
|
|
address gasComp = address(GovernancePatchUpgrade(governance).gasCompensationVault());
|
|
address vault = address(GovernancePatchUpgrade(governance).userVault());
|
|
|
|
// Get the old staking contract
|
|
TornadoStakingRewards oldStaking = TornadoStakingRewards(address(GovernancePatchUpgrade(governance).Staking()));
|
|
|
|
// Get all of the TORN out cuz broken
|
|
oldStaking.withdrawTorn(TORN.balanceOf(address(oldStaking)));
|
|
|
|
// And create a new staking contract
|
|
TornadoStakingRewards newStaking = new TornadoStakingRewards(governance, address(TORN), address(registry));
|
|
|
|
// Now upgrade the governance to the latest stuff
|
|
LoopbackProxy(payable(governance)).upgradeTo(address(new GovernancePatchUpgrade(address(newStaking), gasComp, vault)));
|
|
}
|
|
}
|