Date post: | 09-Jul-2015 |
Category: |
Technology |
Upload: | wojciech-langiewicz |
View: | 1,074 times |
Download: | 1 times |
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