History of Bitcoin
In October 2008, Bitcoin’s inventor Satoshi Nakamoto released a paper that described the details of a fully functional cryptocurrency. This cryptocurrency made it possible for users to perform financial transactions (sending and receiving value) in a system that is completely decentralized and operates in a trustless manner. Since then, the Bitcoin network has continued to grow and evolve to meet the needs of its users. Here, we’ll discuss some of the important milestones in Bitcoin’s history and some of the proposals for where the cryptocurrency could go in the future.
Bitcoin is the original cryptocurrency and many of its firsts are the firsts for cryptocurrency as a whole as well. In this section, we’ll talk about some of the major milestones in Bitcoin’s history and why they were significant to the development and growth of Bitcoin and the cryptocurrency industry as a whole.
On August 18, 2008, the domain bitcoin.org was registered. Since it’s unknown when Satoshi Nakamoto began developing the concepts of the blockchain and cryptocurrency, this is one of the first public indications of Bitcoin’s creation. By this point, Satoshi likely had a functional design for a cryptocurrency but was finalizing details and working on writing up the technical paper description of the protocol.
Bitcoin: A Peer-to-Peer Electronic Cash System
On October 31, 2008, Satoshi Nakamoto published “Bitcoin: A Peer-to-Peer Electronic Cash System” to The Cryptography Mailing List. This paper presented a full description of how Bitcoin would work and is the first description of the blockchain, the underlying technology that makes cryptocurrency possible.
On January 3, 2009 Satoshi mined Bitcoin’s genesis block. A cryptocurrency’s genesis block is the very first block in the blockchain. Included in the genesis block was the text “The Times 03/Jan/2009 Chancellor on brink of second bailout for banks.” This was a headline from the UK newspaper The Times. Including this in the genesis block served two purposes. First, it proved that Satoshi hadn’t been mining on the blockchain before releasing it. This is important since Bitcoin uses Proof of Work, where the blockchain is secured by a race to find a possible answer to a problem only solvable by random guessing. If Satoshi had a “head start”, he’d have the ability to stay ahead of the competition for a while by mining blocks ahead of time and only releasing them at their scheduled times. Second, it provided a commentary on the state of the financial industry at the time. Satoshi designed blockchain and cryptocurrency to be an alternative to “traditional” banking under the control of governments and banks. Including the fact that the UK had to bail out banks for a second time in the blockchain was a dig at the current system.
First Open-Source Bitcoin Client Code
On January 9, 2009, six days after mining the first block of Bitcoin, Satoshi Nakamoto open-sourced the code for Bitcoin clients. This made it possible for anyone to interact with the Bitcoin network (mining and performing transactions) and understand how Bitcoin functioned “under the hood”.
First Bitcoin Transaction
The first ever Bitcoin transaction was performed on January 12, 2009. Satoshi Nakamoto sent Hal Finney (a programmer and Bitcoin supporter) ten Bitcoins. Until this point, every block was empty (no transactions) and the only activity on the Bitcoin network was mining and earning the related block rewards.
Bitcoin Transaction Exploit
On August 6, 2010 a flaw was discovered in the implementation of the Bitcoin network. The code that implemented transactions was vulnerable to an integer overflow attack. An integer overflow attack happens when code makes an assumption about the maximum value of a number that it will be processing. If a bigger number is entered, the code will only see the portion of it that fits into its assumed range (or the remainder if you divide the input by the code’s maximum value). For example, if code assumes that all input is three digits and receives an input of 1,005, it will see a value of 6 (1,005 minus the maximum value of 999). In Bitcoin’s implementation, the integer overflow vulnerability was in the part of the code that checked that a person had enough Bitcoin in their wallet to perform the requested transaction. If someone tried to send an amount whose remainder after being divided by the maximum allowed value was less than the amount in their wallet, then the transaction would go through. On August 15, 2010 an attacker took advantage of this vulnerability, sending 184 billion (with a B) Bitcoin to two different addresses in the network. Bitcoin is designed so that there will never be more than 21 million Bitcoin in existence, so you see how this could be an issue. After the attack, over 99.9998% of all Bitcoin in existence belonged to the attacker. They could destroy the value of Bitcoin at their leisure by flooding the market. This caused the first and only hard fork of the Bitcoin blockchain, where the existing blockchain was thrown away and history was rewritten. Once the flaw in the code was corrected, the blockchain was rewritten to remove the attacker’s malicious transaction. This was a major decision since the blockchain is supposed to be unchangeable and rewriting history was only possible due to the consent of the whole network at the time. It’s important to note that the vulnerability exploited here was due to the implementation, not the theory behind Bitcoin. Theoretically, such an attack would be impossible, but practically, mistakes are made in programming, leading to errors. Bitcoin is still theoretically sound despite the fact that there was a successful attack on its real-world implementation.
First Mining Pool
With the size of the Bitcoin network, it’s difficult to consistently win the race to create a new block and win the reward. To provide a more stable source of income, Bitcoin miners have created mining pools where a group of miners work together to mine and split the reward based on each member’s contribution. With a larger share of the total processing power of the network the pool successfully mines blocks more frequently, so members earn more frequent, smaller reward instead of rare large rewards. In November 2010, Slush’s Pool became the first Bitcoin mining pool (or mining pool for any cryptocurrency).
Bitcoin is designed to be decentralized and the network runs this way, with the blockchain maintained by consensus and decisions made by voting. However, software upgrades, development, etc. needs someone to write the code, test it, etc. And such a big network needs someone to interview for press releases (since Satoshi Nakamoto is anonymous). In September 2012, the Bitcoin Foundation was created as the public face of Bitcoin. The founding members were Gavin Andresen, Jon Matonis, Patrick Murck, Charlie Shrem, and Peter Vessenes.
A “Real Currency”
In August 2013, a Texas judge was trying a case where the defendant set up a fake savings and loan service using Bitcoin. He had no intention of returning peoples’ Bitcoin to them and attempted to justify this by saying that Bitcoin is “just a game” and that he wasn’t breaking any laws by doing so. On August 6, 2013, the judge issued a ruling that Bitcoin is in fact a real currency and that the defendant’s service was in fact a Ponzi scheme. This was an important milestone for Bitcoin since it was the first time that Bitcoin was legally recognized as a currency and creates legal precedent for it to be considered as such in the future.
First Bitcoin ATM
On October 29, 2013, the world’s first Bitcoin ATM was opened nears the Waves coffee shop in Vancouver, Canada. This ATM allowed people to buy and sell Bitcoin using an intuitive user interface. The ATM was sponsored by Robocoin and Bitcoiniacs and was one of five planned to open in Canada. The creation of a Bitcoin ATM is another step toward Bitcoin becoming a competitor to bank cards and cash. The ability to buy and sell Bitcoin at an ATM is equivalent to cash deposits and withdrawals at traditional ATMs.
Bitcoin is designed to compete with the traditional financial industry (cash, credit cards, etc.) but it has major scalability problems. Bitcoin has a fixed maximum block size (1 megabyte) and a fixed block rate (ten minutes), meaning that the maximum rate at which Bitcoin can process transactions in the blockchain is fixed (up to seven transactions per second). On August 1, 2017 an alternative cryptocurrency called Bitcoin Cash was created from the Bitcoin code. The main difference between Bitcoin Cash and Bitcoin is the block size used. Bitcoin Cash increased the block size from 1 MB to 8 MB, creating an eightfold increase in the processing capacity of their blockchain compared to Bitcoin.
The original version of the Bitcoin code had an issue called transaction malleability. Essentially, it was possible to modify small details of a transaction that changed the hash of the block without changing anything important (the sender, recipient, and amount remained unchanged). While the network would still work with these changes, it meant that the Bitcoin protocol wasn’t a stable foundation for second-level protocols (more on this in the next section). To address this issue, the concept of Segregated Witness or SegWit was proposed. In a nutshell, originally transaction signatures were included inside the block (and therefore the hash of the block used for Proof of Work). With Segregated Witness, signatures are no longer officially included inside the block. That’s it. They’re still on the blockchain but no longer in the blocks. This has two main implications. First, the transaction malleability issue is fixed, which allows second-level protocols to be built on top of Bitcoin. As a bonus, the transaction rate of Bitcoin using SegWit blocks is increased. The block size of Bitcoin blocks is capped at one megabyte and originally included the signatures. With the signatures outside the block now, more transactions can be crammed into the block, increasing Bitcoin’s maximum transaction rate. Now, the “block weight” (block size with signatures) is capped at four megabytes, giving Bitcoin a 4x increase in capacity (if all transactions in the block are using SegWit, which isn’t required).
Some of the most common complaints about Bitcoin are its speed and scalability. With a block rate of ten minutes (translating into a minimum waiting period of half an hour for a transaction to be “trusted”) and a capacity of about seven transactions per second, Bitcoin has a long way to go to compete with the near-instantaneous payments possible with the credit and debit card network. The Lightning Network is a second-level protocol designed to be overlaid on the Bitcoin network. It allows the instantaneous payment of microtransactions not recorded on the Bitcoin blockchain. These transactions are performed over channels, where only the initial commitment of funds to a channel and the final balancing of the books at the close of the channel are recorded on the blockchain. A Lightning transaction between two parties occurs over multiple hops between pairs with an open channel, allowing value to flow to and fro. This makes the capacity of Bitcoin theoretically limitless and solves the transaction delay problem with little risk to participants (since closing a channel defaults to a standard Bitcoin transaction on the blockchain).
Bitcoin is a bit different from many other cryptocurrencies as it doesn’t have a clear roadmap for development. Unlike these other coins, which have a strong guiding hand (often open to user input), Bitcoin allows users to propose potential modifications that are then accepted or rejected based upon the consensus of the Bitcoin network. In this section, we’ll discuss a few of the proposals made for future integration into the Bitcoin network.
Merkelized Abstract Syntax Trees
Bitcoin was initially created to only support financial transactions (sending or receiving money). Since then, it has been expanded to include functionality for code that executes on the blockchain or smart contracts. One of the current limitations of smart contracts in Bitcoin is that the entire contract is written to the blockchain, which limits the size of the possible contract. Merkelized Abstract Syntax Trees (or MAST) allow smart contracts to be broken into pieces, where only the parts of the smart contract that are actually run are written to the blockchain. This increases the privacy of smart contracts (since unused sections aren’t revealed) and allows larger smart contracts to be created without running into Bitcoin’s size limits.
Digital signatures are just like normal signatures, they verify the identity of the person signing and the authenticity of the thing being signed. Since Bitcoin is decentralized and contains valuable data (Bitcoins are money), the Bitcoin protocol uses digital signatures a lot to ensure the accuracy of the data on the network. Currently, Bitcoin uses a digital signature scheme called the Elliptic Curve Digital Signature Algorithm (ECDSA). The important thing to know about ECDSA is that there is a one-to-one mapping between signers and signed data. One person signing five pieces of data or five people signing one piece of data both require five signatures. Five people signing five pieces of data need twenty-five signatures. You get the picture. Currently, there is a proposal for the Bitcoin network to switch over to Schnorr signatures. One of the big advantages of a Schnorr signature is that multiple signatures for different transactions can be combined into a single signature. For example, if you and your friends are out to dinner and paying the bill with Bitcoin, Schnorr signatures allows you to merge all of the signatures for transactions coming from different accounts (you and your friends) and going to the same account (the restaurant) into a single signature. This can dramatically decrease the storage requirements for the transactions, which is useful for Bitcoin where the block size limits transaction speed.
Bulletproofs and Confidential Transactions
One of the major complaints about the Bitcoin network is the lack of privacy . Bitcoin is designed so that the sender, recipient, and amount of each transaction is published on the blockchain. Since addresses are reused, individuals’ anonymity is weakened by the fact that their transaction history can be tracked and assumptions made based on that information. For example, knowing that you frequent a given coffee shop, shop at a local supermarket, and get gas at a certain station, someone has a good chance of guessing your neighborhood if not your identity. Beyond the lack of anonymity on Bitcoin, publishing the amount of every transaction means that anyone can determine the amount of Bitcoin in anyone else’s wallet (just like letting them take a look at your bank statement). Bulletproofs and Confidential Transactions are a proposed solution to this problem for Bitcoin. Confidential Transactions modify the Bitcoin protocol by hiding the amount of Bitcoin sent in a transaction. Anyone can still that the two parties have engaged in a transaction but no-one but them knows how much money changed hands. The validity of the transaction (that the sender has enough Bitcoin in their account to cover what they’re sending) is verified using cryptographic operations. The issue with this is that the blockchain is also supposed to verify that a transaction is valid. This is where Bulletproofs come in. Bulletproofs use zero-knowledge proofs to demonstrate that something is true (i.e. that the transaction is valid) without revealing the details (the amount sent).