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
GENESIS BLOCK
• Bitcoin-cli getblockhash 0
• Bitcoin-cli getblock 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
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 = 0x0000000000000003A30C00000000000000000000000000000000000000000000
• Difficulty = Difficulty_1_Target/Current_Target
• New Difficulty = Old Difficulty * (Actual Time of Last 2016 Blocks / 20160 minutes)
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 miner’s contribution?
• Mining pool sets a lower difficulty target for earning a share, typically more than 1,000 times easier than the bitcoin network’s 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
• 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 network’s hashing power, collude to attack bitcoin.
• Effects
• Double-spend one’s own bitcoins
• Delay others’ txn confirmations
• Cannot destroy/steal bitcoins
• 33% attack: selfish mining
THREATS AGAINST
BLOCKCHAIN
• Selfish miningBLK n
BLK n+1
BLK n+2
BLK n+1
Selfish
pool (1/3)
1/3 of the
mining
power
Another
1/3 mining
power
BLK n+2
THREATS AGAINST
BLOCKCHAIN
• Selfish mining BLK n
BLK n+1
BLK n+2
BLK n+1
Selfish
pool (1/3)
1/3 of the
mining
power
Another
1/3 mining
power
BLK n+1 BLK n+1BLK n+1
BLK n+3
REFERENCES
• Is Bitcoin a Decentralized Currency? IEEE Security
& Privacy magazine
• Mastering bitcoin, O’Reilly Publishing
• Ken Shirriff, Bitcoin mining the hard way: the
algorithms, protocols, and bytes,
http://www.righto.com/2014/02/bitcoin-mining-hard-
way-algorithms.html
• Majority is not Enough: Bitcoin Mining is
Vulnerable, Financial crypto’14.