Swaps to allow at most 100K SNS neurons for direct participants

Hi everyone!

This is a heads up for upcoming SNS projects.

TLDR

https://dashboard.internetcomputer.org/proposal/131056 adds a new constraint for SNS init configurations, namely:

max_participants * neuron_basket_construction_parameters_count
    <= 100_000

where

max_participants = max_direct_participation_icp_e8s / min_participant_icp_e8s

Details

Due to memory limits, the SNS Governance canister is able to create a finite number of SNS neurons. To guarantee that this limit cannot be reached while SNS neuron baskets are being created after a successful swap, we introduced the above constraint, which would be checked at the CreateServiceNervousSystem proposal validation time.

This constraint prevents the worst-case scenario in which there is an overwhelming number of small participants that flood the system. However, it also has the downside that min_participant_icp_e8s cannot be a small value anymore if max_direct_participation_icp_e8s is big enough. Note that having low minimum participation amounts makes swaps more accessible and does not necessarily imply that it will be flooded.

For example, a swap with a maximum direct participation of 300,000 ICP and a basket of 5 neurons for participants would need to have a minimum participation of at least 15 ICP to pass validation.

Ways of mitigating larger minimum ICP participation requirements

If you intend to propose the launch of an SNS with small minimum ICP participation amounts after the limitations take place, you can change the configuration to account for the new limits. You can

  • Lower the number of neurons in the basket given to swap participants (the minimum allowed value is 2).
  • Lower the maximum direct participation.

For example, a swap with a maximum direct participation of 300,000 ICP and a basket of 3 neurons for participants would need to have a minimum participation of at least 9 ICP to pass validation.

Next steps

These changes have been made to address security concerns, however we understand that forcing a larger minimum participation is not the ideal solution. The NNS team plans to design and implement a more flexible mechanism that would still be secure, and then loosen or remove the constraint described above. Follow this thread for more details in the near future.

7 Likes

A new, more flexible mechanism for enforcing the 100K limit on the number of SNS neurons has recently been proposed and adopted.

With https://dashboard.internetcomputer.org/proposal/132151 being adopted, new swap participants will now be rejected if the maximum number of SNS neurons required for earlier participants (100K) has been reached. Users who cannot participate in the swap due to this limit would observe an error popup with an explanation (displayed as a popup in the NNS dapp). All the ICP that did not end up participating in a swap is of course refundable, as before.

In this scenario, the early participants would still be able to increase their participation, helping the swap succeed.

With https://dashboard.internetcomputer.org/proposal/132377, the strict constraint described at the top of this thread is no longer enforced at SNS initialization time. While preparing for a launch, one should thus ensure that the minimal participation amounts are not too small, as that would make it cheaper to flood an ongoing swap with a large number of small participations, potentially limiting other community members from being able to participate.

2 Likes