Upload
meinhard
View
4.836
Download
5
Embed Size (px)
DESCRIPTION
Bitcoin mining explained to an advanced audience, in black-and-white. :) A presentation held at Bitcoin Startups meet-up Berlin, 6 May 2014
Citation preview
Mining demystified
Heavy tools
gigahash
terahash
petahash
1PH=
b50f642411733cd63264d3bedc046a5364ff3c77d2b37ca298ad8f1b5a9f05ba
x1 000 000 000 000 000
(1 quadrillion)
~58 000
TBeach second
!
1PH=
b50f642411733cd63264d3bedc046a5364ff3c77d2b37ca298ad8f1b5a9f05ba
x1 000 000 000 000 000
(1 quadrillion)
~58 000
TBeach second
!
Current Bitcoin network hash rate: ~50 PH/s
Y U NEED SO MANY HASHES?
Mining:creation of new bitcoins and
distributing transactions
Idea: Make it really hard to mine
hard mine
mine hard
mine hard Get it? :)
Hard to do, easy to verify
Proof of work
A new block roughly every 10 minutes
New block references previous block
Forming a ...?
Forming a block chain
“Side effect”: adding new bitcoins
25 bitcoins reward per block
~7700 EUR every 10 minutes
~400m EUR per year
Reward halves every210,000 blocks = 4 years
Next halving:~ 21 August 2016
How mining works
Cryptographic function called“double SHA-256”
Secure Hash Algorithm
Invented by NSA
OMG!
Nothing to fear,all math, all open source
256 bits “digest size”(length of resulting hash)
“hello”first round of SHA-256:
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
second round of SHA-256:9595c9df90075148eb06860365df33584b75bff782a510c6cd4883a419833d50
Hash length of 64 characters:32 hex octets with 8 bits each = 256 bits
Sort of a checksum
Virtually impossible to reverse
First step to mine a new block:Collecting new transactions
Second step:Hashing of block header
If hash starts with enough zeros,you found a block
000000000000000024aed4ca327f8957bb5f112787ff5350971a3fe38c144f14
Bingo!
If not, increment “nonce” or other values in block header and try again
A quadrillion times!
Enough zeros?
Currently 17:00000000000000000
Determined by “difficulty”,adjusted ~ every 2 weeks
Pooled mining
Share work with other miners
Pool participants send partial workto earn shares
For example all hasheswith 12 leading zeros
Compensation according to share
If a block was found,new work is being sent out
Pool communication protocols:Stratum, Getwork, Getblocktemplate
Stratum used by most pools
Stratum uses JSON-RPC
JavaScript Object NotationRemote Procedure Call
Human-readable (sort of):
{"id": 1, "method": "mining.subscribe", "params": []}
To be continued...
Presentation held atBitcoin Startups Meet-up Berlin
6 May 2014
CC-BY-NC 2014 Meinhard Benn