Collator selection methods and rewards have not changed since the launch of Statemine. This has been OK so far, with some community members running collators there, but the transaction fees are minuscule. With the release of XCM V3, we are planning a big technical push to put more functionality into system parachains.
As this functionality moves into system parachain, collators on these chains play an increasingly important role for the network, and should get rewarded for their services. Validators receive a portion of inflation based on the ideal staking rate (which is based on the number of parachains).
I suggest we add a third tranche to the EraPaid
calculation. That is:
- Validators
- System Parachain Collators
- Treasury (remainder)
As a basis from which to start a concrete discussion, I propose:
- Up to 20% of inflation (i.e. 2% at the current 10% rate) be directed to System Chains (to divide amongst their collators).
- No more than 0.01666 percentage points per parachain, covering up to 12 system chains before rewards per system para start to decrease.
- After 12 system chains, it just goes to 20% of inflation divided by the number of system chains.
I arrived at 0.01666 by taking the current state of Polkadot parachain validation:
10 (% inflation) * 5 (validators / para)
---------------------------------------- := 0.01666... % inflation / para
10 (1) * 300 (validators)
I include a unitless 10 in the denominator to account for the lower risk (no slashing) for collators, discussed below. Yes, I know this ignores (a) that not all 300 validators are utilized, (b) not all inflation is going to validators, and (c) the number of validators could very well change as it has on Kusama.
That leaves us with 0.01666 %pts
per parachain to create an incentive for block producers.
Example
The latest era payout was 342,001 DOT.
Multiplying by 0.0001666 gives 60 DOT (for one day). Times 30 days in a month is 1710 DOT to divide amongst active collators.
Set Selection
In order to choose who gets to be a collator, weâll need some parachain-friendly election mechanism. @kianenigma has mentioned having plans for something like this.
Slot Assignment
See the discussion in this issue. @bkchr suggests that anyone can submit a valid block (removes set selection element too), but Iâm not sure how this would handle many nodes trying to collate a block in the same slot?
Set Management
I suggest we donât have slashing, but routinely kick under-performing collators. Depending on the slot count per session and the number of collators, if some collator has not produced a block in a period in which they would have been almost certain to have a slot, we can simply remove them from the set and they can re-signal their intent to join.
Rewarding
The Relay Chain (or whatever system chain handles inflation) can broadcast an EraPayout
to each system parachain. The system chains would then divide (or make claimable) the reward pro rata based on points earned producing blocks.
Opening Statemint Collator Set
Right now, Statemint only runs with the four Invulnerable
collators set at genesis. I propose we immediately change this to two and create six open collation positions, such that others can start running collators. Likewise on the Collectives parachain shortly after its launch at the end of this month.