Smart Contract Architecture
System Architecture Diagram
Core
Core maintains roles, an access control list of which addresses have different roles. Additionally, core stores a reference to the Volt token so that all smart contracts can find the Volt address.
Volt
Volt is natively yield bearing ERC20 token that is backed by other stablecoins such as USDC and DAI that are deposited into yield generating venues. That interest is then passed on to the Volt holders through the oracle system and peg stability modules, which allow swaps between Volt and the underlying stablecoins for zero fees at the current market Volt market price.
Governance
Protocol Multisig
The Protocol Multisig is a 3/5 gnosis safe multisig controlled by the core team. This contract has the governor and PCV controller role. In the future, the protocol multisig will be stripped of these privileged roles to decentralize the system.
Timelock Controller
The Timelock Controller is a standard Openzeppelin timelock controller. All core team members can propose actions to the timelock, subject to a 24 hour delay. Actions can only be executed on the timelock with a signature from the multisig. In the future version of governance, VCON (Volt Controller) governance token holders will be able to propose upgrade actions to Volt through the VCON DAO which will be behind a timelock.
Veto Module
While the Volt Veto module is still under active development, it will grant Volt holders a voice in governance and allow them to veto proposals they disagree with. Volt is the first project to grant its stablecoin holders veto rights.
Peg Stability Modules
A Peg Stability Module is a smart contract that allows swaps at infinite depth at its current market price. All Volt Peg Stability Modules (PSM) are fed the price from the Oracle Pass Through, which reads its price from the Volt System Oracle.
USDC Peg Stability Module
Peg Stability Module that allows minting and redeeming Volt with USDC.
DAI Peg Stability Module
Peg Stability Module that allows minting and redeeming Volt with DAI.
FEI Peg Stability Module
Deprecated due to the shutdown of FEI.
DAI Compound PCV Deposit
A PCV Deposit for DAI in Compound.
FEI Compound PCV Deposit
A PCV Deposit for FEI in Compound.
USDC Compound PCV Deposit
A PCV Deposit for USDC in Compound.
PCV Routers
A PCV Router is a smart contract that controls the flow of PCV across the system, but never holds funds longer a single transaction.
Maker Router
The maker router allows for swaps that sell FEI for DAI and or USDC. FEI can be sold for either USDC or DAI, or both. This smart contract was used to sell all PCV FEI in transitioning the backing to USDC and DAI.
Compound PCV Router
The Compound PCV Router leverages the MakerDAO DAI/USDC PSM to swap back and forth between cDAI and cUSDC. When called, this smart contract pulls required PCV from Compound, swaps to the desired stablecoin, and then deposits that stablecoin into Compound in a Compound PCV Deposit.
ERC20 Allocator
The ERC20 Allocator is a contract to remove all excess funds past a target balance from a smart contract and to add funds to that same smart contract when it is under the target balance. The first application is allocating funds from a PSM to a yield venue so that liquid reserves are minimized and yield for the protocol is maximized. This contract should never hold PCV, however it has a sweep function, so if tokens get sent to it accidentally, they can still be recovered. This contract stores each PSM and maps it to the target balance and decimals normalizer for that token. PCV Deposits can then be linked to these PSM's which allows funds to be pushed and pulled between these PCV deposits and their respective PSM's. This design allows multiple PCV Deposits to be linked to a single PSM. This contract enforces the assumption that all pcv deposits connected to a given PSM share the same underlying token, otherwise the rate limited logic will not work as intended. This assumption is encoded in the create and edit deposit functions as well as the connect deposit function.
Oracle
Volt System Oracle
contract that receives a fixed interest rate upon construction, and then linearly interpolates that rate over a 30.42 day period into the VOLT price after the oracle start time. Interest is compounded monthly.
Oracle Pass Through
The Oracle Pass Through contract is a wrapper contract that passes all price calls to the Volt System Oracle. The Volt System Oracle can be changed if there is a decision to change how data is interpolated. The advantage of this smart contract is that this contract can change where it points, thus repointing the entire system to a different oracle, without having to call setOracle on all the individual contracts themselves.