# Governance upgrade to patch exploit ### Major changes 1. Adding protection from metamorphic contracts to Governance voting process; 2. Redeploying Governance Staking proxy contract to nullify bugged rewards; 3. Return of tokens lost due to a bug in Governance Staking; 4. Redeploying Governance Staking logic contract and Relayer Registry logic contract to change the staking address to the current one. ### Requirements - Rust ([Any system](https://doc.rust-lang.org/cargo/getting-started/installation.html)) - Foundryup ([Windows](https://github.com/altugbakan/foundryup-windows), [Linux](https://book.getfoundry.sh/getting-started/installation)) - Node 14 or higher ([Windows](https://github.com/coreybutler/nvm-windows), [Linux](https://github.com/nvm-sh/nvm)) ### Installation ```text git clone --recurse-submodules https://git.tornado.ws/Theo/proposal-22-governance-and-rewards-patch cd proposal-22-governance-and-rewards-patch npm install ``` ### Testing ```text npm run test ``` ### Contracts info The contracts can be currently found here: - [GovernancePatchUpgrade](https://git.tornado.ws/Theo/proposal-22-governance-and-rewards-patch/src/branch/main/src/v4-patch/GovernancePatchUpgrade.sol) - [PatchProposal](https://git.tornado.ws/Theo/proposal-22-governance-and-rewards-patch/src/branch/main/src/v4-patch/PatchProposal.sol) Inlined version of the `RelayerRegistry` and `TornadoStakingRewards` are also used. Check the `diffs` folder to see how much they deviate from the deployed contract implementations. For testing resistance against metamorphic contracts, we use the contracts provided by: https://github.com/0age/metamorphic.git