Bitcoin Upgrades: SegWit, Taproot & Soft Forks
Bitcoin upgrades by soft fork: how SegWit and Taproot changed signatures and scripts, how activation worked, and where covenant proposals stand.
The basics
Why Bitcoin Changes Slowly
Bitcoin has no company, release manager or vote that can change its rules. Every full node, meaning a computer that checks each block against the rules itself, enforces them, so a change only works if enough of the network adopts it. The gentlest kind is a soft fork: a change that makes the rules stricter, so blocks built by upgraded software are still accepted by older software. The Taproot specification (BIP-341) says that older software continues to operate without modification. A hard fork, by contrast, allows blocks that older software would reject, so everyone must upgrade or the network can split in two. SegWit and Taproot were both soft forks.
SegWit: Moving the Signatures
SegWit (Segregated Witness, BIP-141) separates a transaction's signatures, called the witness, from the data that determines its identifier, the txid. Before it, a third party could change how a signature was encoded and so change the txid without changing what the transaction did, a flaw called malleability. BIP-141 describes the new design as making nonintentional malleability impossible. Miners switched it on by signalling during a window that BIP-141 set on mainnet from 15 November 2016 to 15 November 2017. Native SegWit addresses of the first version begin with 'bc1q', as the examples in BIP-173 show.
Taproot: Cheaper, More Private Spending
Taproot is three specifications deployed together: BIP-340 (Schnorr signatures, a scheme whose signatures can be combined), BIP-341 (the spending rules) and BIP-342 (script validation). Its central idea is that one output can be spent either by a single key or, optionally, by a script, and the two look alike on-chain unless the script route is used. A group of signers can combine their keys into one, so a shared wallet can spend in a way that is indistinguishable from an ordinary single-key payment. Taproot activated at block 709,632, which carries a timestamp of 14 November 2021 (UTC). Its addresses begin with 'bc1p'.
- What each changed: SegWit moved signatures out of the txid and set a new block weight limit; Taproot added Schnorr signatures and key-or-script outputs.
- What a user sees: bc1q addresses for SegWit's original script version, bc1p addresses for Taproot, which uses the Bech32m encoding from BIP-350.
- How both were introduced: as soft forks, so nodes that had not upgraded kept following the chain.
Key Takeaways
- Bitcoin rules change only when enough nodes and miners adopt a change, and soft forks keep older software working.
- SegWit separated signatures from the txid, which removed a long-standing malleability problem.
- Taproot lets groups of signers spend in a way that looks like a single-key payment.
- Addresses beginning bc1q and bc1p show which of the two script versions an output uses.
Going deeper
How a Soft Fork Is Switched On
A soft fork needs a way to say when the new rules begin. BIP-9 turns the version field of the block header into a set of bits, one per separate change, so several deployments can run in parallel. Each deployment moves through the states DEFINED, STARTED, LOCKED_IN, ACTIVE or FAILED, decided once per retarget period. Miners set the deployment's bit to signal readiness. As of October 2026, BIP-9 defines that period as 2,016 blocks, sets lock-in at 1,916 of them (95%) and suggests a timeout one year after the start time. SegWit used this design with bit 1, as BIP-141 specifies.
Two Contrasting Activation Paths
SegWit's BIP-9 window ran from 15 November 2016 to 15 November 2017, and lock-in needed 95% of blocks in a 2,016-block period to signal, the BIP-9 threshold. BIP-148 proposed a different lever: a flag-day rule under which, between 1 August 2017 and 15 November 2017, nodes running it would reject any block that did not signal for SegWit, unless SegWit had already locked in. That moved the pressure from miners alone onto the nodes that enforce the rules. BIP-141 itself carries the status Deployed as of October 2026.
By contrast, Taproot used a third route. The Bitcoin Core 0.21.1 release notes describe a variation of BIP-9 called Speedy Trial: the start date was 24 April 2021, with signals counted from the first retarget period after it; lock-in needed 90% of a 2,016-block period (1,815 blocks), and BIP-341 gives 11 August 2021 as the timeout. The activation could not occur before block 709,632, a height reached on 14 November 2021 (UTC), so that operators had time to upgrade once the change locked in. The notes added that, if Speedy Trial failed, a follow-up mechanism was expected. As of October 2026, BIP-341 records that the deployment did activate at that height.
What Taproot Added Under the Hood
BIP-340 specifies 64-byte Schnorr signatures over the secp256k1 curve, a fixed size where the older DER-encoded ECDSA signatures run up to 72 bytes, with 32-byte public keys in place of 33-byte ones. Schnorr signatures are linear, so several parties can produce one signature that is valid for the sum of their public keys, the building block for compact multisignatures. BIP-341 adds Merkle branches: a tree of scripts whose root is committed in the output, so a spender reveals only the branch that actually runs. Spending by key alone reveals nothing about whether a script route existed.
Why Old Nodes See New Outputs as Anyone-Can-Spend
As read in October 2026, BIP-341 states that nodes which have not upgraded consider all SegWit version 1 witness programs to be anyone-can-spend scripts, because the old rules attach no conditions to them. Upgraded nodes enforce the Taproot conditions, which is why BIP-341 says non-upgraded nodes are strongly encouraged to upgrade if they want to fully validate those outputs.
Key Takeaways
- BIP-9 signals readiness through block-header version bits and a high miner threshold.
- BIP-148 was a flag-day rule that would have rejected non-signalling blocks between 1 August and 15 November 2017.
- Speedy Trial combined a short signalling window with a minimum activation height, so activation could be delayed until a set height after lock-in.
- Schnorr signatures and Merkle-branch scripts are what let Taproot hide unused spending conditions.
Under the hood
Covenants: Proposals That Have Not Activated
A covenant is a rule attached to a coin that restricts how it can be spent later, beyond which key signs. Two proposals in the BIPs repository add covenant-like power. BIP-119 (OP_CHECKTEMPLATEVERIFY, assigned on 6 January 2020) lets an output commit to a hash of the transaction that must spend it, covering fields such as the version, locktime, sequences, outputs and input index; its stated motivation is to reduce the trust, interactivity and storage requirements of pre-signed transactions. BIP-347 (OP_CAT in Tapscript) would redefine the unused Tapscript opcode OP_SUCCESS126 as the joining of two stack items, with each result capped at 520 bytes.
Draft and Complete Are Not the Same as Active
Each BIP header carries a status. As of October 2026, BIP-141, BIP-340 and BIP-341 are marked Deployed, BIP-119 is marked Draft, and BIP-347 is marked Complete, a label added by a changelog entry dated 1 March 2026. BIP-347's own text, as read in October 2026, still says OP_CAT 'would be activated via a soft fork', so the label describes the maturity of the document and not a switch on the network. The header evidence available in October 2026 therefore shows no activation for either covenant proposal. BIP-347 also recalls that OP_CAT was disabled in 2010 and notes that Tapscript's 520-byte stack element limit removes the memory-growth concern attributed to that removal.
How Witness Space Made Inscriptions Cheap
As of October 2026, BIP-141 defines block weight as the non-witness size times three plus the total size, with a limit of 4,000,000, so a witness byte uses one weight unit where other bytes use four. The Ordinals handbook says inscription content is stored in taproot script-path spend scripts, which receive the witness discount, and that single data pushes may not exceed 520 bytes, so large files are split across pushes. Because script spends need an existing Taproot output, an inscription takes two steps, a commit transaction and a reveal transaction. BIP-341 states its aims as privacy, efficiency and flexibility of scripting, and inscriptions are not among them.
Scope, Trade-offs and the Quantum Question
Each upgrade chose a narrow scope. BIP-341 explains that combining every known idea into one proposal would be hard to review and could miss discoveries, so it left cross-input signature aggregation out because its interaction with upgrade mechanisms was still unsettled. It also argues that hiding a key behind a hash gives only weak protection against quantum computers, because spending transactions reveal the key while waiting for confirmation and a large share of coins is not protected that way regardless. BIP-347 adds that a sufficiently powerful quantum attacker could bypass a Taproot script route through the key route.
Reading a BIP Before Believing a Headline
Three fields answer most status questions. The Layer line says whether the change touches consensus rules, such as 'Consensus (soft fork)'. The Status line says Draft, Complete or Deployed. A Deployment section, where one exists, names the activation mechanism and its parameters; BIP-341, for example, lists as read in October 2026 its start time, timeout, threshold and minimum activation height. A proposal with no Deployment section and no parameters has no activation path on the page.
Key Takeaways
- BIP-119 (Draft) and BIP-347 (Complete) are covenant-related proposals that, as of October 2026, are not marked Deployed.
- A Draft or Complete status describes a document, while a Deployment section and activation parameters describe the network switch.
- Taproot script spends receive the witness discount, which is part of the technical basis for Ordinals inscriptions.
- BIP-341 deliberately limited its scope and notes that public-key hashing gives only weak quantum protection.
- Checking the Layer, Status and Deployment fields separates proposals from live rules.
Related Content
Related Coins
Related Topics
More Topics
Browse all 189 topicsPBS and MEV-Boost
How Proposer-Builder Separation (PBS) and MEV-Boost restructured Ethereum's block-production supply chain, who the builders and relays are, why it matters for censorship resistance, and what enshrined PBS would change.
Merkle Trees & Merkle Proofs
A Merkle tree condenses many items into one root hash, and a Merkle proof shows one item belongs under it; this page covers Bitcoin and Ethereum uses.
Rollup Security Stages & Escape Hatches
Rollup security stages rate how much users must trust a rollup's operators and council, and escape hatches are the exits that still work without them.
Running a Node & Client Diversity
Running a node means checking a blockchain's rules yourself, and client diversity means no single software bug should decide what the network accepts.
When an Exchange Fails: Custodial Claims & Bankruptcy
How courts treat customer balances when a crypto exchange enters bankruptcy, with estate property, dollar claims and three real cases as of October 2026.
Blockchain Forensics: How Crypto Is Traced
Blockchain forensics reads public ledger data, using address clustering, labels and legal process, to follow funds and link them to real parties.
Is a Token a Security? The Howey Test
The Howey test is the 1946 US Supreme Court test for an investment contract, a type of security; this page traces its crypto use as of October 2026.
Crypto Energy Use: Proof of Work vs Proof of Stake
Crypto energy use is the electricity that networks consume to secure transactions, which differs sharply between proof of work and proof of stake.
References & further reading
- primaryBitcoin BIPs - BIP-141 Segregated Witness (Consensus layer)
Witness separation, malleability motivation, block weight (base size x 3 + total size, limit 4,000,000) and BIP-9 deployment parameters (bit 1, mainnet 15 Nov 2016 to 15 Nov 2017); status Deployed, read 26 Oct 2026.
- primaryBitcoin BIPs - BIP-173 Base32 address format for native v0-16 witness outputs
Mainnet example addresses for version 0 witness programs begin bc1q; read 26 Oct 2026.
- primaryBitcoin BIPs - BIP-350 Bech32m format for v1+ witness addresses
Version 0 outputs keep Bech32, versions 1 to 16 use Bech32m; example version 1 address begins bc1p; read 26 Oct 2026.
- primaryBitcoin BIPs - BIP-340 Schnorr Signatures for secp256k1
64-byte Schnorr signatures, 32-byte public keys, linearity and batch verification; status Deployed, read 26 Oct 2026.
- primaryBitcoin BIPs - BIP-341 Taproot: SegWit version 1 spending rules
Key and script spending, Merkle branches, anyone-can-spend view of old nodes, Speedy Trial parameters (start 24 Apr 2021, timeout 11 Aug 2021, 1,815 blocks, minimum height 709,632) and activation at 709,632; read 26 Oct 2026.
- primaryBitcoin BIPs - BIP-9 Version bits with timeout and delay
Version-bit signalling, deployment states, 1,916 of 2,016 threshold and one-year timeout guideline; read 26 Oct 2026.
- primaryBitcoin BIPs - BIP-148 Mandatory activation of segwit deployment
Flag-day rule active from 1 Aug 2017 to 15 Nov 2017 that rejects non-signalling blocks; read 26 Oct 2026.
- primaryBitcoin Core - Release notes 0.21.1
Taproot activation parameters, Speedy Trial description, 90% threshold, block 709,632 and the follow-up mechanism if it failed; read 26 Oct 2026.
- primaryBitcoin BIPs - BIP-119 CHECKTEMPLATEVERIFY
Status Draft, assigned 6 Jan 2020, template-hash fields and presigning motivation; read 26 Oct 2026.
- primaryBitcoin BIPs - BIP-347 OP_CAT in Tapscript
Status Complete (changelog 1 Mar 2026), activation described as a future soft fork, 520-byte cap, 2010 disabling and quantum caveat; read 26 Oct 2026.
- primaryOrdinals Handbook - Inscriptions
Inscription content stored in taproot script-path spend scripts with the witness discount; 520-byte pushes; commit and reveal; read 26 Oct 2026.
- secondarymempool.space - Bitcoin block 709632 (REST API)
Block timestamp 1636866927, equal to 14 Nov 2021 05:15:27 UTC; explorer data, so secondary to the chain itself; read 26 Oct 2026.