You are on page 1of 27

SKBI Cryptocurrency Technical Seminar Series

Block Mining, Verification and


the Blockchain
Zhiguo Wan
Sim Kee Boon Institute for Financial Economics
Singapore Management University

Schedule of bitcoin seminar series


Seminar 1 Basics: Cryptography and Transactions, 3 Dec
Seminar 2 Mining, Verification and the Blockchain, 8 Dec

Seminar 3 Wallets, Payments and Contracts, 15 Dec

OUTLINE
Mining Blocks
Verify a transaction
Aggregate transactions into a block
Mine the new block
Validate the new block

Assemble the new block to blockchain

Fork resolving

Threats against Blockchain

MINING BLOCKS
Verify a transaction
Aggregate transactions into a block
Mine the new block
Validate the new block
Assemble the new block to blockchain

TRANSACTION VERIFICATION
For each input, the referenced output must exist
and cannot already be spent.
For each input, if the referenced output exists in
any other transaction in the pool, reject this
transaction.
Reject if the sum of input values < sum of output
values.
Reject if transaction fee would be too low to get into
an empty block.
The unlocking scripts for each input must validate
against the corresponding output locking scripts.

AGGREGATING TRANSACTIONS

Old and high-value inputs to be prioritized over newer and


smaller inputs.

Prioritized transactions can be sent without any fees, if


there is enough space in the block.

Priority = Sum (Value of input * Input Age) / Transaction


Size
Value of an input is measured in the base unit, satoshis (1/100m
of a bitcoin)
Age: the number of blocks that have elapsed

High Priority > 100,000,000 satoshis * 144 blocks / 250


bytes = 57,600,000

AGGREGATING TRANSACTIONS
WITH MERKLE TREE

AGGREGATING TRANSACTIONS WI
MERKLE TREE

AGGREGATING TRANSACTIONS

BLOCK STRUCTURE

GENESIS BLOCK

Bitcoin-cli getblockhash 0

Bitcoin-cli getblock 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

THE COINBASE
TRANSACTION
Coin generation transaction

MINING A BLOCK
SHA256(SHA256(Block_header))<Difficulty_target
Transactions are hashed through Merkle root
Block header

Merkle root

DIFFICULTY and TARGET

Target: E.g. 0x1903a30c

The exponent is 0x19 and the coefficient is 0x03a30c.

target = coefficient * 2^(8 * (exponent 3))

For difficulty bits value 0x1903a30c, we get:

target = 0x03a30c * 2(0x08 * (0x19 - 0x03))

target = 0x03a30c * 2(0x08 * 0x16)

target =
0x0000000000000003A30C00000000000000000000000000000000
000000000000

Difficulty = Difficulty_1_Target/Current_Target

New Difficulty = Old Difficulty * (Actual Time of Last


2016 Blocks / 20160 minutes)

DIFFICULTY OF MINING

MINING BLOCKS
Chance of success is less than one in 1019.
Harder than finding a particular grain of sand from
all the grains of sand on Earth
Every second about 25,000,000,000,000,000
blocks gets hashed
Total hardware used for mining cost tens of millions
of dollars
Uses as much power as the country of Cambodia

MINING BLOCKS

Nonce size: 4 bytes, 32-bit


Current ASIC can exhaust all possible nonce in a second
(4G Hash per second, 4 billinion).
Use coinbase script (8 bytes more) and timestamp as nonce
source

Pool mining: Predictable return


Successful blocks pay the reward to a pool bitcoin address

Miners get paid periodically by pool server


How to measure each miners contribution?
Mining pool sets a lower difficulty target for earning a share,
typically more than 1,000 times easier than the bitcoin
networks difficulty

VALIDATING BLOCKS
The block data structure is syntactically valid
The block header hash is less than the target
difficulty (enforces the Proof-Of-Work)
The block timestamp is less than two hours in the
future (allowing for time errors)
The block size is within acceptable limits
The first transaction (and only the first) is a
coinbase generation transaction

All transactions within the block are valid

ASSEMBLING BLOCKS
Three sets of blocks:
Blocks connected to the main blockchain,
Blocks that form branches off the main blockchain
(secondary chains)
Blocks that do not have a known parent in the known
chains (orphans).

Blockchain forks
Select the chain with higher cumulative difficulty as the
main chain

BLOCKCHAIN FORK

BLOCKCHAIN FORK

BLOCKCHAIN FORK
The block chain fork
that occurred on 11
March 2013.

Despite less support


from users, version
0.7 was chosen by
developers to be the
official chain.

THREATS AGAINST
BLOCKCHAIN
51% attack

A group of miners, controlling a majority (51%) of the


total networks hashing power, collude to attack bitcoin.

Effects
Double-spend ones own bitcoins
Delay others txn confirmations
Cannot destroy/steal bitcoins

33% attack: selfish mining

THREATS AGAINST
BLOCKCHAIN
Selfish mining

BLK n+1
Selfish
pool (1/3)

BLK n

BLK n+1

BLK n+2

BLK n+2
1/3 of the
mining
power

Another
1/3 mining
power

THREATS AGAINST
BLOCKCHAIN
Selfish mining

BLK n

BLK n+1

BLK n+1

Selfish
pool (1/3)

BLK n+1

BLK n+1

BLK n+1

BLK n+2

BLK n+3

1/3 of the
mining
power

Another
1/3 mining
power

REFERENCES
Is Bitcoin a Decentralized Currency? IEEE Security
& Privacy magazine
Mastering bitcoin, OReilly Publishing
Ken Shirriff, Bitcoin mining the hard way: the
algorithms, protocols, and bytes,
http://www.righto.com/2014/02/bitcoin-mining-hardway-algorithms.html
Majority is not Enough: Bitcoin Mining is
Vulnerable, Financial crypto14.