Architecture

Abstract

Verio is comprised of two main functional protocols: Staking and Re-staking. Each of these protocols maintains its own semantic version for its components, and references itself through a Component Selector. The Component Selector is a contract that maintains the current addressable components for all relevant protocol functions.

Components by Protocol Function

Staking

Name
Description

Delegator

The delegator manages user stake delegations. This includes staking, unstaking, and redelegating stake to the Verio validator set.

StakePool

The stakePool maintains a balance of user stake, until it reaches the minimum threshold for delegation.

RewardPool

The rewardPool is responsible for collecting and distributing rewards from validators.

WithdrawalPool

The withdrawalPool maintains a balance of unstaked funds, which users can claim after the appropriate unbonding period.

InsurancePool

An insurancePool may be associated with any of the previous components. InsurancePools handle debit and credit operations against the related component's balance.

ComponentSelector

The ComponentSelector maintains a reference to each of the previously described components.

Re-staking

Name
Description

IPAssetStaking

IPAssetStaking is the main hub for all re-staking operations on IP assets. It allows users to register, re-stake, unstake, and offer rewards on IP assets.

IPAssetStakePoolRegistry

The ipAssetStakePoolRegistry manages the registration of IP assets, and the creation of their related StakePool.

CreatorRegistry

The creatorRegistry handles the registration and categorization of creators.

OperatorRegistry

The operatorRegistry handles the registration of operators, who may stake on a user's behalf for a configurable commission rate.

StakeToken

StakeTokens provide configuration for re-staking tokens such as vIP. They handle the function that provides pricing, minimum stake amounts, and other re-staking related details.

Lockup

Lockup is used to manage configuration for varied re-staking lockups. It includes the stake weight multiplier, rageQuit multiplier, and the duration for each available lockup.

StakePool

StakePools are created for each registered IP asset, and manage the state of each user's stake on that asset.

IncentivePool

IncentivePools may be created for any given IP asset. They are responsible for the state and distribution of incentives for that asset.

RewardPool

RewardPools manage configuration specific to a reward token within an incentivePool. They may be configured to have different distribution rates, and varying reward amounts.

ComponentSelector

The ComponentSelector maintains a reference to each of the previously described components.

Last updated