Week 4 was another great call on Discord where we answered the following questions:
1. How do scriptSig and scriptPubKey interact during validation? Why are they separated?
2. What are the steps a full node takes to validate a transaction before accepting it into the mempool?
3. Why did transaction malleability exist in legacy transactions, and how did SegWit fix it? Why is signature malleability a serious issue for higher-layer protocols like Lightning?
4. How are fees determined for a transaction? How does SegWit change the fee incentives for different parts of a transaction?
5. What constraints exist on coinbase transactions that don’t apply to normal transactions? How does the coinbase transaction commit to the block’s witness data?
6. What is the UTXO set? What role does it play in preventing double-spends?
7. What is a sighash flag? How do different sighash flags (e.g., SIGHASH_ALL, SIGHASH_NONE) change what is committed to?
8. What was Satoshi’s original intention for the sequence number and why is it considered insecure? What is the sequence number currently used for?
9. How do nLockTime, nSequence, OP_CHECKLOCKTIMEVERIFY, and OP_CHECKSEQUENCEVERIFY interact?
10. How do timelocks enable protocols like payment channels or vaults?
Next week we cover more. Stay tuned.
@Bitcoin Dev Project 