mirror of
https://github.com/tornadocash/tornado-governance
synced 2024-02-02 14:53:55 +01:00
add gov v3
This commit is contained in:
parent
1b50b703c2
commit
74b6021aa7
@ -1,5 +1,7 @@
|
||||
# Tornado Governance Changes
|
||||
|
||||
Governance proposal [repo]().
|
||||
|
||||
## Governance Vault Upgrade (GovernanceVaultUpgrade.sol)
|
||||
|
||||
`GovernanceVaultUpgrade` is the first major upgrade to tornado governance. This upgrade introduces new logic which is used to communicate with `TornVault` from the governance contract. The motivation behind this upgrade:
|
||||
|
61
contracts/v3-relayer-registry/GovernanceStakingUpgrade.sol
Normal file
61
contracts/v3-relayer-registry/GovernanceStakingUpgrade.sol
Normal file
@ -0,0 +1,61 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
pragma solidity ^0.6.12;
|
||||
pragma experimental ABIEncoderV2;
|
||||
|
||||
import { GovernanceGasUpgrade } from "../v2-vault-and-gas/GovernanceGasUpgrade.sol";
|
||||
import { ITornadoStakingRewards } from "./interfaces/ITornadoStakingRewards.sol";
|
||||
|
||||
/**
|
||||
* @notice The Governance staking upgrade. Adds modifier to any un/lock operation to update rewards
|
||||
* @dev CONTRACT RISKS:
|
||||
* - if updateRewards reverts (should not happen due to try/catch) locks/unlocks could be blocked
|
||||
* - generally inherits risks from former governance upgrades
|
||||
*/
|
||||
contract GovernanceStakingUpgrade is GovernanceGasUpgrade {
|
||||
ITornadoStakingRewards public immutable Staking;
|
||||
|
||||
event RewardUpdateSuccessful(address indexed account);
|
||||
event RewardUpdateFailed(address indexed account, bytes indexed errorData);
|
||||
|
||||
constructor(
|
||||
address stakingRewardsAddress,
|
||||
address gasCompLogic,
|
||||
address userVaultAddress
|
||||
) public GovernanceGasUpgrade(gasCompLogic, userVaultAddress) {
|
||||
Staking = ITornadoStakingRewards(stakingRewardsAddress);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notice This modifier should make a call to Staking to update the rewards for account without impacting logic on revert
|
||||
* @dev try / catch block to handle reverts
|
||||
* @param account Account to update rewards for.
|
||||
* */
|
||||
modifier updateRewards(address account) {
|
||||
try Staking.updateRewardsOnLockedBalanceChange(account, lockedBalance[account]) {
|
||||
emit RewardUpdateSuccessful(account);
|
||||
} catch (bytes memory errorData) {
|
||||
emit RewardUpdateFailed(account, errorData);
|
||||
}
|
||||
_;
|
||||
}
|
||||
|
||||
function lock(
|
||||
address owner,
|
||||
uint256 amount,
|
||||
uint256 deadline,
|
||||
uint8 v,
|
||||
bytes32 r,
|
||||
bytes32 s
|
||||
) public virtual override updateRewards(owner) {
|
||||
super.lock(owner, amount, deadline, v, r, s);
|
||||
}
|
||||
|
||||
function lockWithApproval(uint256 amount) public virtual override updateRewards(msg.sender) {
|
||||
super.lockWithApproval(amount);
|
||||
}
|
||||
|
||||
function unlock(uint256 amount) public virtual override updateRewards(msg.sender) {
|
||||
super.unlock(amount);
|
||||
}
|
||||
}
|
14
contracts/v3-relayer-registry/ProposalChanges.md
Normal file
14
contracts/v3-relayer-registry/ProposalChanges.md
Normal file
@ -0,0 +1,14 @@
|
||||
# Tornado Relayer Registry
|
||||
|
||||
Governance proposal [repo](https://github.com/Rezan-vm/tornado-relayer-registry).
|
||||
|
||||
Governance upgrade which includes a registry for relayer registration and staking mechanisms for the TORN token.
|
||||
|
||||
## Overview
|
||||
|
||||
1. Anyone can become a relayer by staking TORN into Registry contract.
|
||||
2. Minimum stake is governed by the Governance.
|
||||
3. Each Pool has its own fee % which is also set by the Governance.
|
||||
4. On every withdrawal via relayer, the relayer has to pay the Tornado Pool fee in TORN. The fee is deducted from his staked balance.
|
||||
5. All collected fees are stored into StakingReward contract.
|
||||
6. Any TORN holder can stake their TORN into Governance contract like they were before, but earning fees proportionately to their stake.
|
@ -0,0 +1,7 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
pragma solidity ^0.6.12;
|
||||
|
||||
interface ITornadoStakingRewards {
|
||||
function updateRewardsOnLockedBalanceChange(address account, uint256 amountLockedBeforehand) external;
|
||||
}
|
Loading…
Reference in New Issue
Block a user