Each user must perform a few seconds of labor for the system, either useful labor, or just "make work" to prove the user is a real live human. The value of this labor, agreed-upon before labor starts, is then credited to the user's account. Each PHP/MySQL script-run is then charged against this account-credit. Thus performance of ten seconds of labor entitles the user to ten seconds of PHP/MySQL script time.
The maximum charge for any single PHP/MySQL script run is 100 milliseconds, but most script-runs require only 5 to 10 milliseconds, with average time overall about 10 milliseconds per script-run. Thus on the average, 10 seconds of human labor entitles that user to about one thousand script-runs.
In the course of navigating any Web site, a human typically takes about 5 seconds to read what's on screen, and another 5 seconds to take an action such as clicking on a navigation button or entering a small piece of text and clicking on a submit button, for a total of 10 seconds human time per navigation step, hence 10 seconds human time per script run.
Thus the 10 seconds of extra time needed to prove the user is a live human, which pays for 1000 script runs, in effect pays for 10 thousand seconds of ordinary navigation/usage time, a thousand times as much ordinary usage as the extra time to prove a live human. Thus the "overhead" to prove the user is a live human is only a tenth of a percent of total energy needed to navigate and otherwise use the site, a completely insignificant burden on the user.
So how long is ten thousand seconds? It's 167 minutes, or 2 hours and 47 minutes. So every 2 hr 47 min of totally heavy continuous usage the user must stop and spend 10 seconds proving the user is still a live human.
But most users wouldn't use NewEco so heavily. I expect on the average each user would spend about 10 PHP/MySQL script runs to accomplish each small useful task, and perhaps do about 10 of these tasks per day, a total of 100 script runs per day. Thus 10 seconds of extra labor to prove a live human, which pays for 1000 script runs, would pay for about 10 days of average usage. Nobody should complain about such a tiny burden to use services that are otherwise free and not full of distracting advertisements.
The one current exception to the expectation of 10 seconds of extra labor to pay for 10 average days of usage is when deliberately investing in answers to survey questions. If the user spends all 10 seconds of labor credit to invest in surveys, the user must then spend 10 seconds of extra labor to replenish those labor funds. But remember: Those 10 seconds invested/deposited in surveys are not spent, they're available for withdrawl at any time, to invest in a different survey-question answer, or to spend for other services. So in the end, if the user spends several extra 10-second bunches of labor to earn funds to invest in surveys, then later withdraws all that credit to spend on PHP/MySQL services, it's still 0.1% overhead relative to script runs.
So how does this protect against spammer's botnets? Spammers expect to be able to prove they are a human just once, then automatically submit millions of service requests per minute, with no further proof-of-human labor needed. On NewEco, this won't be possible. If a spammer spends 10 seconds of time to prove a human, then starts an automated script, after just one thousand script-runs, 10 seconds total script-run time, the 10 seconds of credit will be exhausted, and the spammer will need to perform another 10 seconds of labor to get 10 seconds more credit. The spammer will be busy full-time adding credit which gets quickly spent, and still the spammer will get only 60 thousand script runs per minutes, nowhere near the millions of script-runs the spammer expects to get for free.
TOP