Author

Topic: [IDEA] CaptchaCoin (Read 1519 times)

sr. member
Activity: 308
Merit: 250
Create smart contracts without coding skills!
September 20, 2014, 02:31:39 PM
#14
oopss.., this is CAPTcoin thread?  Smiley

more 15,000 captchas have already solved by me..  Grin
hero member
Activity: 616
Merit: 500
Firstbits.com/1fg4i :)
October 20, 2011, 01:48:56 AM
#13
With hashes you can't add new transactions to old blocks without changing the puzzle and the answer to it, but if you just slap the transactions as plaintext together with a totally unrelated proof of work, there is nothing stopping an attacker from rewriting history at will.
legendary
Activity: 1358
Merit: 1003
Ron Gross
October 20, 2011, 01:22:41 AM
#12
There is still the issue of verifying transactions though; how will transactions be incorporated in the proof of work of RandCoin or CaptchaCoin?

It doesn't matter what unit of work is used - hashes, captchas, of "randomness", the same blockchain concept from Bitcoin should work (given that some basic properties hold). E.g. for CaptchaCoin, a new Captcha that is solved creates a new block with confirmations of the transactions within.
hero member
Activity: 770
Merit: 500
October 19, 2011, 11:31:38 PM
#11
Transactions can be verified automatically by the client like it is the case now, and integrated in the current block which hash will be used (amount other parameters) to seed the current captcha.
hero member
Activity: 616
Merit: 500
Firstbits.com/1fg4i :)
October 19, 2011, 05:45:08 PM
#10
There is still the issue of verifying transactions though; how will transactions be incorporated in the proof of work of RandCoin or CaptchaCoin?
hero member
Activity: 900
Merit: 1000
Crypto Geek
October 19, 2011, 05:21:04 PM
#9
I like the idea of doing something useful with all the effort spent on it.

That could be intergrated into new alt block design.

There are probably other useful things that could be done with the network too.
hero member
Activity: 770
Merit: 500
October 14, 2011, 11:44:54 AM
#8
Blockchain proof of work needs to be hard to come up with but easy to verify. Captcha solutions are as hard to verify as to find
If the captcha generator is deterministic (always producing the same catcha for a given set of inputs) and the algorithm is shared by the network, then the solution can be trivially and automatically verified by regenerating the captcha from the solution and comparing the outputs.
To prevent attacks using rainbow tables of captcha, the captcha can be generated with two parameters : a "clear text" value to be displayed that must be long enough to make it too complex to bruteforce, and a "salt" value used to alter the distortion of the print, and that would be equivalent to the nonce we are using with the current generation of algorithms.
The clear text can be easily found visually by a human.
The salt is then recovered by brute force.
The difference between a human and a computer is that the human only has to find the salt, which reduces greatly the complexity of the problem.
Having to recover the salt allows to increase the difficulty of resolving the problem versus that of verifying it.

and a captcha problem can't be generated without the generator already knowing the solution.
This can be worked around by inventing a game whereby the generator is positively incentivized as the captcha takes a longer time to resolve.
For instance, the generator of the block is rewarded based on the time taken by the network to resolve his captcha (with an exponentially increasing reward to make it exponentially more interesting to wait just a little bit more rather than submit the solution to his own captcha).
The resolver of the block is rewarded by the right to become the next generator.
This is just an example, but other more complicated games with asymmetrical reward can be designed.
The rule of thumb is to create an equilibrium by setting a positive expectation for respecting the rule, and a negative one for breaking it.

The utility value of the act of resolving a captcha can also be leveraged as an incentive to work around this problem.
Assuming that the agent who inputs the captcha is not able to resolve it himself (a bot for instance), he doesn't know the solution, and therefore cannot give it.
Submitting a captcha for resolution can be implemented as a transaction on the network, with a commission in CaptchaCoin that will subsidize the network.
The problem of this second approach is that, unlike the first one where the captcha is generated, it cannot be verified automatically.
This again can be worked around by setting the rule that a block generated with a false solution is illegal and will be rejected by other "miners", entailing a fork of the block chain.
The incentive is high for other miners to verify the solution submitted by someone else, and to continue on the "right" block chain :
First, a false solution gives the opportunity to repost a solution (and therefore take the reward).
Second, posting solutions on top of a false solution knowing that everybody else will reject this branch warrants a negative outcome for the miner.

RandomCoin - to earn RandomCoin you have to provide "true" randomness to the system (I'm not sure "true" randomness e.g. quantum can be distinguished from simulated randomness). Would be a neat distributed replacement for random.org.
In theory it's possible to distinguish. In practice a good PRNG with a not-too-long truly random seed can fool pretty much anything you throw at it. In other words, much harder to verify randomness than to generate it.
Also, Intel IVB will have integrated "digital" true RNG making randomness generation easy.
I agree for RNG, it can and must take a huge amount of data to detect with a reasonable confidence that the process is not really random.
Not practical as a proof of work.

Another possibility could be to predict the outcome of a publicly known random process : let's call it GuessCoin
For instance, the Nth decimal of an exchange rate in 3mn from now.
Low decimals are so volatile that there is no practical model to predict them, and can be considered as random for our purpose.
Every 3mn, miners input their guess (randomly) over a fixed period (say 30s).
Because the outcome is random, the reward will effectively be evenly distributed between the miners over time.
Because many miners are rational, they will place their bet on numbers where less people bet so all the solutions will be covered.
The chain doesn't need to know the value of the exchange rate : at next round, the majority of miners will post their answer to the answer that they believe was the right one.
They could even be imprecise and sometime wrong. What matters is that the way their answers are distributed will decide for the "right" path of the chain.
To prevent the case where a miner will cheat by betting on all the possible outcomes at once, he must loose money by playing.
His reward will be proportional to how much money he has bet, and how soon he did so (sooner pays better to compensate for having less information on other participants bets).
With a truly random process and without the ability to predict the future, participating to such a chain would be a zero sum game without some external subsidy.
This is where the minted coins get involved : by being added to the potluck that the lucky winners of the draw will share.

One interesting side effect is that the block chain will fit the random variable on which it is based, with one cycle of delay.
This can be used as a distributed digital recorder of quantifiable random processes.
full member
Activity: 168
Merit: 100
October 14, 2011, 05:45:35 AM
#7
Captcha-Services will handle this, so it is back to computers + cost to generate coins.
donator
Activity: 2058
Merit: 1054
October 14, 2011, 05:25:19 AM
#6
Blockchain proof of work needs to be hard to come up with but easy to verify. Captcha solutions are as hard to verify as to find, and a captcha problem can't be generated without the generator already knowing the solution.

RandomCoin - to earn RandomCoin you have to provide "true" randomness to the sysetm (I'm not sure "true" randomness e.g. quantum can be distinguished from simulated randomness). Would be a neat distributed replacement for random.org.
In theory it's possible to distinguish. In practice a good PRNG with a not-too-long truly random seed can fool pretty much anything you throw at it. In other words, much harder to verify randomness than to generate it.

Also, Intel IVB will have integrated "digital" true RNG making randomness generation easy.
legendary
Activity: 1358
Merit: 1003
Ron Gross
October 14, 2011, 04:14:23 AM
#5
the other issue is, captchas are sometimes used to slow the rate of form submission, because the captchas are generated on-the-fly, and so have to be solved on-the-fly.

if you could pre-solve a million captchas for use anywhere, then sites that employ a captcha form could still come under massive load when you do a million form submissions at once.


That's true, hadn't thought of that. Well, the idea was fun while it lasted.
legendary
Activity: 1358
Merit: 1003
Ron Gross
October 14, 2011, 04:10:03 AM
#4
Also, I like it as a thought experiment, exploring other proof of work systems. So far we only have "work" that seems to be tailored to CPUs and GPUs (let's put ASICs and FPGAs aside for a sec). Could there be other proof-of-work systems that measure other times of work?

RandomCoin - to earn RandomCoin you have to provide "true" randomness to the sysetm (I'm not sure "true" randomness e.g. quantum can be distinguished from simulated randomness). Would be a neat distributed replacement for random.org.

Any other creative ideas?
legendary
Activity: 1358
Merit: 1003
Ron Gross
October 14, 2011, 04:03:03 AM
#3
Here's a thought. Require micro-payments in Bitcoin instead and the problem is solved.

Yeah, I thought about that. That would be the practical solution, and I'm sure will become popular one way or another (e.g. Witcoin).

Still, what I like about CaptchaCoin is its (IMHO) elegance and sort of equivalence to today's methods.
If a website today required 1 CAPTCHA to register, replacing its system with CaptchaCoin would not make its users pay more or less than they do today (marginal cost).
hero member
Activity: 588
Merit: 500
Hero VIP ultra official trusted super staff puppet
October 14, 2011, 04:00:07 AM
#2
Here's a thought. Require Bitcoin micro-payments to post forms instead of creating an entirely new Coin system.

Problem solved.
legendary
Activity: 1358
Merit: 1003
Ron Gross
October 14, 2011, 03:56:41 AM
#1
Disclaimer: I don't expect this to be really useful, or ever be implemented - it's just presented here as a fun idea.


CaptchaCoin is a new alt chain that would be made of CAPTCHAs as the proof of work, instead of CPU or GPU work - it's human work.

It would have a blockchain of CAPTCHAs, each depending on the previous one in some way (weak point - I have no idea how to automatically generated CAPTCHAs that depend on the previous one in a similar fashion to the blockchain technology ... no idea if it's possible).

While CAPTCHAs can be solved by computers today, I assume it's still relatively a lot of work, and humans might do a better job at solving them (otherwise, why do they still exist if computers solved them easier than humans would ?)

The benefit to users is that instead of having to solve CAPTCHAs when trying to use a service, I can pre-solve a set of CAPTCHA beforehand and thus acquire me some CaptchaCoin, and pay with the CaptchaCoin for registering to the service (automatically, via a browser plugin), thus proving that I did solve them in the past. If I sit around and solve 20 CAPTCHAs now, I will save me the little annoyance whenever I register to a website. I think a CaptchaCoin would have to be destroyed when registering to a new service like Namecoins are destroyed when registering a name.

Of course, I could also buy CaptchaCoin with Bitcoin, paying someone else to do the hard work of solving CAPTCHAs. This is not a novelty - today, botnets pay to have CAPTCHAs solved ... the only difference is that with CaptchaCoin, regular users will be able to do the same as well.


Thoughts?
Jump to: