# Multisig Admin Rights

Please note these describe functions in the original Votium contract. This page will be updated for v2 soon.\
\
Votium contract methods with special permissions fall under two categories:

* Multisig Admin functions
* Single-sign team only functions

All methods that control user funds fall under the Multisig Admin category.

These methods include:

```
VotiumBribe.sol
- setWhitelistRequired(bool)
    Sets requirement for erc20 bribes to be whitelisted first
    Default: true (whitelist required)
    Emits event `WhitelistRequirement(bool _requireWhitelist)`

- updateFeeAddress(address)
    Changes the address in which maintenance fees are sent

- updateFeeAmount(uint256)
    Allows the maintenance fee to be adjusted between 0% and 4%
    There is a hard limit of 4% that cannot be exceeded
    Emits event `UpdatedFee(uint256 _feeAmount)`

- modifyTeam(address, bool)
    Grants or removes permission for single-sign team address roles
    This method triggers the event `ModifiedTeam(address _member, bool _approval)`

- updateDistributor(address, address)
    Updates individual erc20 distribution contract address
    Emits event `UpdatedDistributor(address indexed _token, address _distributor)`



MerkleDistributor.sol
- freeze()
    Pause claims while merkle root is being updated

- unfreeze()
    Resume claims after merkle root update

- updateMerkleRoot(bytes32)
    Updates merkle root for claims and increments the update index
    Emits event 
    `MerkleRootUpdated(bytes32 indexed merkleRoot, uint256 indexed update)`
    
    
    
VotiumVeCRV.sol

- unlistToken(address)
    Disallows a token from being deposited in the future

- updateFeeAddress(address)
    Changes the address in which maintenance fees are sent

- updateFeeAmount(uint256)
    Allows the maintenance fee to be adjusted between 0% and 4%
    There is a hard limit of 4% that cannot be exceeded
    Emits event `UpdatedFee(uint256 _feeAmount)`

- modifyTeam(address, bool)
    Grants or removes permission for single-sign team address roles
    This method triggers the event `ModifiedTeam(address _member, bool _approval)`

- updateDistributor(address, address)
    Updates distribution contract address
    Emits event `UpdatedDistributor(address _distributor)`

- updateGaugeController(address)
    Updates Curve gauge controller (Used only for gauge address verification)
```

Single-sign team methods are limited to functions which do not pose a risk to user funds:

```
VotiumBribe.sol

- initiateProposal(bytes32, uint256, uint256)
    Registers a new proposal id, deadline, and max choice index.
    Requires that the same id has not been previously registered,
    and that the bribing deadline is in the future
    Emits event `Initiated(bytes32 _proposal)`


- approveDelegationVote(bytes32)
    Approves a msg hash for EIP1271 vote casting

- transferToDistributor(address)
    If there is an existent token balance and a distributor address set by
    multisig, the balance is forwarded to the distributor address

- whitelistToken(address) / whitelistTokens(address[])
    Add an individual token or multiple tokens to the whitelist registry
    Emits `event Whitelisted(address _token)`
    

VotiumVeCRV.sol

- listToken(address)

- listTokens(address[])
    Allows a token or tokens to be accepted for future deposits

```
