Feedback & Questions & Suggestions about POAP drops

Basically, I’ll continue the feedback from a previous thread, since I was directed here https://discourse.poap.xyz/t/33520-yup-community-meeting-17-march-2022/3683/2 to make such a topic.

1 What’s the consensus on recurring events? Should they have another status, should they be approved each time? Should an opt-in paid model, where you have x events/month + x limit links, make sense?

2 Dealing with farmers. So since I went through some logs I saw that some users are “farmers” in terms that they have a lot of POAPS but, here’s the issue, many of those framers users are connecting to Gather meetings and they don’t just connect, they come to the meeting place(navigating the map), sometimes they are emitting noses from TV or radio, and generally Gather will be heavy on your connection so I don’t know how many bots you could connect until you would have problems.

The thing is I participated in some POAP AMAs, and the new system that POAP uses to give POAPs is even more gainable, I mean it only requires a user to stay in the meeting, and spawning discord bots is far easier than spawning gather bots, especially you don’t need to move with a character in discord obviously…

So since KYC generally for such a thing is not a viable solution, what one can do? Why such farmers are viewed as toxic, I mean they are toxic because they strain a bit the POAP system but other than that if they are so desperate to get a POAP maybe we should ignore them, especially for virtual events where is really hard to limit farmers, is normal that a virtual event to have lower standards.

So one solution here is to treat virtual events as a second class, marked as such and with lower requirements since they are more gainable than the IRL ones.

3 The links system is very odd because for example you are required to know beforehand how many participants you’ll have.
It would be much easier for events to give them a single API link that can generate a dynamic link amount up to a limit.
That way if you have let’s say the limit is 100, I can choose to generate programmatically either 30 or 70 on the fly depending on how the exact number of participants. That way you can optimize resources.

4 Prune old unused links, I don’t understand why unused expired links are still available in the DB it just seems like a huge waste of resources…

5 Put a throttle on requests, it seems the claim link pages allow an unusually high amount of requests from the same IP you should allow a max of 4-8 requests/s to avoid guessing bots, and obviously like I mentioned a few times increase the domain from 6 to at least 8 chars.

6 Maybe add an option when the event is created to set a limit for how many POAPs an address should have in order to be allowed to claim your event POAP, this will especially be helpful in the future where an event organizer doesn’t want his POAP to be claimed by an address that hax 6000 POAPs for example…

7 POAP scanner doesn’t have an infinite scroll, right now, when you explore the POAPs from an address all POAPs are all loaded that’s slow, ugly, and is wasting client memory. Like all services that are dealing with feeds (for example Twitter), you need to have an infinite scroll implementation, and preferably one that’s using the intersection observer in both ways up and down because unfortunately, I see that only big services like Twitter, FB, Opensea implement performant infinite scrollers, many others just concatenate the data as the user is scrolling down which works but is a bad practice, you need a buffer with fixed No. of items, the buffer has its items removed & added based on user scroll behavior.

8 Probably you already know, but just in case the bug that for some users when they visit the claim page(with the secret as part of URL) they will get an error that the code is not found even though is valid, and the user has to refresh one or more times until the correct page is shown, this should probably be fixed at some point because it is a pretty old annoying bug, and I met users that think the code is wrong because of this bug.

I guess this covers most of the things I have to share as feedback.