Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
    • Switch to GitLab Next
  • Sign in / Register
  • THORNode THORNode
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 172
    • Issues 172
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
    • Requirements
  • Merge requests 39
    • Merge requests 39
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • THORChain
  • THORNodeTHORNode
  • Issues
  • #1067
Closed
Open
Created Aug 10, 2021 by THORChain@thorchain-adminOwner

ADD: Pooled Nodes

Current

There is no ability for a Node to be pooled by several people. This is by design, since delegated PoS systems tend towards centralisation and capture.

However, more effort needs to be made to scale the security of the system.

Currently Node Operators need both Advanced Technical Skills as well as High Capital Requirements, which reduces the number of viable node operators.

Desired

Separate the Skill Requirement from the Capital Requirement, but not impact the economic assumptions of the network, where nodes must not have an incentive to steal their ygg vaults.

Solo Node Operators trust themselves not to steal. It can also be that a group of up to four people to exist in a trusting relationship that their operator will not steal from them.

This is the same design as Oxen Network https://www.lokisn.com which as ~1800 nodes, with Operators charging fees for their (up to 3) bonders to run a node. It has been running for 2.5 years with no centralisation issues.

Implementation

Overview

Add an operator to a node, who can invite up to 4 bonders to their node. The operator can charge an operatorFee (0-1000 basis points) on all bond rewards. The bonders receive a pro-rata share of the rewards when leaving. Any slash is also shared pro-rata between all bonders to a node.

The operator and all bonders should bond a minimum amount of minBondAmount / 5 this means they are all roughly economic peers.

Inviting

The Operator starts a node with RUNE BOND:nodeAddress:operatorFee, which adds the operator Fee (or overwrites it). Then invites by a transaction INVITE:nodeAddress:bonderAddress. The owners of these addresses are now curated to bond to that node. Their bond will be added. Once higher than the minBond, the node can churn in.

Restrictions

Pooled Nodes must restrict actions to standby state to prevent complexity in calculating dynamic share of rewards. When a node is churned out the rewards are added to the bond and no further rewards earned, which makes calculating shares easy.

  • Bonders can UNBOND when the Node is in the standby state only. When they unbond they receive their bond which includes their share of rewards.
  • Bonders/Operators can BOND when the Node is in the standby state only. Their ownership of the node is adjusted up.
  • Operators can only change the operatorFee when the node is in standby state
  • Operators can UNINVITE:nodeAddress:bonderAddress to kick them from their pooled node in standby state. This will force return that member's share of the bond (and rewards).
  • Only operators can LEAVE

Mimir

Put the following on Constants with Mimir override:

  • bondersPerNode = 4

This sets the number of bonders per node, also the minimum bond requirement for a pooled node (minBond / bondersPerNode + 1)

It can be adjusted down to 0 to totally disable this feature, or scale it up if it works.

Economic Security

An Operator can steal a maximum of 25% of the total bond. If they bonded 1/5, and the operated a node with 1m RUNE, then can steal 250k RUNE worth of assets, but lose 200k RUNE. The network will not be impacted and LPs will profit.

This is why bonders need be in a trusting relationship with their operator, or have their own private agreements with legal ramifications. This is not the concern of the network, purely a concern of the pooled Node.

Comparison to Light Nodes

Pooled Nodes adds more consensus THORNodes to the mix and increases the market of total nodes available, driving up bonding rates. A pooled nodes have 4 bonders, paired with 1 skilled operator. It may be the case that businesses are encouraged around this, a skilled operator can run their own THORNode Service bringing more security to the network.

Light Nodes allow low technical skill, high capital solo operators to run in a ephemeral fashion (come and go at any time).

Edited Dec 13, 2021 by THORChain
Assignee
Assign to
Time tracking