SNS participation order

Is there a way to retrospectively see which principal contributed to an SNS sale in which order?

In the swap canister, there is the method list_direct_participants . Are these ordered by time of participation? I.e. can we know who were the first users to contribute 50 kICP , 100 kICP, etc.?

I believe list_direct_participants is ordered by time of participation. Specifically, the time refresh_buyer_tokens is first called by that user. However, participants can participate multiple times, and if they do, they will retain their original place in the list.

I believe the ordering of list_direct_participants is not guaranteed (it’s not something I’m aware DFINITY having thought of and as far as I can tell there are no automated tests to make sure it doesn’t change). If you let me know what exactly you’re planning on using this for, I can give you a more confident answer about whether it will work. (e.g. I only looked at the code for the current version of swap, and if you’re looking at an old version of swap it may be different.)

1 Like

Thank you @Andre-Popovitch for the reply!

The idea is to whether or not there is a way to reward the participants based on their time of participation in the SNS sale. So for example to reward the first 50k ICP invested, then the first 100k ICP etc. I understand from your response that this is probably not possible retrospectively as users can participate multiple times and then they keep their “early” slot in the list.

Yes, I believe that is the case. However I see why this is desirable and I’ll consult with the team whether there’s a way to do this or if a way to do this could easily be added. Are you only interested in doing this for a swap that has already happened, or is there an upcoming swap that you anticipate wanting to do this for?