Anki_Leaderboard icon indicating copy to clipboard operation
Anki_Leaderboard copied to clipboard

Scores are not reliable

Open AdrienLemaire opened this issue 4 years ago • 4 comments

2 days passed, and PM_ME_EXRS got from 446 days to 593 days. In the end, if we can just modify the anki sqlite db to add fake data, that loses all its interest.

A simple solution would be to add some validation on the leaderboard: Yesterday score was 362, if today is more than 362+1, let's ban the user.

That wouldn't prevent a user from re-creating an account though. A more robust solution would be to create a fingerprint of the user (ankiweb username + sqlite db state + initial score on registration), and do all updates using past information regarding the user.

AdrienLemaire avatar Apr 04 '20 04:04 AdrienLemaire

I'll give the user the benefit of the doubt for now. There could be a few reasons why his streak changed, your argument still stands though. Modifying the database is probably the most difficult way to fake your data. Since the data needs to be synced to a server it's not that difficult to send fake data without having to alter the database at all, if you know what your doing. I don't know what to do about this at the moment. One thing to keep in mind is, that the users on the leaderboard are only those who synced their data the same day as you. So if you would want to "cheat" you would have to sync fake data every day. Making sure that the streak isn't fake would probably be doable, but everything else is more difficult. I'm not sure if it's worth the effort.

ThoreBor avatar Apr 04 '20 08:04 ThoreBor

I'll give the user the benefit of the doubt for now. There could be a few reasons why his streak changed, your argument still stands though. Modifying the database is probably the most difficult way to fake your data. Since the data needs to be synced to a server it's not that difficult to send fake data without having to alter the database at all, if you know what your doing. I don't know what to do about this at the moment. One thing to keep in mind is, that the users on the leaderboard are only those who synced their data the same day as you. So if you would want to "cheat" you would have to sync fake data every day. Making sure that the streak isn't fake would probably be doable, but everything else is more difficult. I'm not sure if it's worth the effort.

The reported case is not even a "problem". I could have installed a-ddon on one of my accounts and then merged data from another "larger" account. this would easily justify this difference from one day to the next.

I think the problem is not to modify the database, but the data sent.

suggestion: implement a Checksum (hash)

cjdduarte avatar Apr 05 '20 14:04 cjdduarte

How would a checksum help with this? There's no 'trusted' way to get a checksum of a useful subset of the data, and there would be no way to verify the checksum without having the data on hand. If you're going to invent data, you can very well invent a checksum, too.

sopoforic avatar Apr 06 '20 17:04 sopoforic

This problem is due to changing "next day starts at" settings. If you have a small streak on 4 hours past midnight, but you kept up with reviews on other hours, if you now change the "next day starts at" to something like 23 hours or 22 hours, or any other time of day, you can see the streak increase or decrease.

ExtremeCoolDude avatar Apr 28 '20 20:04 ExtremeCoolDude