Blockchain & Money: Session 5: Blockchain Basics & Transactions, UTXO, & Script Code by M.I.T. Sloan School of Management with Professor Gary Gensler
Session 5: Blockchain Basics & Transactions, UTXO, & Script Code
- Session 5 Study Questions:
- How does Bitcoin record transactions? What is Unspent Transaction Output (UTXO)? What is script code embedded in each Bitcoin transaction and how flexible a programming language is it?
- As many design features (public key cryptography, hash functions, append-only timestamped logs, digital cash, & proof-of-work) pre-date Bitcoin, what was the novel innovation of Satoshi Nakamoto?
- Who is Satoshi Nakamoto? (Only kidding a bit.)
- Session 5 Readings:
- ‘Bitcoin’s Academic Pedigree’ Narayanan and Clark
- ‘Making Sense of Cryptoeconomics’ CoinDesk
- Narayanan & Clark’s Chronology of Ideas in Bitcoin
Overview: Transaction Inputs & Outputs; Unspent Transaction Output (UTXO); Scripting Language; Blockchain Design–Putting it All Together; Bitcoin’s Academic Pedigree; Who is Satoshi Nakamoto?; Conclusions.
- Coinbase Transaction
- Reward for solving proof-of-work.
- Only input is the Coinbase Block Reward
- Reward halves (1/2’s) every 210,000 blocks
- Currently 12.5 Bitcoins per block
- Originally 50 Bitcoin per block
- Output may not be used as a Transaction Input until another 100 blocks
- Recorded as First Transaction in Merkle Tree
- May include 100 bytes of arbitrary data
- Used for additional Nonce.
- Genesis Block included Headline from Financial Times:
- ‘The Times 03/Jan/2009 Chancellor on brink of second bailout for banks’
- Reward for solving proof-of-work.
- Unspent Transaction Output (UTXO) Set
- (Bitcoin transaction outputs that have not been spent at a given time).
- Contains All Currently Unspent Transaction Outputs
- Speeds up Transaction Validation Process
- Stored using a LevelDB database in Bitcoin Core called ‘chainstate’
- (Bitcoin transaction outputs that have not been spent at a given time).
- Bitcoin Script
- Programming Code used for Transactions
- Stack-based Code, with no Loops (not Turing-complete)
- Provides a flexible set of instructions for Transaction Validation & Signature Authentication
- Most Common Script Types in UTXO:
- Transaction sent to Hash of Bitcoin Address-“Pay-to-PubkeyHash” (81%)
- Transaction sent to Hash of Conditional Script–“Pay-to-ScriptHash” (18%)
- Transaction subject to multiple signatures–“M of N Multisig” (0.7%)
- Transaction sent to Bitcoin address–“Pay-to-Pubkey” (0.1%)
- Programming Code used for Transactions
- Bitcoin–Technical Features
- Cryptography & Timestampled Logs
- Cryptographic Hash Functions
- Timestamped Append-only Logs (Blocks)
- Block Headers & Merkle Trees
- Asymmetric Cryptography & Digital Signatures
- Addresses
- Decentralized Network Consensus
- Proof-of-Work
- Native Currency
- Network
- Transaction Script & UTXO
- Transaction Inputs & Outputs
- Unspent Transaction Output (UTXO) set
- Scripting Language
- Cryptography & Timestampled Logs
- Conclusions:
- Nakamoto’s Bitcoin brought us Blockchain Technology
- Blockchain technology is within long history of Money & Ledgers
- Its Design Features also can be placed within history of technology
- Timestamped Append-only Logs (Blocks)
- Cryptographic Hash Functions & Digital Signatures
- Network Consensus
- Key Innovation–Decentralized Chained Consensus Protocol
- Addresses ‘Costs of Trust’
- Provides Peer-to-Peer alternative for Money, Ledgers & Computation