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 instandby
state - Operators can
UNINVITE:nodeAddress:bonderAddress
to kick them from their pooled node instandby
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).