This blog has moved to Medium

Subscribe via email


Archive for September 2011

FreeCoin – a response

A while back, I wrote this piece about why Hoarding is not hurting the Bitcoin economy. A few days ago, I got this reply from Owen that basically disagrees, and proposes a new virtual currency called FreeCoin that will not incentivize hoarding (not to be confused with the the open source Bitcoin client called FreeCoin).

This is my response. TL;DR – I really doubt it will work out.

The article is a really interesting and balanced article.

“if the potential exists to get rich of bitcoin, bitcoin can by definition never achieve value stability.”

I don’t agree with this statement. The current volatility comes from the very small market cap and general size of the Bitcoin economy. Why do you think the value will be unstable if 10-50% percent of the world’s economy is based on Bitcon? Imagine that Bitcoin is like a new kind of mineral, found in space, in very small quantities, with magical properties that allow it to be almost infinitely divisble and transferable to anyone. People don’t know yet how much should this mineral be worth, hence the ongoing speculation.

But, if in 5 or 15 years everyone realized this magical mineral is so good as a currency they would trade in all their fiat currency for it, then there would be no more speculation. As Gavin said, it would be boring, like the US Dollar is (relatively) boring.

Let’s talk for a second about that “poor merchant” trying to price his goods for Bitcoin. In the next few years, until Bitcoin achieves world dominancy, that merchant can price his goods with USD, and offer Bitcoin as an alternative means of payment, with always-updated price calculated using the realtime BTC/USD rate. He can immediately sell off any Bitcoin he gets, isolating himself almost completely from Bitcoin related risk. If he’s feeling a little risky, he can keep 10% of his reventue in Bitcoin. If he’s a complete die-hard Bitcoin fanatic, he will just keep a lot more of his Bitcoin earnings and will hardly sell them – but exactly how much BTC to sell is his choice.

Now, fast forward twenty years from now. Bitcoin has now become the de-facto means of payment. Some old fashioned individuals still keep dollars, but most have long realized the benefits of Bitcoin and have long ago sold any holding in USD. The prudent move for that merchant will be to keep close to 100% of his revenue as pure Bitcoin. The percentage of Bitcoin he sells off immediately will depend on an abstract “bitcoin stability indicator”. In the long run, I see no reason why he won’t feel completely safe holding most or all of his money in BTC. It’s not Bitcoin that will flucuate, it will be everthing else. The Oil/Bitcoin rate will flucuate like it does today, but the Groceries/Bitcoin rate will not.

Not just merchants will develop an inner understanding of this indicator – “plain people” will start hearing about more and more shops accepting Bitcoin and offering discounts due to the reduced fees, and will finally request their employees to start paying a portion of their wage in Bitcoin.

This is the “Bitcoin wins” scenario, at least. It is by no means a certainty at this point – the risks are great, of course, and this is the reason the price of Bitcoin hasn’t skyrocketed to $1000 per BTC yet. However, I see no fundemntal problem with the scenario I described.

You said a merchant pricing in BTC will have “wated energy to reprice his goods whenever the value changes”. Don’t you think this repricing can be fully automated? It already is today for online shops.

Now, to analyse FreeCoin.

I honestly believe it just can’t work like you described. I’m not sure what you meant by mining “having a fixed difficulty”. This can be interpreted to mean one of two things:

  1. Any miner generates a fixed number of coins per unit of time (on a given hardware), regardless of how many other miners are mining.
  2. The total amount of coins generated in an hour is fixed, and is split evenly among miners according to hash power.

The second option is very similar to how Bitcoin behaves today, with one exception that today the number of BTC generated per hour is designed to halve ever four years. Let’s call the amount of FreeCoin generated every day X, and that and the vision is that within 20 years FreeCoin will replace all the world’s currencies. If this is true, in 20 years from now there will be 20*365 X FreeCoin in existence (assume coin loss due to hard drive crashes are negligible).

Since 7300*X FreeCoins will replace all the world’s currency, this means X FreeCoins will be worth quite a bit of money (1/7,300 of the total money in the world, to be exact). If you start the protocol today, I can mine X FreeCoins in a few days without any problems, because there aren’t a lot of miners involved. I know that in 20 years I won’t be able to mine as much, because everyone and his sister will be running a mining rig, so it will be very difficult to run a mining rig. So, if I think FreeCoin will succeed in the future, I will value it quite a lot today, leading to speculation, the very thing you set out to prevent.

Let’s explore the second definition of “fixed difficulty” – everyone calculating 100 hashes per second can generated 100 FreeCoin per second, always, regardless of how many other miners there are. So, if I buy 100 FreeCoins for $500 today, what guarantees they’ll be worth $500 in the future? If there is no limit at all to to how many FreeCoin there will be in 10 years from now, why would anyone expect that 100 FreeCoins will retain their value in this time period? Scarcity is a fundamental property of currency, and a coin without some form of inherent limit to the number of generated coins cannot maintain its value.

It is my belief that the “hoarding problem in Bitcoin” is in fact one of its key genius feature – it is a currency that is designed to so overwhelming to people you just can’t resist joining the game, even if the current state of the economy is sub-optimal (no encryption, hacks, difficult to use etc…). People believe its usability, adoption and value will grow, so they join in early tell their friends, thus bringing in more people etc… It is a bit like a pyramid scheme, only it’s not – there is no reason to believe an equilibrium valuation cannot not be reached (this will take a few years, of course).

The Bitcoin millionaires did do something, they did not get rich for free – their wealth is their reward for being smart and brave enough to support a new p2p virtual currency, something that hasn’t been tried before. They incentive miners to secure the network, and “plain people” to buy Bitcoin. While some of this bought Bitcion will be hoarded, parts of it will be spent – I think hoarding will be much less of a problem when valuations reach the real target value. Hell, if I could spend my Bitcoin today at $1000 a BTC, I wouldn’t hesitate on spending them – I simply believe they’re worth a lot more than $5, so I’m not willing to part with them for such a low reward.

While they didn’t necessarily do it for idealistic reasons, the early angel investors that invested in Google, Facebook or Microsoft also has monetary gains in mind. The world has become so much better due to that initial investment in these companies, even if a few people got filthy rich in the process – and the same might be true for early Bitcoin adopters.

I admire your moral imperatives, but I believe they conflict with reality. In a “morally perfect world”, everyone has everything they ever needed. In our world with finite resources, it’s the smart, capable and willing that reap the rewards. Let us hope they will not just bask in the glory but contribute some of their wealth back to society. Regardless of their own individual actions, I believe society is improved by innovation and risk taking, even if it creates some islands of inequality. Even if early adopters get rich, the rest of the population can enjoy all the other benefits Bitcoin will bestow upon us.

Got questions about Bitcoin? Now you can get answers!

Got questions about Bitcoin?
The Bitcoin Q&A site is finally open for business.

Check out the best questions.

Leaving so soon?

tl;dr – I’m leaving Google, to join a hot new stealth-mode eCommerce startup founded by Aviv Revach and Eyal Brosh, after five months of being at Google.

To make a long story short – during my short period there, I came to the conclusion that I really prefer working in a startup over being at a large company, at least in this stage of my life and career. The reason I joined Google was to learn how a good big company works – and Google is the best company to do this at. It has really excellent people to learn from, a good culture of moving fast, iterating, dogfooding, and fixing things that are broken. The one thing I was missing there was … they are not a startup, with all that implies. Although Google preserves a lot of startup elements in its culture, and has “startup like” projects started all the time, from above and bottom, including the famous 20% time, what I was missing the thrill and focus of being able to start a new project from absolute scratch, being in charge of major technological decisions, choosing the tooling and technology, and getting the chance to “make it or break it” on my own.

In Google, I knew that even if a project I started would fail, my job would be safe. There are a lot of advantages to this kind of stability, but the advantage of being totally on your own is that it hones the senses, simply because you and your team have so much riding on the success of your project. In a startup, I know that a lot of decisions I make will have major impact on my success, and this is much less apparent in any medium-large company.

I really intended to give it a go and learn all that I could from a large company, but then came Aviv and Eyal, both of which I knew from my army days, and slowly convinced me that their startup was the next best thing on the planet.

It took an agonizing few weeks to decide, and it was a really tough choice (thanks to my wife Aya for her support in these weeks. She heard my endless deliberations and took it really well, and recommended me the wonderful book How We Decide). Eventually, I decided that at this stage of my life, joining a promising startup, especially with such very high caliber people, beats the promise of staying at Google and trying to make things work for me. I can’t be sure this is “the one and only right choice” (there is never “one right choice”), but I know I have to try this, at least for the education I’ll get by doing this.

Fellow Googlers (especially the Trends/Insights team, where I spent the last five months) – I hope to work with you in the future, either in Google or outside. I’ll miss you all, and of course the salad bar in the 26th floor :). You’re welcome to visit me in Hertzelia Pituah, and I’ll still drop by every now and then. So long, and thanks for all the fish.

MapBinder basics in Guice

Another less known feature in Google Guice is map binders. I haven’t seen a good basic map binder tutorial, so I wanted to share the little I learned about it (it is covered in the documentation, but it’s not necessarily the best intro material). Basically, is a way to collect bindings from several models into one central map. The idiom is having each module add bindings from its “knowledge domain”, and providing the entire collection as one unified map.

class SomeModule {
  protected void configure() {
     // Bind the value "Eve" to the key "Adam"
     MapBinder.newMapBinder(binder(), String.class, String.class)
       .addBinding("Adam").toInstance("Eve");
  }
}
 
class AnotherModule {
  protected void configure() {
     // Bind the value "Abel" to the key "Kane"
     MapBinder.newMapBinder(binder(), String.class, String.class)
       .addBinding("Kane").toInstance("Abel");
  }
}
 
class NeedsMap {
  @Inject
  NeedsMap(Map<String, String> biblicalNames) {
    // gets a map of all values bound in the relevant modules
  }
}
 
main() {
  NeedsMap needsMap = Guice.createInjector(new SomeModule(), new AnotherModule()).getInstance(NeedsMap.class);
}

Of course, the map can be specified using any types, not just String, and doesn’t have to bind to a specific instance, but can bind to a class. To use this, remember to depend on the proper Guice Extension (Maven guice-multibindings). The code is available on Github. Check out this questions for “when is this actually useful?