Bitcoin is a decentralized peer-to-peer system that solves the problems of authenticity of money and preventing double spends of coins. It uses public and private keys, addresses that act like accounts, transactions to transfer coins between addresses, and mining to verify transactions and add them to the permanent public record called the blockchain. Miners are rewarded with new bitcoins and transaction fees for solving complex cryptographic puzzles to find valid blocks to add to the chain. Over time, the blockchain has grown to be a record of all valid bitcoin transactions since the genesis block was created in 2009.
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Bitcoin Introduction for Programmers - Core Concepts Explained
1. 1
Bitcoin – Introduction for
programmers
Wojciech Langiewicz @ DRUG #58
2. 2
Scope of this talk
● Introduction – What is Bitcoin, History
● Core concepts
– Keys, Addresses
– Wallet
– Clients
– Transaction
– Block
– Mining
– Blockchain
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
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
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
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 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
14. 14
Advanced transaction types
● 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 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
Next time
● More about Bitcoin clients
● Bitcoin-core / btcd API
● Bitcoinj
● Raw transactions
● Blockchain details
● Security
● Bitcoin flaws