Watsi and Zidisha are just the latest examples of a turning point in history: thanks to technology, people who happen to have been born in the world's poorest places are no longer condemned by geography. The internet is making location irrelevant.
We are pushing that revolution to the frontier, the developing countries where the internet has just recently become accessible to ordinary people.
A closure is a function augmented with implicit references to the context in which it was created. In case of an upvote link it would hold references to the post you could upvote. That reference exists not in the URL but in the closure at the servers side. If you keep these objects in memory indefinitely, you'll run out of ram.
Well, a closure can't be more than a couple hundred bytes, I guess.
If he wants to continue with that technique, I'd hack it like this: use reflection to crawl the closure, isolate the variables bound to the closure context, serialize those (the user id's, post id's, etc). Then the closure code, which will be one of only a few "templates", can be put into a global dictionary. The serialized state goes into the URL parameters. The closure is collected, and "reified" from the global dictionary and URL state once the user performs the action.
I don't know if LISP's reflection can pull this off, but I'm pretty sure it's no biggie.