Restaking Accounts
1. About the program
The restaking program acts as a registry for NCNs, operators, and relationships between NCNs, operators, and vaults.
It allows users to do the following:
- Registers NCN, operators, and their configurations.
- Stores relationships between NCN, operators, and vaults.
The restaking program does not store any funds; it is purely used as a registry and relationship manager between entities in the system.
2. Diagram
2. Ncn
NCN (Node Consensus Network) are services that provide infrastructure to the network, such as validators, oracles, keepers, bridges, L2s, and other services that require a staking mechanism for security.
NCN can be registered through the restaking program.
There are several things one can do after registering an NCN:
- Add and remove support for operators participating in the NCN operator set.
- Add and remove support for vaults
- Add and remove support for slashers
- Withdraw funds sent to the NCN from rewards, airdrops, and other sources.
3. Operator
Operators are entities responsible for running NCN software.
Operators can register through the restaking program and configure several variables:
- Add and remove support for vaults
- Add and remove support for NCN
- Change voter keys
- Withdraw funds sent to the operator from rewards, airdrops, and other sources.
4.1. NcnOperatorState
This state represents the mutual opt-in relationship between an NCN and an Operator. The NCN initializes this state. Once created, the NCN and operator can both warm-up and cooldown the state to show support for each other.
graph TD
classDef main fill: #f9f, stroke: #333, stroke-width: 2px;
classDef ticket fill: #fff, stroke: #333, stroke-width: 1px;
NCN[NCN]:::main
Operator[Operator]:::main
NcnOperatorState[NcnOperatorState]:::ticket
NCN -->|Creates| NcnOperatorState
NCN -.->|Opts in| Operator
Operator -.->|Opts in| NCN
Operator -->|Updates| NcnOperatorState
4.2. NcnVaultTicket
This ticket represents the relationship between an NCN and a Vault. It is created by the NCN to opt in to work with a Vault.
graph TD
classDef main fill: #f9f, stroke: #333, stroke-width: 2px;
classDef ticket fill: #fff, stroke: #333, stroke-width: 1px;
NCN[NCN]:::main
Vault[Vault]:::main
NcnVaultTicket[NcnVaultTicket]:::ticket
NCN -->|Creates| NcnVaultTicket
NCN -.->|Opts in| Vault
4.3. OperatorVaultTicket
This ticket represents the relationship between an Operator and a Vault. It is created by the Operator to opt in to work with a Vault.
graph TD
classDef main fill: #f9f, stroke: #333, stroke-width: 2px;
classDef ticket fill: #fff, stroke: #333, stroke-width: 1px;
Operator[Operator]:::main
Vault[Vault]:::main
OperatorVaultTicket[OperatorVaultTicket]:::ticket
Operator -->|Creates| OperatorVaultTicket
Operator -.->|Opts in| Vault
4.4. NcnVaultSlasherTicket
This ticket represents the slashing relationship between an NCN and a Vault. The NCN register slashers.
graph TD
classDef main fill: #f9f, stroke: #333, stroke-width: 2px;
classDef ticket fill: #fff, stroke: #333, stroke-width: 1px;
Ncn[Ncn]:::main
Vault[Vault]:::main
NcnVaultSlasherTicket[NcnVaultSlasherTicket]:::ticket
Ncn -->|Creates| NcnVaultSlasherTicket
Ncn -.->|Opts in| Vault