doCommerce(mymoney, you, useCrypto= true)
Proof of Work
I have an electronic coin. I want to give to you.
I will digitally sign the coin, with my private key.
Anyone can verify that its my signature, with my public
The digital signature will contain your public key; so
everyone knows you received the coin.
Issue: What if I double spend.
Input: electronic coin, timestamp of previous
Process: Hash the input, use currentTime.
Output: Publish the hash. This is proof that this coin
existed at this time; (thisTime is after previous
Timestamp server create proof that this transaction
took place at this time, in correct order.
Proof of Work
Find a nonce which when hashed, creates a hash
staring with zero bits.
This takes CPU effort.
The Proof of Works’ form a chain. This chain is the
fraud deterrent. To defraud, spend exponential CPU
effort(dependent on chain length). Not worth it for long
Broadcast new transactions.
Each node collects transactions, in a box/block.
Creates Proof of Work. Publishes it.
Creates chain of proof of work. As long as most nodes
know about longest chain of proofs, it must be the
correct transaction history.
Why should honest nodes participate
Block is started with a coin. Later, when this coin is in
circulation, it creates chain of proofs.
If a node own coins, it better keep the system running
with growing chain, and discouraging rogue nodes
from taking over.
Reclaiming Disk Space
So many proofs. What about my disk space.
Practically, there should not be need to prune the
But it can be done. Note to self: Study Merkle tree
Verify the longest chain. How.
Combining and Splitting values!
Don’t link public key to identity
Create multiple public keys
Binomial Random Walk
Gamblers Ruin problem