1 
Bitcoin – Introduction for 
programmers 
Wojciech Langiewicz @ DRUG #58
2 
Scope of this talk 
● Introduction – What is Bitcoin, History 
● Core concepts 
– Keys, Addresses 
– Wallet 
– Clients 
– Transaction 
– Block 
– Mining 
– Blockchain
3 
What is Bitcoin 
● Collection of concepts (and full “ecosystem” of tools) 
● Decentralized peer-to-peer system 
● Solves 2 main problems: 
– Is that money authentic (not counterfeit) 
– Is there only singe occurrence of this specific coin (double spends) 
● Has much similarities to cash and gold
4 
Key elements of the ecosystem 
● Decentralized peer-to-peer network (Bitcoin protocol) 
● Public transaction ledger (Blockchain) 
● Decentralized currency issuing algorithms (mining) 
● Decentralized transaction verification (transaction scripts)
5 
Few words about history 
● Introduced in 2009 by Satoshi Nakamoto 
● https://bitcoin.org/bitcoin.pdf 
● Combined concepts that existed before 
● But have not been combined until then 
● POW algorithm + Blockchain
6 
Bitcoin Address 
● Something like this: 
1FzQW9CWpNBoqUmaLFKNMAYiBhj6ncJA7N 
● Usually shown as QR code: 
● Address is a Base58 encoded form 
of the public key 
● Based on the address prefix, you can figure out what type of 
address it is. 
● Types of addresses: Pubkey hash, script hash, private key 
● Address reuse 
● A word about HD Wallets
7 
Bitcoin Keys - ECDSA 
● Private keys – numbers between 0 and 2^256 
● Public key can be calculated from the private key 
● Public key can be represented as Base58 encoding, HEX 
number, etc 
● Private keys can also be encoded as Base58 – this is called 
WIF format – most common way to export/import keys 
between wallets
8 
Wallet 
● Client software running on: server, desktop, phone, “in the 
cloud”, it manages keys, signs transactions, generates new 
keys, etc 
● Bitcoin-qt 
● Electrum, Armory, Multibit 
● Blockchain.info 
● Mobile wallets with intermediate server 
● Other web wallets
9 
Full nodes 
● Full nodes store full copy of the blockchain 
● Currently over 40GB of data 
● Usually need for server-side type of applications 
● Provide JSON-RPC API 
● Example: Satoshi client, btcd
10 
SPV nodes 
● Lighweight nodes 
● Use Simplified Payment Verification instead of ITV 
● Suitable for desktops, phones 
● Instead of downloading full blockchain 
● Download transactions only for their addresses 
● Security and privacy implications 
● Example: bitcoinj
11 
Transaction 
● Coinbase transaction 
● Each transaction has 1 or more inputs and 1 or more outputs 
● Transaction “moves money” - changes owner 
● Transactions take inputs and translate it into outputs 
● Those outputs can serve as inputs to the new transaction
12 
Spending a transaction - P2PH 
● Example of transaction type “Pay to pubkey hash” 
● ScriptPubKey: 
OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY 
OP_CHECKSIG 
● scriptSig: <sig> <pubKey> 
● Script: 
<sig> <pubKey> OP_DUP OP_HASH160 <pubKeyHash> 
OP_EQUALVERIFY OP_CHECKSIG
13 
Executing a script
14 
Advanced transaction types 
● Multi signature (multisig) 
● OP_RETURN 
● Anyone can spend 
● Pay to script hash
15 
Blocks 
● Genesis block 
● Mining – process of confirming a block 
● Each block points to a previous one creating a blockchain 
● Quite few similarities to git (instead you can't merge)
16 
Mining 
● Merges transactions into blocks 
● Finds nonce that “solves” the block 
● Once the solution is found – block is published 
● Published – appended to the blockchain 
● Published blocks are verified by other nodes 
● This sends coinbase transaction to the miner + all fees 
● Proof of Work – 10 minutes per block 
● Difficulty
17 
Mining pools 
● Chance to find a solution to a block are small 
● Small miners join in pools where they share a profit 
● Instead of finding a block every year and getting 25BTC 
● You will get 0.5 BTC per week. 
● You have to trust the pool operator or use p2pool
18 
Blockchain 
● “A chain of blocks” 
● Clever approach to consensus problem 
● Miners after finding a new block publish it on the network 
● You base your security on a height of a transaction 
● Ensures that there are no duplication
19 
Blockchain fork 
● Situation when 2 blocks are found at the same time 
● Bitcoin network is in the state of a fork 
● 10 minutes later a new block is found that is based on one of 
the forks 
● All Bitcoin nodes quickly switch to the longer branch 
● Transactions from the shorter branch are orphaned and will 
be processed shortly after
20 
Few words about the 51% attack 
● Theoretically possible even with 40-50% of power 
● Can be used to destabilize network for some period of time 
● Can help to create a double-spend 
● In no case you'll be able to spend coins you don't have 
● This attack is not practical 
● Miners will make more BTC by being honest
21 
Next time 
● More about Bitcoin clients 
● Bitcoin-core / btcd API 
● Bitcoinj 
● Raw transactions 
● Blockchain details 
● Security 
● Bitcoin flaws

Introduction to Bitcoin for programmers

  • 1.
    1 Bitcoin –Introduction for programmers Wojciech Langiewicz @ DRUG #58
  • 2.
    2 Scope ofthis talk ● Introduction – What is Bitcoin, History ● Core concepts – Keys, Addresses – Wallet – Clients – Transaction – Block – Mining – Blockchain
  • 3.
    3 What isBitcoin ● Collection of concepts (and full “ecosystem” of tools) ● Decentralized peer-to-peer system ● Solves 2 main problems: – Is that money authentic (not counterfeit) – Is there only singe occurrence of this specific coin (double spends) ● Has much similarities to cash and gold
  • 4.
    4 Key elementsof the ecosystem ● Decentralized peer-to-peer network (Bitcoin protocol) ● Public transaction ledger (Blockchain) ● Decentralized currency issuing algorithms (mining) ● Decentralized transaction verification (transaction scripts)
  • 5.
    5 Few wordsabout history ● Introduced in 2009 by Satoshi Nakamoto ● https://bitcoin.org/bitcoin.pdf ● Combined concepts that existed before ● But have not been combined until then ● POW algorithm + Blockchain
  • 6.
    6 Bitcoin Address ● Something like this: 1FzQW9CWpNBoqUmaLFKNMAYiBhj6ncJA7N ● Usually shown as QR code: ● Address is a Base58 encoded form of the public key ● Based on the address prefix, you can figure out what type of address it is. ● Types of addresses: Pubkey hash, script hash, private key ● Address reuse ● A word about HD Wallets
  • 7.
    7 Bitcoin Keys- ECDSA ● Private keys – numbers between 0 and 2^256 ● Public key can be calculated from the private key ● Public key can be represented as Base58 encoding, HEX number, etc ● Private keys can also be encoded as Base58 – this is called WIF format – most common way to export/import keys between wallets
  • 8.
    8 Wallet ●Client software running on: server, desktop, phone, “in the cloud”, it manages keys, signs transactions, generates new keys, etc ● Bitcoin-qt ● Electrum, Armory, Multibit ● Blockchain.info ● Mobile wallets with intermediate server ● Other web wallets
  • 9.
    9 Full nodes ● Full nodes store full copy of the blockchain ● Currently over 40GB of data ● Usually need for server-side type of applications ● Provide JSON-RPC API ● Example: Satoshi client, btcd
  • 10.
    10 SPV nodes ● Lighweight nodes ● Use Simplified Payment Verification instead of ITV ● Suitable for desktops, phones ● Instead of downloading full blockchain ● Download transactions only for their addresses ● Security and privacy implications ● Example: bitcoinj
  • 11.
    11 Transaction ●Coinbase transaction ● Each transaction has 1 or more inputs and 1 or more outputs ● Transaction “moves money” - changes owner ● Transactions take inputs and translate it into outputs ● Those outputs can serve as inputs to the new transaction
  • 12.
    12 Spending atransaction - P2PH ● Example of transaction type “Pay to pubkey hash” ● ScriptPubKey: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG ● scriptSig: <sig> <pubKey> ● Script: <sig> <pubKey> OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
  • 13.
  • 14.
    14 Advanced transactiontypes ● Multi signature (multisig) ● OP_RETURN ● Anyone can spend ● Pay to script hash
  • 15.
    15 Blocks ●Genesis block ● Mining – process of confirming a block ● Each block points to a previous one creating a blockchain ● Quite few similarities to git (instead you can't merge)
  • 16.
    16 Mining ●Merges transactions into blocks ● Finds nonce that “solves” the block ● Once the solution is found – block is published ● Published – appended to the blockchain ● Published blocks are verified by other nodes ● This sends coinbase transaction to the miner + all fees ● Proof of Work – 10 minutes per block ● Difficulty
  • 17.
    17 Mining pools ● Chance to find a solution to a block are small ● Small miners join in pools where they share a profit ● Instead of finding a block every year and getting 25BTC ● You will get 0.5 BTC per week. ● You have to trust the pool operator or use p2pool
  • 18.
    18 Blockchain ●“A chain of blocks” ● Clever approach to consensus problem ● Miners after finding a new block publish it on the network ● You base your security on a height of a transaction ● Ensures that there are no duplication
  • 19.
    19 Blockchain fork ● Situation when 2 blocks are found at the same time ● Bitcoin network is in the state of a fork ● 10 minutes later a new block is found that is based on one of the forks ● All Bitcoin nodes quickly switch to the longer branch ● Transactions from the shorter branch are orphaned and will be processed shortly after
  • 20.
    20 Few wordsabout the 51% attack ● Theoretically possible even with 40-50% of power ● Can be used to destabilize network for some period of time ● Can help to create a double-spend ● In no case you'll be able to spend coins you don't have ● This attack is not practical ● Miners will make more BTC by being honest
  • 21.
    21 Next time ● More about Bitcoin clients ● Bitcoin-core / btcd API ● Bitcoinj ● Raw transactions ● Blockchain details ● Security ● Bitcoin flaws