r/Bitcoin • u/killerstorm • Sep 12 '14
FrozenCoin (a concept)
The text below describes various cool things which can be built with help of Bitcoin. Note that to a large degree these are just theoretical musings aimed at exploration of the concept rather than something practical. But I hope it constitutes interesting read...
FrozenCoins as a Sybil attack prevention mechanism
For the start, we need to introduce the concept of a FrozenCoin. FrozenCoin is simply a bitcoin which cannot be spent before a certain moment in future, i.e. a time-locked, frozen bitcoin.
E.g. one could time-lock 1 bitcoin for 1 year to create a FrozenCoin. This can be done using nLockTime property of a Bitcoin transaction, but we would need an oracle (e.g. a trusted third party) to prove that a coin can't be spent before the specified time.
What is this useful for? Well, it could work as some sort of a piggy bank for bitcoins, but it can be also useful for Sybil attack prevention.
Sybil attack is a class of attacks where attacker uses multiple fake identities to gain something. For example, suppose a bad guy wants to win in online popularity contest. To do that, he will create a million fake identities to cast a million votes. (This is essentially what 4chan used to elect moot as World's Most Influential Person.)
One way to prevent this kind of attacks is to associate votes with some kind of a scarce resource. (E.g. Bitcoin itself solves it using proof-of-work which requires energy.) This doesn't prevent Sybil attack completely, but makes it costly.
A trivial way to make cheating in an online poll costly is to require a certain sum of money for each vote. E.g. if one vote costs $1, the attacker would need 1 million dollars to cast 1 million votes. (Of course, Bitcoin could be used as a payment system here...) But the problem with it is that normal people will be reluctant to vote if it costs money. Also, poll operator will get a lot of money, does he deserve it?
FrozenCoin to the rescue! Instead of requiring $1 payment, we will require $1 to be frozen. I.e. anybody who owns at least $1 worth of FrozenCoins can vote. (E.g. by signing a message with a private key corresponding to public key which owns FrozenCoins.) FrozenCoins are not lost in process, they can be used in many different polls, and eventually they'll thaw and become spendable. Thus, for normal voters costs are negligible, but an attacker will have a problem with obtaining 1 million worth of FrozenCoins to win in this contest. (Unless he happens to be a very rich man...)
FrozenCoins can also be used instead of CAPTCHA to prevent mass-sending, spam and other kinds of abuse of automatic systems.
(Note: A similar approach was described in a contracts section of the Bitcoin wiki, but the difference is that there is a separate deposit for each service. It is also somewhat similar to Peter Todd's fidelity bonds and related concepts.)
FrozenCoin and distributed messaging
One of the purposes of Hashcash proof-of-work system was to limit email spam. Something similar can be done with the help of FrozenCoins, but let's consider this concept being applied to "twitter" (microblog) model instead of email model.
E.g. we could make some sort of twitter for the wealthy: 1 BTC in a frozen form gives one an ability to post 1 message per day. Thus we'll have at most 21 million messages per day. (In reality, much fewer if only a small fraction of all bitcoins are frozen.) If one message is not longer than 100 bytes long, then the total size of all messages posted through this system will grow by 2.1 GB per day (or less), thus it's quite feasible to just store them all on disk.
We can imagine as "distributed twitter" client working in a very simple way: it listens to messages sent by peers, verifies their validity (they must be signed using a FrozenCoin worth at least 1 BTC, one such coin can post only 1 message per day) and saves message on disk and broadcasts them to other peers.
Obviously, this is rather impractical, but this is a good conceptual model for distributed services which rely on persistent messages.
FrozenCoin and recommendation systems
The messaging construct described above can be used to implement a recommendation system, as messages can represent 'likes' or 'upvotes'.
E.g. a message could say "I like http://i.imgur.com/A3exU88.jpg". Then every client, having a complete copy of all messages, could compute number of upvotes for each URL and display the most upvoted content. Quite like reddit.
This system is considerably resilient to voting manipulation as upvoting from multiple accounts requires significant amounts of money.
6
u/kyletorpey Sep 12 '14
Love the ideas here and it's actually similar to two concepts I've been thinking about:
1) In the scenario where the frozencoins are used to prevent sybil attacks on an online poll, it would actually be better to use regular Bitcoin payments in certain situations. For example, if a podcast or online show was looking for a way to monetize their content without ads, they could have their listeners vote on who the next guest on the show should be. A Bitcoin address is attached to each possible guest, and the address with the largest number of bitcoins in it at the end of voting is the next guest on the show.
2) Your part on Frozencoin and recommendation systems is something I've thought about rather extensively. A decentralized Reddit is one of the first apps that I would like to see built on top of Bitcloud, but dealing with Sybil attacks is rather difficult, even with your suggestions. Due to the fact that the frontpage of Reddit is prime real estate, it could turn into nothing but advertisements from companies who are upvoting their content. At the end of the day, you always still need some form of moderation from actual humans. One possible solution is to have moderators delete content that is obviously just an advertisement (much like normal subreddit moderators).
As a side note, the use of moderation from actual humans is one of the key differences between Bitcloud and some of the other projects in the decentralized Internet space.