Earlier quoted context omitted.
The minimum I would consider responsible is 1. Use a hashcash style proof of work mechanism to register account. The server send a challenge and have the client compute a nonce under the difficulty. This could be turned to take an average of seconds to minutes on your median users device. This isn't a long term solution because eventually an attacker will realize that they can use more powerful machines to create syb…
Hashcash is broken for any situation like this. The amount of hashcash time needed to thwart spam is higher than any user is willing to wait for, doing proof of work on a phone. Plus, spammers normally have their own Cloud Computing to resort to, and it's cheaper than Amazon AWS. https://en.wikipedia.org/wiki/Botnet
Blind signed auth tokens are way better but much more resource intensive to implement