Learning Bitcoin - Sample Chapter
Learning Bitcoin - Sample Chapter
Learning Bitcoin - Sample Chapter
ee
P U B L I S H I N G
C o m m u n i t y
E x p e r i e n c e
D i s t i l l e d
$ 44.99 US
28.99 UK
pl
Richard Caetano
Learning Bitcoin
Learning Bitcoin
Sa
m
Learning Bitcoin
Embrace the new world of finance by leveraging the power of
crypto-currencies using Bitcoin and the Blockchain
Richard Caetano
France, and was originally raised on a dairy farm in the middle of California. He
discovered a strong interest in software development at an early age. Over the
years, he has designed and developed systems ranging from agriculture process
automation and government accounting to high-tech security, digital music, and
mobile video games.
In 2011, Richard found the Bitcoin whitepaper and experienced a paradigm shift.
After realizing the potential of this new technology, he changed course, and since
then has been evangelizing this powerful new technology to the world.
He launched an early application called btcReport, which leverages good design to
bring news and information to those interested in Bitcoin. Since then, he has been
speaking at conferences and meetings to help spread the word about Bitcoin.
In 2015, he launched Stratumn, a company focused on helping developers build
transparent, easy-to-audit, and secure applications by using the blockchain,
the technology that powers the Bitcoin currency.
Preface
Bitcoin is truly a new kind of money. As an open network of computers, it exists
purely on the Internet. Anyone with access to the Internet can send and receive
money as easily as sending an e-mail. With this new form of digital cash, we are
seeing the beginning of a new world of finance.
Bitcoin was launched in January 2009, just a few months after the financial crisis
of 2008. As a true peer-to-peer currency, anyone in the world has access to bitcoin,
with the ability to send it to anyone else. Its design insures that nobody can have
their funds locked or taken away. The effects of this breakthrough currency are quite
impressive. We have already seen the currency rise in price from less than one US
cent to over a thousand dollars.
Since its launch, Bitcoin has challenged the mainstream view of finance. Originally
designed as Digital Gold, Bitcoin's scarce supply and resistance to manipulation
has resulted in an explosion of new ideas and projects with the strong potential to
disrupt major industries and revolutionize finance.
Its anonymous creator, Satoshi Nakamoto, is only known through his contributions,
namely the Bitcoin whitepaper and his initial forum posts to help guide core
developers to support and maintain the source code. While nobody can confirm his
identity, the value of his work is evident in the fact that the Bitcoin source code has
been tested and challenged without any serious bugs or exploits reported. This is
truly an amazing feat.
In this book, we will introduce Bitcoin with a hands-on approach. We will begin
with a simple and easy-to-follow introduction, which includes buying and selling
bitcoin. Throughout the middle, we will look into the internal workings of Bitcoin
to understand how its various pieces work. Towards the end, we will explore
various ways in which Bitcoin can be used as "programmable money".
Preface
Setting up a Wallet
"When bitcoin currency is converted from currency into cash, that interface has to
remain under some regulatory safeguards. I think the fact that within the bitcoin
universe an algorithm replaces the functions of the government [that] is actually
pretty cool."
Al Gore, former Vice President of the United States
Bitcoin's potential is quickly becoming apparent in the rapidly changing world
of Internet finance. In just the few short years since its launch, we have seen an
explosion of interest in this new, and somewhat mysterious, Internet money. Yet,
several questions quickly come to mind: How does it work? Where does it come
from? How do I buy it?
In this chapter, we will illustrate, in simple terms, most of what anyone new to
Bitcoin will need to know to start. We will start by covering the following core topics:
[1]
Setting up a Wallet
[2]
Chapter 1
Today there are markets for exchanging bitcoin with most of the world's major
currencies. Most of them are online markets through which you can connect your
bank account or credit card. There are some markets where the buyer and seller meet
in person to exchange by hand. For the more technical users, private markets exist
on chat forums where anonymous users trade with the other users based on their
online reputation.
Of all the diverse ways to buy bitcoin, using a reputable online exchange may be
the likely option for most users. Online exchanges generally operate similar to
conventional online banking systems and are easy to set up.
We're going to buy 25 dollars worth of bitcoin using a credit card with an online
exchange called Circle. In 2013, Circle was launched by a team competent in
technology and finance. Additionally, they are registered as a money transmitter with
FinCEN, a US government agency responsible for safeguarding the financial system
from illicit use. For US citizens, they offer an instant exchange with a user-friendly
wallet service. To buy bitcoins with Circle, you'll need the following:
Valid photo ID
Buying and selling bitcoin on Circle is only available to users with a US address. As a
registered money transmitter, Circle must follow standard banking practices such as
Know your customer (KYC) and anti-money laundering laws (AML). These are the
requirements to accept bank transfers from the US banking system.
Most European and Canadian customers can use Coinbase (http://coinbase.com)
for direct wire transfers. We'll discuss buying and selling with Coinbase later
in Chapter 2, Buying and Selling Bitcoins.
What's important to remember about Bitcoin is that the currency exists
independently of any government's requirement for an individual's identity. Bitcoins
can be exchanged with cash, hand-to-hand, thus by passing the registration process
that we will describe in this chapter.
There are services such as Local Bitcoins (http://localbitcoins.com) where
the users can buy and sell Bitcoin through direct exchange with the other users.
While it is generally safe to do so, some users may be at risk from local regulations.
It is important to research the local currency laws before transacting through these
services, especially with large amount of cash.
[3]
Setting up a Wallet
[4]
Chapter 1
1. On the ACCOUNT page, which should show your balance as zero, click on
the Add Funds button.
Circle will prompt you to verify your mailing address along with your birth
date and the last four digits of your social security number. This information
is used to help verify your identification.
2. Next, Circle will ask you to install their mobile application (available for iOS
or Android). Using their mobile app, you'll be prompted to take a picture
of yourself and your photo ID. Ensure that you arrange for proper lighting
so that the image clearly shows the details of each digit. Once submitted, a
confirmation will be given within a few minutes.
3. If the app doesn't prompt you to verify your photo ID, you can manually
upload the images. Open the mobile app under the Account table and
click on the Settings icon. Under the Settings, click on Link Accounts. By
following the instructions, you'll be prompted to upload the photos of your
documents and credit card.
At any stage, if you're experiencing issues, Circle offers support through
online messaging. It also has toll free phone support for urgent issues.
[5]
Setting up a Wallet
4. After your identification has been verified, you're ready to add your credit
card as a funding source. Return to your Circle account page and click on
Add Funds. Circle will prompt you to enter your credit card information
and will save it for future use.
[6]
Chapter 1
[7]
Setting up a Wallet
Also indicated on your account page, under the balance, is the current USD to BTC
exchange rate for Circle. The exchange rate can vary between services, depending
on the supply and demand.
Also, in Figure 1.4, you can see that our account balance is currently $25.05, slightly
higher that what we first purchased - $25.00 worth of bitcoin. This is due to a real
time change in the exchange rate.
IMPORTANT
ONLY exchange money that's at your disposal. Bitcoin exchange
rates can be quite volatile.
Bitcoin amounts are usually noted with the abbreviation BTC. This is similar to
other currencies, such as USD and EUR. There are a few other symbols generally
accepted by the Bitcoin community. Listed in the following table are the two most
common ones:
First symbol used. Was released by early adopters and is available as an
image. Only available as an image or through Font-Awesome.
When expressing bitcoin amounts in plain text, using BTC is the easiest
to type and universally accepted. However, if you would like to use the
single character, check out Bitcoin Symbol (http://bitcoinsymbol.
org) for more information on how to access the symbol.
On the account page shown in Figure 1.3, the exact Bitcoin balance account is
presented as a decimal number:
0.10110406 BTC
Bitcoin amounts can have up to eight digits of precision. While every Bitcoin wallet
must account for each digit of precision, the minimum amount that you can send
may vary. Circle's minimum send amount is 0.00005460 BTC which is current with
the amount proposed by the Bitcoin community.
[8]
Chapter 1
Bitcoin units follow the standard metric system. The following prefixes can be used
when expressing Bitcoin amounts:
Unit
Abbreviation
Decimal
bitcoin
BTC
1.0
bitcent or centi-bitcoin
cBTC
0.01
millibit or milli-bitcoin
mBTC
0.001
bit or micro-bitcoin
BTC
0.000001
satoshi
0.00000001
Referring to the preceding table, you can write 0.44234 BTC as 442.34 mBTC. Some
services and exchanges have adopted this format to make your account balance
easier to read. Because amounts listed in whole numbers are generally easier to hold
in one's mind, displaying the amounts in mBTC can be ideal. A cup of coffee at the
time of this writing costs around 10mBTC.
The smallest unit of bitcoin, 0.00000001 BTC, is called a Satoshi, named
after the developer of Bitcoin, Satoshi Nakamoto.
Some wallets allow you to change the unit of bitcoin presented in settings. This may
make accounting and calculations easier, depending on your use case, especially if
the exchange rate has many decimal places.
The accepted convention is to use Bitcoin (uppercase B) to refer to the
technology and community, and bitcoin (lowercase) for the currency.
Do you have a Bitcoin wallet? I will send you 2.5 bitcoin.
[9]
Setting up a Wallet
Bitcoin addresses usually have 26-35 characters and are case sensitive, as in the
following example:
1MgErLiH1DuGMrd58fuL4CLQHc4VSboqKn
The address can contain numbers and letters, both uppercase and lowercase. To help
reduce confusion, there are no capital O's, zeros 0's, lower case l's, and capital 'I's'.
These characters are removed to reduce the errors made from writing with pen and
paper, as often encountered in the past. The result is a format that is easy to share
digitally and/or physically.
Bitcoin addresses have an error-checking code called a checksum. Computing the
checksum of an address will detect if any single character is incorrect. This helps to
prevent errors when sharing your address. Most wallets will validate and reject an
invalid address. As an example, note the following two addresses:
They both appear valid, yet the second address does not compute a valid checksum.
They are nearly identical except for the uppercase N at the end of the second address.
Checksums have been used in finance for many years. All credit card
numbers have a built in checksum digit, specific to the issuing bank.
Your Bitcoin wallet will typically hold many Bitcoin addresses. It's important to
know that a single Bitcoin address is not a wallet nor is it your account; rather, it's
simply a way to receive money.
[ 10 ]
Chapter 1
It is important to note that Bitcoin was designed for its users to hold and
manage their own keys. This makes it virtually impossible for another
party to block, steal, or confiscate their money.
Intended as a gentle introduction to Bitcoin, this chapter introduces a
centralized service, Circle, to help one get started with Bitcoin.
Circle's wallet service simplifies using Bitcoin by managing the addresses
and private keys for you. This results in a clean online banking-like
experience. However, it's important to realize that there is no requirement
to use a service like Circle to store your bitcoins.
Later in the book, we will discuss how to manage your own wallet.
Sending bitcoins
From your Circle account, simply click the SEND MONEY link from the menu
above to access the send options. Circle offers two ways to send bitcoin. You can
either send it to a Bitcoin address or an email address.
If you are sending it to an email address, Circle will check to see if the address has
a valid account registered to it and make an instant deposit into that user's wallet.
If the receiver is not registered, an invitation will be sent with instructions on how
to set up an account.
[ 11 ]
Setting up a Wallet
In the To field, simply enter the Bitcoin address or the email address of the user
you'd like to pay. For the amount, you can specify either USD or BTC. If you enter
an amount in USD, Circle will automatically calculate the exchange rate. Optionally,
you can provide a memo to describe your transaction.
Continuing to the next step, Circle will prompt you to enter your two-factor
authentication code. This code will be sent to your mobile phone. Using this
two-factor authentication helps protect your wallet from unauthorized access.
Once submitted, your transaction will be recorded instantly.
For payments between two Circle users, the transaction will be confirmed
immediately. Circle maintains an internal ledger and will record the transaction
off the Bitcoin network.
[ 12 ]
Chapter 1
Circle to Circle payments are called off-chain payments. Chain in this case
refers to the Blockchain, the data structure used to store all the Bitcoin
transactions. Off-chain means that a payment was recorded outside the
Blockchain, using a private ledger.
For payments sent to a Bitcoin address, there will be a short period of time before
the transaction is confirmed and accepted by the network. Generally, this takes
about 10 minutes, but it can vary depending on the network's computing power.
You can review all your payments by clicking TRANSACTIONS from the
main menu.
[ 13 ]
Setting up a Wallet
Receiving bitcoins
Circle provides two ways to receive bitcoin. Similar to sending bitcoin, you can send
a request via email or share your Bitcoin address.
To start, click the REQUEST MONEY link from the main menu above. You'll be
prompted to create a request:
If you submit an email address, the recipient will receive an email providing them
with instructions on how to pay. They will be given the following options:
[ 14 ]
Chapter 1
If you select the option to Create an address and QR code, Circle will generate a new
Bitcoin address for you and present a QR code to scan. You can either copy/paste
the address and share it with the sender, or allow them to scan the QR using
a mobile device.
[ 15 ]
Setting up a Wallet
Bitcoin private keys generally contain 51 characters and start with a 5, such as in the
following example:
5Jd54v5mVLvyRsjDGTFbTZFGvwLosYKayRosbLYMxZFBLfEpCS7
Similar to your pocket wallet with credit cards, your Bitcoin wallet is a collection of
addresses and private keys. Each address is used to receive and hold bitcoin.
Bitcoin Address
Bitcoin Amount
Private Key
12yuztN6Ci1p3h334YSKDFWWuexRtGu1f6
5KgtRmuFSgqcjhiE4TLD1pPFvKVLbmfjyavrBwnGV5eW8eRgoKM
3.14000000
1L3cM9UTdEtKVp5nMjgvdNr5wNyBon8kzB
5HrfH1Za4kNEZFmhMe3LKwbztAScAGFkiGZqpq5aGigwX8vsSAh
0.22340000
1EKMiayzXDbLFRVCiMZowewnHNvgWEet16
5HrfH1Za4kNEZFmhMe3LKwbztAScAGFkiGZqpq5aGigwX8vsSAh
1.22395800
1JWk1RG6hgbHCTv85eXvHWjCfebN64PHwV
5JzquBknRfsyiynxjCSho4AWBfuT3nd5LfZxT9VRoq5NCsRcedd
0.00398840
4.59134640
Table 3 - Bitcoin addresses and private keys
In the preceding table, we can see how the balance in a typical wallet is composed
of multiple Bitcoin addresses (in bold) with their corresponding private keys. Each
address holds a balance that can be combined for a payout.
While most Bitcoin software holding your bitcoin are called wallets, they are
technically keychains. Keychains are designed to manage and protect your Bitcoin
keys. The term wallet is a convention carried over from Bitcoin legacy software.
IMPORTANT
It is not possible to recover lost private keys. If you choose to manage
your own private keys, be sure that you're able to backup and restore
them.
Due to the risk of loss, it should also be mentioned that online wallets
are subject to the same risks. Without proper security and procedures,
some online wallets have been hacked, resulting in losses.
Therefore, it is advisable to choose online services that have a good
reputation and offer insurance against loss. Circle and Coinbase,
mentioned later in the book, both carry insurance to help protect their
customers from fraud and theft.
[ 16 ]
Chapter 1
Reputable online wallets take the necessary precautions to protect your private keys.
Most online wallets use a technique called Cold storage. Holding private keys in
cold storage means that your keys are physically stored offline in a vault. Access to
the vault is required to interact with the keys.
Additionally, multi-signature addresses are used to protect the coins in cold storage.
Typically, an address will require one key to transfer its bitcoins. Multi-signature
addresses usually require two or more keys to sign a transfer. With cold-storage,
there will often be a two of three requirement so that no one employee has full
access to the funds.
Private keys are generated from large amounts of random data, called entropy in
computer science, and are very difficult to crack. With all the computing power
available today, it is not possible to find the private key of a Bitcoin address using
brute force methods. Even if computing power were to exponentially increase to the
point where that's possible, the Bitcoin software can be upgraded to include new
cryptographic methods to match.
Transactions
A Bitcoin transaction is a record of a transfer between two or more bitcoin addresses.
Similar to a credit or debit on your bank statement, the transaction records the
sender, the receiver, and a date/time stamp.
All Bitcoin transactions are publicly accessible. However, the user's identify is never
stored. Similar to a Swiss Bank account, only their public addresses are recorded.
This makes it difficult to trace the address back to its owner. Therefore, we say that
Bitcoin is pseudonymous.
[ 17 ]
Setting up a Wallet
Bitcoin has been used to fund illegal online markets, such as the Silk
Road, with a special internet protocol call Tor. Using Tor allows the users
to hide their computers' IP addresses, making it difficult to discover their
physical location.
Using Tor, the users are able to place orders for illegal items. With
payments made in Bitcoin and the shipping addresses encrypted, it is
very difficult to link customers with their orders.
While Bitcoin's design hides the owner of an address, if an identity can
be associated with a previous transaction, it can be possible to link a
purchase with a user.
More flexible than a simple bank transfer, a Bitcoin transaction can withdraw from
multiple addresses to pay a list of addresses. The transaction records every address
used and must account for the full balance. Any unspent bitcoin must be sent back to
a "change address". It works like paying for an item that costs 12 dollars with two 10
dollar bills. The merchant accepts the two bills and returns 8 dollars in change.
[ 18 ]
Chapter 1
In Figure 1.10, we show a starting balance of 5BTC between two addresses in our
bitcoin wallet. We then send 4BTC to the receiver. To account for the full balance, the
transaction returns 1BTC to our change address. After the transaction, the two funding
addresses will contain 0BTC each.
The change address is optional as we can reuse an existing bitcoin address. However,
most wallets create a new address as it's recommended to increase your privacy.
Before sending a transaction to the Bitcoin network for confirmation, it must be
signed with the private keys of the input addresses listed. Similar to your bank
requiring your signature on a check, the Bitcoin network requires you to sign
your transaction before confirming it.
[ 19 ]
Setting up a Wallet
Bitcoin uses a digital signature to sign your transaction. The signature can only be
generated by the holder of the private key. Illustrated in Figure 1.9, we can see how
this signature is created and stored in the transaction.
The digital signature is used by the network to verify that the transaction was
created by someone who has access to the private key. Without this verification,
the transaction would be rejected from the public ledger.
The process of computing the digital signature is handled automatically by your
Bitcoin wallet. The digitally signed transaction is now ready for confirmation by the
network. We will discuss digital signatures in detail later in Chapter 4, Understanding
the Blockchain.
Bitcoin wallet software is designed to handle the complexities
of sending/receiving bitcoin. The example is given here to help
deepen our understanding of how transactions work.
Confirmations
After it's digitally signed, the transaction is broadcasted to the Bitcoin network and
reviewed by many nodes on the network. Each node is essentially a computer with a
copy of the ledger, with access to all the transactions since the beginning. The node's
job is to listen for new transactions and relay them to the other nodes on the network.
Some nodes serve as miners. Miners perform computational work to ensure that
each transaction is valid that it does not double the, or spend more than the available.
Each miner must then prove the results to the other miners. Any discrepancies will
cause the network to reject a miner's results.
Miners have a financial incentive to do this work. Along with
confirming the transactions, there is a cryptographic puzzle to
solve. If the miner can prove their solution, they are awarded new
Bitcoins and/or transaction fees. The solution to the puzzle is
called proof-of-work.
This process is what makes the Bitcoin network both resilient and trustworthy. The
larger the network of miners with consensus, the more we can trust the validity of
the ledger. This is how Satoshi was able to design a network for exchanging virtual
cash without a single point of control or failure.
[ 20 ]
Chapter 1
The Bitcoin network is a very powerful network, especially when there is a large
number of miners working together to validate and confirm the transactions on
a public ledger. The entire ledger is copied by new miners joining the network.
Transactions confirmed by an increasing number of miners results in more trust
in the network. This design creates redundancy to guard against transaction fraud.
Once a transaction is confirmed in the ledger, it cannot be deleted or changed.
Now that we have a basic understanding of how Bitcoin works, let's look at some
wallet services and compare their differences.
Online wallets
Services such as Circle are called online wallets. Online wallets are web-based services
that manage and store a small amount of your Bitcoins on a public web server.
The rest are stored offline in a physical vault. They generally have the following
characteristics:
Setting up a Wallet
While these are nice features to offer the public, some of the more proficient users are
not in favor of having an organization control their funds.
In the past, some exchanges have suffered security breaches. While some of the
services were able to cover the losses, others were not solvent and were unable to
reimburse its users. That resulted in many users losing their funds.
When choosing an online wallet, be sure to do your research on the company,
the team, and its history.
Service
Description
Circle
http://circle.com
Coinbase
http://coinbase.com
Xapo
http://xapo.com
CoinKite
http://coinkite.com
ANXPro
http://anxpro.com
Table 3 - Online wallets
Desktop wallets
For users who would like more control over their bitcoin, desktop wallets may be a
better choice than online wallets.
Desktop wallets are applications that run on your computer and connect directly
to the Bitcoin network. Having the application installed locally gives the users full
control of their Bitcoin wallet and their private keys.
Some desktop wallets, such as Bitcoin Core, download a full copy of the Bitcoin
ledger to disk. This can require more than 10 gigabytes of local storage and can
take a couple of days to download and verify.
[ 22 ]
Chapter 1
More efficient desktop wallets, called lightweight clients, connect to an online copy of
the ledger. This reduces the storage requirements and the setup time. In most cases,
your wallet can be ready within a few minutes.
The risk of using a desktop wallet includes hardware failures, computer viruses,
and unauthorized access. Before accepting any Bitcoin to your desktop wallet, you
should be familiar with the backup and restore process, and you must ensure that
your computer is safe from malicious attacks.
For more advanced users, many desktop wallets offer a console where they can
interact with their wallet by issuing commands. Users can generate various kinds
of transactions and directly manipulate their list of private keys and addresses.
Service
Description
MulitBit
http://multibit.org
Bitcoin/QT
https://bitcoin.org
Electrum
http://electrum.org
Armory
https://bitcoinarmory.
com
Table 4 - Desktop wallets
In Chapter 5, Installing a Bitcoin Node, we'll explain how to safely use and configure
Bitcoin Core, the official Bitcoin client, as a desktop wallet.
Mobile wallets
Having access from your mobile phone is a practical way to carry and spend bitcoins
on the go. Most of the online services mentioned previously have applications
available for download on the iPhone and Android app stores. Because the Bitcoin
keys are stored and managed on servers, your account is protected by your
username and password.
To increase the security of bitcoins stored on a mobile device, make sure
to setup a PIN code for unlocking the phone.
[ 23 ]
Setting up a Wallet
It's also worth mentioning that there are independent mobile wallets that store access
to the keys on the phone. Because storing the private keys on your phone can be
risky, in the event it's lost or stolen, the wallets offer a way to protect your bitcoin
with 24 words that are randomly chosen. You will be able to restore your wallet,
if lost, using the passphrase.
Service
Description
Breadwallet
http://breadwallet.com
Coinomi
https://coinomi.com
Mycelium
https://mycelium.com
Hardware wallets
As one of the most secure options, hardware wallets store and encrypt your private
keys on removable USB devices. Because the keys are never copied to your computer
or made available online, it makes it extremely difficult to hack.
During setup, the hardware wallet will generate 24 random words, similar to the
mobile wallets, as the password to your bitcoin. Backing up your wallet is as simple
as backing up the list of words. To restore your device, you simply provide the same
set of words during setup.
The two commercially available hardware wallets are Ledger (https://www.
ledgerwallet.com/) and Trezor (www.bitcointrezor.com). They both plug into
your USB port and include a user-friendly interface.
Wallets that use a 24-word passphrase implement a type of keychain,
called a Hierarchical Deterministic Wallet, or HD Wallet. This type
of keychain can produce an unlimited number of private keys and
addresses, just from a master seed which is generated from the 24 random
words. We will cover HD Wallets later in the book.
[ 24 ]
Chapter 1
Summary
In this chapter, we covered some of the basics of getting started with Bitcoin. We
walked through a simple tutorial of how to buy bitcoin instantly and discussed
addresses, private keys, and transactions. With this understanding, you can safely
transact using Bitcoin.
In the next chapter, we will dive deeper into buying and selling. We will cover
how to track prices for various currencies and how to trade bitcoin through an
online exchange.
[ 25 ]
www.PacktPub.com
Stay Connected: