A Decentralized Lie Detector
augur.net
augur.net
I know that Augur is planning to allow people to report event outcomes as "invalid", and that might clear up some of these cases, but what about an event where the outcome initially appears to be objective, but after-the-fact it is unclear and open to interpretation, resulting in two distinct camps of reported outcomes (and hence multimodality)? Perhaps one solution would be to simply declare events with strongly multimodal properties in the distribution of reported outcomes as invalid, and thus avoid the somewhat arbitrary decision where one mode would be declared the "consensus" by the algorithm, costing reputation to those who reported the other mode as the outcome.
Bitcoin is unique in that it presented the first viable decentralized solution to Sybil attacks (via proof-of-work).
To leverage that solution here, it would require that only people who successfully solve the proof-of-work puzzle are able to submit statements to the "decentralized lie detector", otherwise I could just spin up a billion VMs to spread the lies I wanted.
The only other solutions to this problem are centralized, a la government identification.
That said, the math is certainly cool; I just doubt it's very useful in a decentralized system.
The reason proof-of-work worked for bitcoin back when an army of zombie PCs could have legitimately controlled 51% of the network was that the rewards for a 51% attack were far less than just doing legitimate mining. I think that setting up a system similar to bitcoin won't work when there aren't the same financial incentives to keep the miners honest.
P.S. Isn't the PGP web of trust also a decentralized solution to Sybil attacks?
PGP web of trust requires a secure channel to broadcast the public keys, so it's not the type of P2P network that the Sybil attacks is applicable to.
And this was assuming TEN SECONDS of your whole smart phone (or PC!) hanging to send an email. That seems rather unacceptable. And what if you have even 3 recipients? Do you have to wait 30 seconds?
So proof-of-work in this way is really a no-go. On the other hand, slowing down spam servers by trickling through the connection with them, saturating their number of active open connections, seems like it's a good way to limit the amount of spam coming from them, assuming you can be sure they're spam-servers. Better doing that at the mail server end than trying to put that work into the client.
--
Incidentally, this is the same reason you can't hash something with a small address space (such as social security number, of which there are one billion possible numbers (according to Google if you google the phrase "how many possible social security numbers are there".)
Say you don't want to send your SSN in the plain, you just want to store a hash so that you can verify it but can't recover it.
Well, this doesn't work. An idea you might have is to securely hash it with a long, random nonce so that nobody can use a precomputed lookup table. Well, if you want to be able to verify the number next time, you need to store the nonce. So you're storing the nonce (salt) and the hash, but not the number.
Okay. Now someone who wants to break your number can just compute the hash with every possible SSN, of which there are a billion. That's only 2^29 and change possibilities. A 4 Ghz computer does 4 billion (2^32) operations every second multiplied by the number of cores. It can easily do 16 times as many flop's per second as your total address space, so just multiply that by the number of FLOP's you need per hash to see how few seconds it takes to brute-force it back.
So, your next idea might be, well, we'll just make the hash take really long. Use a complicated hash that takes several seconds to compute.
This works, as long as nobody has a billion times as many "yourPC-seconds" as you do. The problem is they do. If you take a few minutes to do your hash, someone else might have a billion times as many "yourPC-minutes" to do theirs. Your PC is one puny computer not dedicated to the task. Theirs can be a few thousand PC's - or highly dedicated hardware - that does nothing but that hash.
So while in a practical sense, and at great inconvenience to you, this kind of proof of work might slightly slow the rate of attack -- by making you wait seconds to minutes to computer your hash -- in fact even for cryptographic hashes it often doesn't stop a search of the entire hash space.
The bitcoin network currently performs between three hundred million and four hundred million gigahashes (billion hashes) per second. That is 300 to 400 quadrillion hashes per second. By most estimates on about $300 million in hardware.
And you're not asking for it to stop a brute-force search. You're asking it to be so inconvenient they won't bother to brute-force an address space of 1 possibility. (That even though there is only one possibility, they just won't bother to compute it; but your computer will).
I think the idea is a non-starter.
It's called greylisting, and it works really well as a cheap and easy spam prevention mechanism. I wrote an implementation and used it for years as a first-line-of-defence; it let me use a crappy little 32MB ARM box as an SMTP server. (<plug> http://spey.sf.net </plug>)
The other key point is that Reputation holders are not able to report on events as often as they want to. Instead, they only can report on events at fixed, pre-defined intervals. This precludes sybil attacks by simply report-spamming the network.
At one point in history most people believed the world was flat.
I'll add to that. At one point in history in 2014 most people believed that all their ancestors regarded the world as flat.
In Augur, truth equals consensus. As such, the Augur oracle is intended to be used for events which are easily and objectively determinable after the event has occurred. (For example, the winner of an election.)
However, as you correctly point out, there are MANY cases where consensus might not reflect the truth, such as:
- Events where there is ongoing controversy about what happened (e.g., "Malaysia Airlines Flight 370 was brought down by terrorists")
- Events where the outcome is subjective (e.g., "was Carter a good President?")
- Events where the outcome is unreasonably difficult to determine (e.g., "what is President Obama's checking account balance?")
These events are NOT good candidates for Augur! In fact, all questions include a "this was a bad question" answer, in case a user is asked to report on an ill-defined or unanswerable event.
Of course, Augur's oracle can dutifully report the consensus in these cases -- and the consensus very often will be "this was a bad question" -- but it's up to you to use your judgment as to whether this consensus is an accurate reflection of the truth.
Uncaught TypeError: Cannot read property 'in_china' of undefinedTypeError: $S.global_conf is undefined blog_editor-8c9dc8f38e8dff53f0a4430e9075aaca.js:35040
"Invalid App Id: Must be a number or numeric string representing the application id." all.js:61
"FB.getLoginStatus() called before calling FB.init().
http://www.motherfuckingwebsite.com/ is looking better by the day
edit: wow I'm counting over 50k lines of JS in this page.. I think it's this: https://github.com/craigcollie/Bobcat
This makes me feel sad
One example of how this could be used (and our primary focus) is on prediction markets using the oracles to report on the outcomes of events after they occur. (Imagine a decentralized InTrade)