Historical Upgrades: SegWit, Taproot & Beyond
Lesson by Uvin Vindula
Bitcoin has undergone several significant upgrades throughout its history. Each one tells a story about the community's priorities, the challenges of decentralized coordination, and the ongoing effort to improve Bitcoin without compromising its core properties.
SegWit (Segregated Witness) — 2017
SegWit, proposed by developer Pieter Wuille as BIP 141, was one of the most important and contentious upgrades in Bitcoin's history. It separated ("segregated") transaction signature data ("witness") from the main transaction data.
What it fixed:
- Transaction malleability: A long-standing bug where transaction IDs could be changed before confirmation, which was blocking the development of second-layer protocols like the Lightning Network.
- Effective block capacity: By moving signature data to a separate structure, SegWit effectively increased the amount of transaction data that could fit in a block from 1 MB to approximately 1.8-2.1 MB (measured in "weight units" rather than raw bytes).
- Script versioning: Created a framework for future upgrades to be deployed more easily.
The controversy: SegWit's activation was mired in the Block Size Wars (covered in the next lesson). Many miners and businesses wanted a simple block size increase instead. SegWit eventually activated on August 24, 2017, after a complex political process involving BIP 91 and the User Activated Soft Fork (UASF) movement.
Taproot — 2021
Taproot, activated in November 2021 through BIPs 340, 341, and 342, was Bitcoin's most significant upgrade since SegWit. Remarkably, it achieved near-universal consensus — a stark contrast to SegWit's contentious activation.
What Taproot brought:
- Schnorr signatures (BIP 340): Replaced the ECDSA signature scheme with Schnorr signatures, which are more efficient and enable key aggregation — multiple signatures can be combined into one, saving block space and enhancing privacy.
- MAST (Merkelized Abstract Syntax Trees) via BIP 341: Allows complex spending conditions to be committed to a transaction without revealing all the conditions. Only the condition that is actually used is revealed on-chain, improving both privacy and efficiency.
- Tapscript (BIP 342): Updated Bitcoin's scripting language to take advantage of Schnorr and Taproot, enabling more flexible smart contracts.
Real-world impact: Taproot makes multi-signature transactions look identical to single-signature transactions on-chain, significantly improving privacy. It also laid the groundwork for more sophisticated Bitcoin applications, including the Ordinals protocol (Bitcoin NFTs) and more efficient Lightning Network operations.
Other Notable Upgrades
- P2SH (2012, BIP 16): Pay to Script Hash — enabled multi-signature addresses and more complex transaction types.
- CheckLockTimeVerify (2015, BIP 65): Allowed time-locked transactions — funds that can't be spent until a specific time or block height.
- CheckSequenceVerify (2016, BIP 112): Enabled relative time locks, crucial for payment channels and the Lightning Network.
For Sri Lankan Bitcoiners, these upgrades matter because they directly improve Bitcoin's usefulness as a financial tool. SegWit enabled the Lightning Network, which makes small, instant Bitcoin payments practical — imagine paying for a cup of tea at a Colombo cafe in Bitcoin with near-zero fees. Taproot's privacy improvements make Bitcoin transactions more fungible, which is essential for a functional currency.
Key Takeaways
- •SegWit (2017) fixed transaction malleability and increased effective block capacity, enabling the Lightning Network
- •Taproot (2021) introduced Schnorr signatures, MAST, and Tapscript for better privacy and efficiency
- •Taproot makes multi-sig transactions look identical to single-sig on-chain, enhancing privacy
- •Each major upgrade built upon previous ones — SegWit enabled Lightning, Taproot enabled Ordinals
- •Bitcoin upgrades directly improve practical usability for everyday transactions
Quick Quiz
Question 1 of 3
0 correct so far
What critical bug did SegWit fix?