# Rebalance contracts security

#### Pausability

Our vault contracts now include pausing functionality.This feature allows us to temporarily halt activities in case of an emergency, enhancing user security.

#### Add/Remove Providers

Provider contracts serve as liquidity sources for our protocol, enabling deposit and withdrawal operations with various DeFi lending protocols.

To enhance security, we’ve introduced the ability to modify the list of providers we work with. This is crucial in the event of attacks or issues related to a specific provider. To make this possible, a timelock contract has been implemented, with a minimum delay of 30 minutes, allowing for the addition or removal of providers in our system.

> Please be aware that the "Interest Vault" naming has been removed. The base contract is now called Vault.sol.

### Authorized Functions in the Protocol

In addition to the deposit and withdraw functions, which allow users to interact with our protocol, there are other functions that can only be called by authorized accounts. These accounts are the protocol’s admin (a multisig wallet) and the timelock contract mentioned earlier.

Below is a list of functions that can be called by these authorized accounts, along with a brief description of their purpose:

#### **onlyAdmin**

These functions can only be called by the protocol’s multisig wallet (admin).

* pause: Pauses actions in the vault in case of an emergency.
* unpause: Resumes actions in the vault after being paused.
* setTreasury: Changes the address of the treasury that receives fees.
* setWithdrawFeePercent: Changes the withdrawal fee percentage. Note: The withdrawal fee cannot exceed the predetermined maximum limit (MAX\_WITHDRAW\_FEE\_PERCENT = 5%).
* setMinAmount: Changes the minimum deposit amount required.
* setActiveProvider: Changes the active provider for deposits and withdrawals. The active provider must be selected from the predefined list of providers. This list can only be changed by the timelock contract.

#### onlyTimelock

These functions can only be called by the timelock contract.

* setTimelock: Changes the address of the timelock contract. Only the timelock contract itself can modify this.
* setProviders: Changes the list of liquidity providers that the vault works with.

## Where does the yield comes from?

Below is a list of the protocol addresses we currently work with:

#### Aave V3

Pool Contract: 0x794a61358D6845594F94dc1DB02A252b5b4814aD

#### Compound V3

* USDC.e: 0xA5EDBDD9646f8dFF606d7448e414884C7d905dCA
* USDC: 0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf
* WETH: 0x6f7D514bbD4aFf3BcD1140B7344b32f063dEe486
* USDT: 0xd98Be00b5D27fc98112BdE293e487f8D4cA57d07

#### Fraxlend Protocol

Fraxlend Contract: 0x9168AC3a83A31bd85c93F4429a84c05db2CaEF08\
\
