A Candidate Design for the Smoothing Pool

I like this overall design a lot. I see two small issues and have small tweaks to address them.

Issue 1: Can be gamed by “hopping” in and out of smoothing pool

The design allows for opting in at any point. A strategy with positive expected value is to not participate in the smoothing pool and monitor the pool performance. If pool participants get sufficiently lucky during one reward period, then opt in for the remainder. Now you start earning shares of an above average reward pool and dilute people that have been in the pool from the beginning.

Proposed Solution

People can signal to opt-in/opt-out at any time, but it gets executed only at start/end of a reward interval.

Issue 2: Commission rate of nodes is ignored

As @objectObject points out above, commission is socialized. For nodes with low average collateral this design has positive expected value and for nodes with high average collateral it has negative expected value. This could lead to a race to the bottom where the smoothing pool is only attractive to 5% commission node operators and everybody else is forced to opt out.

Proposed Solution

  1. Let node_attestation_share = node_successful_attestations / total_successful_attestations the same thing @objectObject calls node_rewards_share above
  2. Let node_avg_commission be the average over all minipools of one node
  3. Calculate staking_pool_rewards based on the node_attestation_share weighted average of node_avg_commission
  4. Calculate a nodes rewards as 0.5 * node_attestation_share * (1 + node_avg_commission)
5 Likes