Cryptocurrencies 3. Blockchain: The Ingenious Basis of Bitcoin

Most of our financial transactions are managed by centralized institutions like banks and credit card companies. We trust that these companies will properly manage transactions, so no one can spend the same dollar twice. In other words, if you have $300 in your checking account, you can’t use your debit card to buy a $300 message chair, and then quickly purchase a $300 patio furniture set before the first purchase clears.

Satoshi Nakamoto, the enigmatic inventor of Bitcoin, wanted to set up a digital currency which would not be controlled by or dependent on any central institution. Rather, there would be a big network of thousands of independent computing nodes, which collectively would record and vet financial transactions. A big problem he faced was how to prevent the sort of double-spending described above. With a decentralized system, it was possible that one node, or a couple of nodes in cahoots, could quickly enter two transactions which would spend the same chunk of digital currency twice, before the rest of the nodes could catch the error. And without a central authority, who would have the authority to correct such errors?  

Nakamoto’s solution was the blockchain. He defined and implemented it specifically for Bitcoin, but the concept is so elegant and powerful that hundreds of other digital coins were quickly set up also using blockchains. This in turn has spawned a whole multi-billion dollar “decentralized finance” industry around these blockchain based currencies.

Continue reading

Cryptocurrencies 2. How Hashing Puts the Crypto in “Cryptocurrency”

There are several conceptual pieces that are put together to make the working Bitcoin digital currency. The data which defines Bitcoin transactions is stored in a data structure called a blockchain.  A key feature of blockchains involves cryptographic “hashing”. That is the focus of today’s post.

A hash function is any function that can be used to map initial data of arbitrary size to fixed-size values. The initial data may be called the key or the message.  The values returned by a hash function are called hash values, hash codes, digests, or simply “hashes”. A common use for hashing in the past has been to do large-scale data storage and retrieval more efficiently, as described in Wikipedia. That link also discusses how some actual hashing calculations are done.

Here we will focus on cryptographic applications of hashing. For this purpose, hash functions are chosen which are for all practical purposes one-way. It is straightforward to start with the “message” and compute the hash. But it is not feasible to start with the hash and back-calculate the initial message, even if you know the algorithm used for the hash function. Typically the only way to find the message is to run a brute-force search of all possible inputs until you find a match to the output hash.

Continue reading