Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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 ...
3 
What is Bitcoin 
● Collection of concepts (and full “ecosystem” of tools) 
● Decentralized peer-to-peer system 
● Solve...
4 
Key elements of the ecosystem 
● Decentralized peer-to-peer network (Bitcoin protocol) 
● Public transaction ledger (Bl...
5 
Few words about history 
● Introduced in 2009 by Satoshi Nakamoto 
● https://bitcoin.org/bitcoin.pdf 
● Combined concep...
6 
Bitcoin Address 
● Something like this: 
1FzQW9CWpNBoqUmaLFKNMAYiBhj6ncJA7N 
● Usually shown as QR code: 
● Address is ...
7 
Bitcoin Keys - ECDSA 
● Private keys – numbers between 0 and 2^256 
● Public key can be calculated from the private key...
8 
Wallet 
● Client software running on: server, desktop, phone, “in the 
cloud”, it manages keys, signs transactions, gen...
9 
Full nodes 
● Full nodes store full copy of the blockchain 
● Currently over 40GB of data 
● Usually need for server-si...
10 
SPV nodes 
● Lighweight nodes 
● Use Simplified Payment Verification instead of ITV 
● Suitable for desktops, phones 
...
11 
Transaction 
● Coinbase transaction 
● Each transaction has 1 or more inputs and 1 or more outputs 
● Transaction “mov...
12 
Spending a transaction - P2PH 
● Example of transaction type “Pay to pubkey hash” 
● ScriptPubKey: 
OP_DUP OP_HASH160 ...
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 bl...
16 
Mining 
● Merges transactions into blocks 
● Finds nonce that “solves” the block 
● Once the solution is found – block...
17 
Mining pools 
● Chance to find a solution to a block are small 
● Small miners join in pools where they share a profit...
18 
Blockchain 
● “A chain of blocks” 
● Clever approach to consensus problem 
● Miners after finding a new block publish ...
19 
Blockchain fork 
● Situation when 2 blocks are found at the same time 
● Bitcoin network is in the state of a fork 
● ...
20 
Few words about the 51% attack 
● Theoretically possible even with 40-50% of power 
● Can be used to destabilize netwo...
21 
Next time 
● More about Bitcoin clients 
● Bitcoin-core / btcd API 
● Bitcoinj 
● Raw transactions 
● Blockchain detai...
Upcoming SlideShare
Loading in …5
×

Introduction to Bitcoin for programmers

2,576 views

Published on

Introduction to Bitcoin for programmers presented at DRUG meetup 17.11.2014

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Introduction to Bitcoin for programmers

  1. 1. 1 Bitcoin – Introduction for programmers Wojciech Langiewicz @ DRUG #58
  2. 2. 2 Scope of this talk ● Introduction – What is Bitcoin, History ● Core concepts – Keys, Addresses – Wallet – Clients – Transaction – Block – Mining – Blockchain
  3. 3. 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. 4. 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. 5. 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. 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. 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. 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. 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. 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. 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. 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. 13. 13 Executing a script
  14. 14. 14 Advanced transaction types ● Multi signature (multisig) ● OP_RETURN ● Anyone can spend ● Pay to script hash
  15. 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. 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. 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. 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. 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. 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. 21. 21 Next time ● More about Bitcoin clients ● Bitcoin-core / btcd API ● Bitcoinj ● Raw transactions ● Blockchain details ● Security ● Bitcoin flaws

×