The Blockchain
Josh Vorick
The Blockchain Josh Vorick Bitcoin is a currency. Blockchain is a - - PowerPoint PPT Presentation
The Blockchain Josh Vorick Bitcoin is a currency. Blockchain is a technology. What is a blockchain? A decentralized database that anyone can add to and no one can delete from The Bitcoin blockchain Why You Should Care Bitcoin
The Blockchain
Josh Vorick
Bitcoin is a currency. Blockchain is a technology.
What is a blockchain?
anyone can add to and no
The Bitcoin blockchain
Agenda
Why you should care
Many are comparing the blockchain to TCP/IP
invested into blockchain-related startups
median “blockchain engineer” starting salary
In case money isn’t enough...
time to get technical
The Bitcoin blockchain
Digital Signatures
Cryptographic Hash
(non-cryptographic) hash
def myHash(str): hash = 5831 for c in str: hash = hash * 33 + int(c) return hashcryptographic hash (blake2b)
are complicated
What’s in a Transaction?
the super duper basics
txn1 Alice -> Bob 25 Btc
What’s Really in a Transaction?
the super basics
txn1
Alice -> Carol
15 Btc (see txnx)
txn2
Bob -> Carol
10 Btc (see txny)
txn3
Carol -> Dave
25 Btc (txn1+txn2)
txn1
15 Btc to Carol
see txnx
txn2
10 Btc to Carol
see txny
txn3
25 Btc to Dave
see txn1, txn2
txn1
15 Btc to Carol
see txnx
txn2
10 Btc to Carol
see txny
txn3
20 Btc to Dave 5 Btc to Carol
see txn1, txn2
What’s Really Really in a Transaction?
the basics
txn1
15 Btc to pkC
see txnx
sign(txn1, skA)txn2
10 Btc to pkC
see txny
sign(txn2, skB)txn3
20 Btc to pkD 4.999 Btc to pkC
see txn1, txn2
sign(txn3, skC)txn1
15 Btc to pkC
see txnx
sign(txn1, skA)txn2
10 Btc to pkC
see txny
sign(txn2, skB)txn3
20 Btc to pkD 4.999 Btc to pkC
see txn1, txn2
sign(txn3, skC)What’s Really Really Really in a Transaction?
Miners
If miners add blocks willy-nilly, the blockchain will quickly become inconsistent
Give the miners a hard puzzle
Proof of Work
Example challenge
Miner code!!
def mine(Block, target): n = 0 while true: h = hash(Block + n) if h < target: return n n++ Block up to 1MB => hashing is SLOW def mine(Block, target): n = 0 b = hash(Block) while true: h = hash(b + n) if h < target: return n n++Version 2
Now we only hash Block once, right?
No :(
How can we do this faster?
Merkle tree
Merkle tree
Merkle tree
Sweet! Let’s Mine!
1 ~720,000,000,000,000,000,000
Chance of solving a block on the first try
= Chance of being struck by lightning 1,977,098 times
in one second
1 ~20,000,000,000
Chance of solving a block in 1 hour on a $300 CPU
1 ~100,000,000
Chance of solving a block in 1 hour on a $300 GPU
1 ~240,000
Chance of solving a block in 1 hour on a $370 ASIC
per day (amortized)
Mining Pools
Use a Central Server to Run the Pool
P2Pool
PetaFLOPS Tianhe-2 operates at just 33.86 PetaFLOPS
What if we replaced the hash with meaningful work?
Related Topics
transactions every day
Other Applications
All blockchains:
applications
market
event
sell to peers on the network
Proof of Existence
to Bitcoin’s block chain
document on that date
Internet
when/where their art is being used
commissions
digital art
storage
space
Bitcoin Club!
How do I join?
Questions?