第06讲 Taproot 升级详解
Lesson 06: Taproot Upgrade Explained
Getting started with
Web3on your own is no easy task. As someone who recently entered the Web3 space, I've put together the simplest and most intuitiveWeb3beginner's guide. By integrating quality resources from the open-source community, I aim to guide everyone from beginner to expert in Web3. Updated 1-3 lessons per week.Follow me on Twitter: @bhbtc1337
Join the discussion group: Form Link
Articles are open-sourced on GitHub: Get-Started-with-Web3
Recommended exchange for buying BTC/ETH/USDT: Binance Registration Link
Table of Contents
Introduction
In the previous chapter "Segregated Witness (SegWit) Technology," we learned how SegWit solves the transaction malleability problem and improves network efficiency through data reorganization. Now, we'll explore the latest milestone in Bitcoin's technical evolution: the Taproot upgrade.
Taproot is a major Bitcoin upgrade implemented in 2021. It introduces the Schnorr signature algorithm and MAST technology, significantly enhancing Bitcoin's privacy, efficiency, and smart contract capabilities. This chapter will dive deep into Taproot's technical principles and applications.
Taproot Fundamentals
Basic Information
Activation date: November 14, 2021 (Block 709,632)
Upgrade method: Soft fork (Speedy Trial)
Core technologies: Schnorr Signatures + MAST + Tapscript
Primary goals: Privacy + Efficiency + Smart Contract Enhancement
What Is Taproot?
Taproot is a major Bitcoin upgrade that integrates three technologies:
- Schnorr Signatures: A more efficient and secure signature algorithm.
- MAST: Merklized Abstract Syntax Trees, improving privacy.
- Tapscript: A new scripting language that enhances smart contract capabilities.
Core Technical Innovations
1. Schnorr Signature Algorithm
Traditional ECDSA vs. New Schnorr:
ECDSA (Traditional):
- Signature length: 71-73 bytes
- Multisig complexity: Requires multiple signatures
- Poor privacy: Easy to identify multisig transactions
Schnorr (Taproot):
- Signature length: 64 bytes (fixed)
- Signature aggregation: Multiple signatures -> One signature
- Enhanced privacy: Multisig looks like single-sig
2. MAST (Merklized Abstract Syntax Trees)
Problem: Complex scripts expose all conditions
Solution: Only reveal the execution path actually used
Traditional P2SH script:
IF
Alice's signature AND Bob's signature # Condition 1
ELSE
Timelock AND Charlie's signature # Condition 2
ENDIF
MAST script:
Default: Alice single-sig (most common use)
Fallback: Merkle tree root (containing other complex conditions)
-> Only the condition actually used is revealed on-chain
Schnorr Signature Algorithm
Schnorr vs. ECDSA Comparison
Technical Feature Comparison
| Feature | ECDSA | Schnorr |
|---|---|---|
| Signature length | 71-73 bytes | 64 bytes (fixed) |
| Multisig handling | Requires multiple signatures | Can aggregate into single signature |
| Privacy | Easy to identify multisig | Multisig looks like single-sig |
| Security | Good | Better (provably secure) |
| Efficiency | Standard | Higher |
Signature Aggregation Mechanism
Traditional multisig (ECDSA):
Transaction = {
Inputs: [Signature1, Signature2, Signature3],
Outputs: [...]
}
Schnorr multisig (aggregated):
Transaction = {
Inputs: [AggregatedSignature], <- 3 signatures merged into 1
Outputs: [...]
}
Mathematical Principles
Schnorr Signature Generation
1. Choose random number k
2. Compute R = k * G (G is the generator point)
3. Compute e = hash(R || P || m) (P is the public key, m is the message)
4. Compute s = k + e * x (x is the private key)
5. Signature = (R, s)
Signature Verification
1. Compute e = hash(R || P || m)
2. Verify: s * G = R + e * P
Practical Advantages
1. Space Savings
2-of-3 multisig comparison:
ECDSA:
- 2 signatures: 2 x 71 bytes = 142 bytes
- 2 public keys: 2 x 33 bytes = 66 bytes
- Total: 208 bytes
Schnorr:
- 1 aggregated signature: 64 bytes
- 1 aggregated public key: 33 bytes
- Total: 97 bytes
Savings: (208 - 97) / 208 ~ 53%
2. Privacy Enhancement
Traditional multisig transaction characteristics:
- Obvious multisig address format
- Multiple signatures reveal number of participants
- Easy to identify corporate wallets
Taproot multisig transactions:
- Looks like an ordinary single-sig transaction
- Cannot determine from the transaction itself whether it's multisig
- Protects business privacy
MAST Technology Explained
What Is MAST?
MAST (Merklized Abstract Syntax Trees) is a technology that converts complex scripts into a Merkle tree, revealing only the execution path actually used.
The Problem with Traditional Scripts
Traditional P2SH multisig script:
IF
Alice's signature AND Bob's signature # Condition 1: Daily use
ELSE
Timelock AND Charlie's signature # Condition 2: Emergency
ELSE
Inheritance conditions # Condition 3: Estate inheritance
ENDIF
Problems:
- All conditions are exposed on-chain
- Poor privacy
- High fees (storing all conditions)
MAST's Solution
MAST structure:
Default path: Alice single-sig (most common)
Fallback paths: Merkle tree root (containing other conditions)
Actual usage:
Daily transfer: Only reveals Alice's signature
Emergency: Reveals timelock + Charlie's signature + path proof
Inheritance: Reveals inheritance conditions + path proof
Technical Implementation
Merkle Tree Construction
Assume 4 conditions: A, B, C, D
Level 2: Hash(A+B), Hash(C+D)
Level 1: Hash(Hash(A+B) + Hash(C+D)) = Merkle Root
Address = Hash(Internal Public Key + Merkle Root)
Path Proof
When using condition A:
Need to provide: A + Path Proof (proving A is in the tree)
Path proof: Hash(B), Hash(Hash(C+D))
Verification:
1. Compute Hash(A+B)
2. Compute Hash(Hash(A+B) + Hash(Hash(C+D)))
3. Verify it equals the Merkle Root
Privacy Improvements
Information Hiding
Information exposed by traditional methods:
- All possible execution conditions
- Number of participants
- Business logic structure
Information hidden by MAST:
- Only the condition actually used is revealed
- Other conditions remain private
- Cannot infer the complete logic
Privacy Improvements
Privacy Comparison
Privacy comparison:
Traditional multisig (2-of-3):
Address: 3AnNyxwq... (P2SH)
-> Clearly identifiable as multisig
-> Script exposes all conditions
Taproot multisig:
Address: bc1p5d7rj... (P2TR)
-> Looks like ordinary single-sig
-> Only known to be complex when spent
Benefits:
- Transaction privacy greatly increased
- On-chain analysis more difficult
- User privacy protected
Practical Application Scenarios
Enterprise Wallet Privacy
Traditional enterprise multisig:
- Address format reveals multisig characteristics
- Transaction patterns easily identified
- Business activities are transparent
Taproot enterprise multisig:
- Looks like a personal wallet
- Cannot determine enterprise nature from address
- Protects business privacy
Complex Inheritance Plans
Traditional inheritance script:
"My single-sig OR (Timelock AND Heir's signature)"
-> Exposes the inheritance logic
Taproot inheritance:
Default: My single-sig (daily use)
Fallback: Inheritance conditions (hidden)
-> Daily use only reveals single-sig
Efficiency Optimization
Data Size Comparison
Data size comparison:
Traditional 2-of-3 multisig:
- Script size: ~105 bytes
- Signature data: ~144 bytes (2 signatures)
- Total overhead: ~249 bytes
Taproot multisig (aggregated signatures):
- Script size: 32 bytes (only public key hash)
- Signature data: 64 bytes (aggregated single signature)
- Total overhead: ~96 bytes
Savings: (249 - 96) / 249 ~ 61% space!
Fee Savings
Fee calculation comparison:
Traditional multisig transaction:
Fee = 249 bytes x Fee rate
Taproot multisig transaction:
Fee = 96 bytes x Fee rate
Savings: ~61% in fees
Performance Improvements
Verification Speed
Schnorr signature verification:
- Faster than ECDSA
- Supports batch verification
- Reduces computational overhead
Network Efficiency
Smaller transaction sizes:
- Faster propagation
- Lower network load
- Higher throughput
Smart Contract Enhancements
Tapscript New Features
New Opcodes
New opcodes introduced by Taproot:
- OP_CHECKSIGADD: Supports Schnorr signature verification
- OP_TAPBRANCH: Supports script paths
- OP_TAPLEAF: Supports leaf node operations
Script Flexibility
Traditional script limitations:
- Fixed script structure
- Limited combination methods
- Poor privacy
Tapscript advantages:
- More flexible script combinations
- Better privacy protection
- More efficient execution
Practical Application Scenarios
1. Lightning Network Optimization
Lightning Network channels:
- Use Taproot for improved privacy
- Channel closings look like ordinary transfers
- Reduced on-chain footprint
2. DeFi Applications
DeFi contracts:
- Complex DeFi logic appears simplified on-chain
- Protects user privacy
- Reduces fees
3. Timelock Contracts
Timelocks:
- More flexible time conditions
- Better privacy protection
- Lower fees
Hands-On: Taproot Transactions
Taproot Transaction Structure
json// Taproot transaction example { "vin": [ { "txid": "abc123...", "vout": 0, "scriptSig": { "asm": "", "hex": "" }, "witness": [ "signature_64_bytes" // <- Concise Schnorr signature ] } ], "vout": [ { "value": 0.01000000, "scriptPubKey": { "asm": "OP_1 5d7rjc4k3m8n9p0q1r2s3t4u5v6w7x8y9z", "type": "witness_v1_taproot", // <- Taproot type "address": "bc1p5d7rjc4k3m8n..." // <- Starts with bc1p } } ] }
Creating a Taproot Address
pythonimport requests import json def bitcoin_rpc(method, params=[]): url = "http://localhost:8332" headers = {'content-type': 'application/json'} payload = { "method": method, "params": params, "jsonrpc": "2.0", "id": 0, } response = requests.post(url, data=json.dumps(payload), headers=headers, auth=('user', 'password')) return response.json() def create_taproot_address(): # Generate a new Taproot address result = bitcoin_rpc("getnewaddress", ["", "bech32m"]) print(f"Taproot Address: {result['result']}") return result['result'] # Execute Taproot address creation taproot_address = create_taproot_address()
Taproot Multisig Wallet
pythondef create_taproot_multisig(pubkeys, required_signatures): """Create a Taproot multisig wallet""" # Create multisig address result = bitcoin_rpc("createmultisig", [required_signatures, pubkeys, "bech32m"]) print(f"Taproot Multisig Address: {result['result']['address']}") return result['result'] def sign_taproot_transaction(raw_tx, private_keys): """Sign a Taproot transaction""" # Use Schnorr signature signed_tx = bitcoin_rpc("signrawtransaction", [raw_tx, [], private_keys]) return signed_tx['result']['hex'] # Usage example pubkeys = ["pubkey1", "pubkey2", "pubkey3"] multisig_info = create_taproot_multisig(pubkeys, 2)
MAST Script Example
pythondef create_mast_script(internal_key, merkle_root): """Create a MAST script""" # Build Taproot address taproot_address = bitcoin_rpc("createtaproot", [internal_key, merkle_root]) return taproot_address['result']['address'] def spend_mast_script(script_path, path_proof): """Spend a MAST script""" # Provide script path and proof witness = [script_path] + path_proof return witness
FAQ
Is Taproot backward compatible?
Answer: Yes!
Compatibility features:
- Soft fork upgrade
- Old nodes can validate Taproot transactions
- Gradual adoption
- No network split
Is the Schnorr signature secure?
Security analysis:
- Mathematically provably secure
- More secure than ECDSA
- Years of academic research
- Already validated in other projects
How does MAST improve privacy?
Privacy improvement mechanism:
- Only reveals the condition actually used
- Other conditions remain hidden
- Cannot infer complete logic
- Protects business privacy
What is the Taproot address format?
Address format:
- Prefix: bc1p
- Length: 62 characters
- Encoding: Bech32m
- Note: Case-sensitive
How to migrate to Taproot?
Migration strategy:
1. Use Taproot for new addresses
2. Gradually transfer funds
3. Update wallet software
4. Enjoy new features
What impact does Taproot have on Ordinals?
Ordinals applications:
- Uses Taproot for data storage
- Better privacy
- Lower fees
- Larger data capacity
Conclusion
Through this chapter, you've gained a deep understanding of the core technical value of the Taproot upgrade:
- Schnorr Signatures: Understood a more efficient and secure signature algorithm.
- MAST Technology: Mastered the Merkle tree technique for privacy improvement.
- Privacy Enhancement: Learned how to protect transaction privacy.
- Efficiency Optimization: Understood space and fee savings mechanisms.
- Smart Contracts: Recognized new scripting capabilities.
Taproot is an important milestone in Bitcoin's technical evolution. It not only improves Bitcoin's privacy and efficiency but also lays a solid foundation for future innovative applications.
In the next chapter, "Ordinals and Inscriptions Technology," we'll learn how to use Taproot technology to create unique digital assets, exploring the world of NFTs and digital art on Bitcoin.
The Significance of Taproot: Taproot technology embodies the Bitcoin community's spirit of innovation, achieving major functional upgrades through soft forks while maintaining network stability and opening up unlimited possibilities for the future.
Challenge Quiz
Complete 5 questions, you need to get all correct to unlock the next chapter
If this lesson was helpful, please consider supporting the author ☕
Support Author · Buy Me a Coffee