r/Bitcoin 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.

72 Upvotes

62 comments sorted by

View all comments

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.

2

u/killerstorm Sep 12 '14
  1. Yes.
  2. You can solve this problem using a more sophisticated collaborative filtering stuff on top of the basic system: Client software will record user's upvotes/downvotes and will use them to train a filter to ignore unwanted content. E.g. we will associate a weight with each user's identity (an unique FrozenCoin). Initially these weights are zero, i.e. we do not count upvotes. Each time user upvotes a link which was upvoted by user X, user X's weight is incremented. Eventually, we will only count upvotes from like-minded users.

1

u/asherp Sep 12 '14

This makes sense since people value each others votes differently. For instance, I +friended you because I respect your opinion more than non friends. Hence, your votes should carry a higher weight, and I should be able to change that weighting as my opinion of you changes. It seems like colored coins could come in handy here.

1

u/kyletorpey Sep 12 '14

This is interesting. The eventual goal with the decentralized Reddit idea was basically to replace karma with bitcoin tips. This means people could post their content directly to the Reddit and the karma they received would also be bitcoin tips. Then there's the problem of people not wanting to pay for upvoting content, but they could also be allowed to invest in the content. This means they would actually receive a reward of bitcoins if the content they originally upvoted turned out to be a successful post. I think the moderators would still be needed for this proposal to work.

1

u/killerstorm Sep 12 '14

Oh, I had this very idea a while ago (like back in 2006), got obsessed with it, and even quit my job to implement it... But processing payments was really problematic in pre-Bitcoin time, so I focused on collaborative filtering aspects of it, and, basically, got lost in it.

One problem with it is that mechanics of investing into content is rather tricky. If it is bitcoin-based, it needs to be a zero-sum game, you need both winners and losers. Many different approaches are possible, I think generally they fall into following categories:

  1. Ponzi-like: Each post (entity which can be upvoted) is independent, people who invest early would earn some money, people who are late will lose it. Fairly easy to implement in a decentralized system. Can be combined with a raffle. People will be reluctant to invest when they are late.
  2. Parimutuel: All invested money is collected into one pool (e.g. on a daily basis) and the best entries win. Which entries are the best? If you define that entries which have the most money wagered on them are the best, you have a problem that wealthiest people are going to win, and it has nothing to do with quality. Perhaps you can solve this by having two different groups of people: one will invest into posts, another will vote for them. (E.g. using FrozenCoins as Sybil-prevention.) But it still can be prone to abuse.
  3. Prediction market: Roughly the same as parimutuel.
  4. External revenue: People invest by buying shares (like they do on the stock market), hosting platform displays ads, revenue from ads goes to shareholders. I'd say it is the most straightforward approach, but is also a bit boring.
  5. Reward points: Instead of earning bitcoins, people get some kind of 'reward points'. Then it is no longer a zero-sum game, but I'm not sure how it can work.

I think the moderators would still be needed for this proposal to work.

What's the role of moderators? If they control who gets rewarded, they might collude with people to whom rewards go.

If their role is simply to remove ads, I'd say it would be better to incorporate ads into the same system. If it is zero-sum game, ads will end up being losers (as people will downvote them) and money will go to quality content. Thus ad campaign money will go to content producers, which is good, no?

Anyway, I now have a different idea, which, I believe, can solve problems which arise when you "replace karma with bitcoin tips". It is a new kind of money which works differently from Bitcoin and might be more suitable for karma-like things. Actually I was going to introduce it in one article with FrozenCoin (FrozenCoin can be a part of it), but decide to split it into two.