2014-05-20 01:03:58 +00:00
|
|
|
== Chapter 5 - Transactions
|
|
|
|
=== Introduction
|
2014-06-04 04:17:57 +00:00
|
|
|
|
|
|
|
=== Transactions and the Blockchain
|
|
|
|
|
|
|
|
==== Transaction Lifecycle
|
|
|
|
===== Creating Transactions
|
|
|
|
===== Broadcasting Transactions
|
|
|
|
===== Validating and Propagating Transactions
|
|
|
|
===== Mining Transactions into Blocks
|
|
|
|
|
|
|
|
==== Transaction Fees
|
|
|
|
==== Transaction Validation
|
|
|
|
===== Validation Limits
|
|
|
|
==== Transaction Locktime
|
|
|
|
==== Transaction Irrevocability
|
|
|
|
==== Transaction Self-Sufficiency
|
|
|
|
|
|
|
|
|
|
|
|
=== Transaction Structure
|
|
|
|
=== Transaction Outputs and Inputs
|
|
|
|
|
|
|
|
[TIP]
|
|
|
|
====
|
|
|
|
Outputs come first, chicken and egg.
|
|
|
|
====
|
|
|
|
|
|
|
|
==== Transaction Outputs
|
|
|
|
===== Spending Conditions (Encumbrances)
|
|
|
|
===== Unspent Transaction Outputs (UTXO)
|
|
|
|
|
|
|
|
[TIP]
|
|
|
|
====
|
|
|
|
The are no accounts or balances in bitcoin, only UTXO.
|
|
|
|
====
|
|
|
|
|
|
|
|
==== Transaction Inputs
|
|
|
|
===== Spending the Transaction Outputs
|
|
|
|
===== Unlocking the Conditions (Encumbrance Satisfaction)
|
|
|
|
==== Transaction Fees
|
|
|
|
|
|
|
|
|
|
|
|
=== Standard Transactions
|
|
|
|
==== Pay to Public Key Hash (P2PKH)
|
|
|
|
==== Simple Pubkey
|
|
|
|
==== Mutli-Signature
|
|
|
|
==== Data Injection (OP_RETURN)
|
|
|
|
==== Pay to Script Hash (P2SH)
|
|
|
|
===== Redeem Script and isStandard Validation
|
|
|
|
|
|
|
|
=== Non-Standard Transactions
|
|
|
|
|
|
|
|
=== Transaction Scripts and Script Language
|
|
|
|
|
|
|
|
==== Scripting Language
|
|
|
|
==== Turing Incompleteness
|
|
|
|
==== Stateless Verification
|
|
|
|
==== Transaction Script Operands
|
|
|
|
|
|
|
|
==== Script Construction (Lock + Unlock)
|
2014-05-20 01:03:58 +00:00
|
|
|
|
|
|
|
[[scriptSig and scriptPubKey]]
|
|
|
|
.Combining scriptSig and scriptPubKey to evaluate a transaction script
|
|
|
|
image::images/scriptSig_and_scriptPubKey.png["scriptSig_and_scriptPubKey"]
|
|
|
|
|
2014-06-04 04:17:57 +00:00
|
|
|
=== Standard Transaction Scripts
|
|
|
|
==== Pay to Public Key Hash Script Example
|
2014-05-20 01:03:58 +00:00
|
|
|
[[P2PubKHash1]]
|
|
|
|
.Evaluating a script for a Pay-to-Public-Key-Hash transaction (Part 1 of 2)
|
|
|
|
image::images/Tx_Script_P2PubKeyHash_1.png["Tx_Script_P2PubKeyHash_1"]
|
|
|
|
|
|
|
|
[[P2PubKHash2]]
|
|
|
|
.Evaluating a script for a Pay-to-Public-Key-Hash transaction (Part 2 of 2)
|
|
|
|
image::images/Tx_Script_P2PubKeyHash_2.png["Tx_Script_P2PubKeyHash_2"]
|
|
|
|
|
2014-06-04 04:17:57 +00:00
|
|
|
==== Pubkey Script Example
|
|
|
|
==== Multi-Signature Scripts Example
|
|
|
|
==== P2SH Script Example
|
|
|
|
|
|
|
|
=== Scripts and Signatures
|
|
|
|
==== Elliptic Curve Digital Signature Algorithm
|
|
|
|
===== Signing with the Private Key
|
|
|
|
===== Validating a Digital Signature
|
|
|
|
==== Types of Signature Hashes
|
2014-05-20 01:03:58 +00:00
|
|
|
|
2014-06-04 04:17:57 +00:00
|
|
|
=== Transaction Malleability
|