Category Archives: bitcoin

TweetStorm: Slow bitcoin Core Development is a Good Thing

Originally Tweeted on July 2, 2014










10/ #endtweetstorm #bitcoin

11/ #reallytheendtweetstorm ;-)


TweetStorm: Bitcoin IS and IS NOT like cash

Originally tweeted on June 30, 2014











Bitcoin Payment Protocol Explained




Note that a man-in-the-middle (sometimes abbreviated MITM) attack is when a customer connects to a merchant, and it turns out that the customer is not really talking to the merchant. Rather the customer is talking to a man sitting in between (in the middle) the customer and the merchant. This “man” can see all of the traffic going between the customer and the vendor and is thus able to get the user names, passwords and credit card info and all that sort of personal stuff, by imitating the vendor.  With a good imitation the customer will likely be non the wiser. MITM attacks are insidious and technologies (such as the BIP70 payment protocol) to prevent them are important.



1.Sandy says:  Hey Sharon, how’s it going?


3. Sandy says: “same old, same old”

and we’re done, exciting ayee?




3. Sandy says: “Yes, I sent it yesterday, but let me check, damn email is acting up”




There is very informative illustration in BIP70:




Let’s walk through the diagram in plain english:


A very thorough, yet quite understandable, explanation of the details of the payment protocol was authored by Mike Hearn and is available at:   There are a LOT more details to the payment protocol I would simply suggest keeping in mind that point of the protocol as stated in the BIP070 abstract, is to make for a better and more secure customer experience. As more wallets and merchants provide more compete support for the payment protocol we will all benefit.



Bitcoin Micropayments, Say What?






Bitcoin just keeps getting  more and more interestinger ;-)

What is a Bitcoin address, and what does it mean to sign it?

Short Answer: A Bitcoin address is a unique number that “holds” bitcoin currency. You use the address to  receive and send bitcoins.

Medium Sized Answer:  A Bitcoin address is the public key half of the public-private key pair that enables the validation of ownership of that address.  WHOAH there, what in tarnation  does that mean??

Bitcoin addresses are created as part of a key generation process that creates a pair of keys. They are a matched set, where one is public and the other is private.  When you “sign” a bitcoin address you are running the public and private keys through an algorithm that checks to see that those keys belong together.  Usually signing is talked about in the context of a message. Someone sends you a signed message and you can verify that the message came from the genuine person.  You can verify the message because it was signed with their private key and you  matcht it to their public key.  When sending bitcoins the signed message is a portion of the bitcoin transaction and you do not explicitly see the message it is just part of the transaction. This let’s you validate the ownership of the address. The transaction (the transfer of value) was signed with the owner’s private key and you check that it’s valid using their public key.

A little diversion – public key cryptography is a really cool technology developed in the mid 1970′s. The amazing thing about public-private key pairs is that everyone can know the public key and the owner of the private key can prove that he is the owner of the message sent with the associated public key. For more information on PKI (Public Key Infrastructure) upon which much of bitcoin’s security is based see Mike Hearn’s (a core bitcoin developer) great description of many issues in “Why you think the PKI sucks…but can’t do any better“.

A Longer Story: Let look at the sequence of actions to create and then use the key pairs.  First we need to generate the key pair, which will result in two keys the public and private keys. The Bitcoin address is actually a form of the public key (it’s a hash of the public key). From the Bitcoin protocol specification at:

A bitcoin address is in fact the hash of a ECDSA public key

Since anyone can know the public key and really the Bitcoin address is the public key,  it’s perfectly OK to give out the Bitcoin address. So now we have a Bitcoin address, what’s next?

Let’s say that I want to get paid for something, say writing this article! I can advertise a Bitcoin address, and since you are all so thrilled to read this, you have an overwhelming urge to send me some coins. You would open up your Bitcoin wallet enter my address as the address to send bitcoins to; click send; and I would happily receive some bitcoins.  Recall that I and only I have the private key matching the public key (address) which enables me to be the only person that could spend the bitcoins I just received.

If you wanted to double check that I was actually the owner of the address before you sent me coins you could ask that I send a signed message associated with  address proving it’s mine. I could create a message and sign the address. You would then take the message I sent, and put it into your wallet along with my address to prove that I am the “owner” of the address. Bitcoin wallets usually contain this message signing and verification  functionality.

An address is used to “hold” bitcoins, however the concept of an address holding bitcoins or that you are the “owner” of a Bitcoin address is a misnomer. Recall that the address is one half of a public-private key pair. The reason you “own” an address and have control over the coins associated with that address is simply that you also know the other half of the public-private key pair, the private key.  If someone else learns the private key to an address then that person has just as much control and “ownership” over the address, as you. In other words that person can spend your bitcoins.  The solution is quite simple, make sure you and only you control the public keys to your bitcoin addresses. From a practical point of view this means that you create a good, not easy to guess, Bitcoin wallet password, and/or keep it in a safe place. Some excellent security practices are outlined at the Bitcoin Foundation’s site at:

Since Bitcoin addresses are one of the cornerstones to using Bitcoin, it is instructive to play around with addresses to get a better understanding of just what exactly a Bitcoin address is all about. A particularly good website to play around with is  After generating a new Bitcoin address play around with the various options and observe the public and private keys it generates. Just don’t go putting real bitcoins into an address while also displaying the private key. Keep the private key private!







You’ve Got bitcoin, Now What?

So you’ve created a wallet. You set up an account at an exchange, or a service such as, or you even to met someone in person via Last but not least you actually bought some bitcoins! Congratulations! Now what?

There are a few things you can do.

Sit on the bitcoins in the hope that they will escalate in value and we can all become gazillionaires. If I see another prediction that each bitcoin will be worth 10 or 100,000 dollars I’m going to pull the few remaining hairs out of my head. No one has a clue what bitcoins will be worth in the future. However it is a fact that many if not most bitcoins in existence are simply sitting in addresses and have never been spent. Speculating on their potential increase in value is perfectly reasonable. Of course they could just as easily fall in value, thus the term “speculation”.

Rather then simply sitting on your coin, one fascinating thing you can do is to loan your bitcoin via a number of peer 2 peer lending services. Since bitcoin exists within a totally decentralized infrastructure, you don’t have to get anyones permission to loan bitcoin to someone else. There are a number of peer 2 peer lending services. In particular I’d suggest checking out You look at requests for loans, the interest rate they will pay you and the time period for the loan. Pay attention to the detail of the people requesting loans and the suggestions from the site on how to reduce your risk. Overall it’s a very cool way to try to earn money from your bitcoins and help some folks out at the same time.

You can sell your bitcoin, via a service such as and try to make some profit by selling for more then you paid. Of course feel free to sell for less but that usually won’t last too long.

Last but not least, you can buy stuff! Yes you can actually buy good and services. The biggest “store” that accepts bitcoin directly is It’s great fun and just cool to go to Overstock and click on paying with bitcoin. The transactions are as fast as using a credit card, you get a confirmation, just like using a credit card and everything is smooth. I can’t say that as a consumer there is any great benefit to using bitcoin versus a credit card, but if you like the idea of denying that extra little fee to a big bad bank (and doesn’t that put a smile on your face) then bitcoin it. Another cool way of buying lots of different things is via the “Gyft” service. Gyft is a company that let’s you buy other companies gift cards. However you can pay for your Gyft card via bitcoin! So if you want a giftcard from CVS, or Zappos or Sephora you can simply put money into your Gyft account and even better use an app on your phone to buy products with the supported gift cards. And you can pay for it all with bitcoin. Very snazzy!

There are more and more places that accept bitcoin. Naturally there are web sites that keep track of this such as SpendBitcoins. Now you have no excuse to not buy bitcoin and do things with it, so go forth and consume.

My Virgin Bitcoin Spending Experiences

Well I’ve been “into” bitcoin for nearly a year and like most people I’ve simply been hoarding my coin. It’s time to start spending! I recently had the opportunity to register for Bitcoin2014 (come join me! in Amsterdam and naturally since the option of paying via bitcoin was available I had to try it. I had never actually bought anything with bitcoin before so I was in virgin territory. The process was surprisingly simple, straightforward and painless, partially due to good web design and partially due to luck.

The bitcoin portion was run handled by bitpay and when I clicked to pay a “bitcoin:” URL was created and executed by starting up my wallet (a Multibit wallet) that happened to be on the computer I was using to register. Multibit asked for my wallet password (very reassuring) the payment was made and all was right with the world. No long delay it all worked fine.

A day or two later I decided to purchase a “Verso Card” ( which is a cool hardware gadget about the size of a credit card that you can use as a cold storage wallet but with the convenience of an online wallet because you link it to an app on your phone. (I haven’t received it yet so can’t tell you if it works well or not.) Anyway I went through the usual purchase process and at the end it printed a bitcoin address and said please pay first before clicking button. So I had to manually go into my wallet put in the address and then wait for like 10-15 minutes for the transaction to be confirmed until I hit the button on the Verso card page. This is totally unreasonable for normal purchases. If I had hit the button the page said they would not mail the card, so I was warned but this is not a “ready for prime time” way of conducting business. I don’t know what the difference is between the bitpay managed purchase which happened instantly, and the Verso card purchase, both of which used my same bitcoin wallet. So that part will remain a mystery until I investigate some more.

Last but not least, I’ve been reading about accepting bitcoin. I had never purchased anything from Overstock but I headed over to give it a whirl. I created an account in like 30 seconds…surfed to buy some piece of clothing. Place it into my shopping cart. Clicked the pay with bitcoin button, and the transaction was very smoothly handeled by coinbase (which I had previously setup to handle the bitcoin URL transactions, rather then use my wallet). purchase confirmation purchase confirmation

The system asked for my 2 factor Coinbase authentication (also reassuring). I authenticated, and it was all done fast! Back to Overstock with a “Your Order Was Successful” message! Hey you know what the bitcoin thing might have legs. I also received a confirmation from Coinbase that was also reassuring.
Coinbase Confirmation
Coinbase Confirmation

All in all, it was an interesting set of spending experiences. I have no doubt the growing pains of using bitcoins for real purchases will be smoothed out and is in fact rapidly getting smoothed out. Just keep your eyes open for some bumps in the road but start shopping!

Libertarian, Anarchists…NOT

Marc Andreesen recently made a twitter (@pmarca) post:

“The idea that most computer/Internet people now are raving anti-government libertarian anarchists is simply wrong. A false caricature.”

That really struck me. I encounter a lot of political views in my bitcoin (virtual travels) and while there are quite a few libertarians and a few anti-government types they are by no means the whole community. Speaking for myself, I’m not a libertarian, and I actually work for the government (no not one of those spooky agencies just a science agency)!

Bitcoin has a tremendous number of fascinating technical capabilities and being a geek, that is actually the driving force for my interest. The fact that it has some value for some “social good” is gravy and wonderful but it happens to not be what is driving me. I admire those people for whom Bitcoin is seen as the solution to a lot of the world’s problems. Let’s get rid of the libertarian, anarchist myth, and move on.

What’s this Bitcoin Public Ledger thing?

One of innovations to come out of Bitcoin is the notion that every financial transaction that happens is recorded in a distributed public ledger. This ledger is called the “block chain”. Every bitcoin transaction that occurs, or has ever occurred, is recorded on the block chain. In addition the block chain is distributed by Bitcoin “nodes”. Nodes talk to each other (peer 2 peer) and that’s how the block chain is communicated throughout the bitcoin network (that will have to be another post). When you run a full bitcoin client on your computer, you become a node.

Collections of transactions are grouped together into “blocks”. And blocks are placed one after another into a long “chain” of blocks, thus the name “block chain”. If you try to alter a block then the cryptographic computations which make valid transactions would not work indicating that a block has been altered. Thus we are ensured that all the transactions are correct. As a new block is placed onto the chain a new computation is created (a hash) that depends on all previous blocks. This is why the blocks are chained together.

Since the block chain is available to everyone, anyone can check that a transaction has actually happened. Just like a regular financial ledger you can check the entire history of bitcoin transactions by looking in the block chain. The validity of transactions is ensured by the distributed network of bitcoin nodes and the cryptography used ensures that all copies of the block chain are valid. Purty cool ayeee!