Encyclopedia Upgrades and scaling · Entry 397
Taproot explained: Schnorr signatures, hidden scripts and Bitcoin’s 2021 upgrade
In this article
At a glance
Key facts
| Fact | Detail | Source |
|---|---|---|
| Proposals | BIP340 (Schnorr), BIP341 (Taproot), BIP342 (Tapscript) | [1][2][3] |
| Activation software | Bitcoin Core 0.21.1, released 1 May 2021 | [5] |
| Signaling window | 24 April to 11 August 2021; 90% of a 2,016-block period on bit 2 | [5][2] |
| Activated | Block 709,632, 14 November 2021, 05:15 UTC | [6][7] |
| Signature size | BIP340 signatures are 64 bytes and public keys 32 bytes; a Taproot witness signature adds a byte when an explicit nondefault sighash type is used | [1][2] |
| Address prefix | bc1p, using the Bech32m format | [4] |
| Fork type | Soft fork; Taproot outputs are SegWit version 1 | [2] |
Taproot is three proposals that only make sense together
Taproot is the everyday name for a bundle of three Bitcoin Improvement Proposals that activated at the same time. BIP340 defines Schnorr signatures for Bitcoin’s curve. BIP341 defines Taproot itself: a new kind of output and the rules for spending it. BIP342 defines Tapscript, the updated scripting rules that run inside those outputs. Pieter Wuille, Jonas Nick and Anthony Towns wrote 341 and 342; Wuille, Nick and Tim Ruffing wrote 340.
BIP341 states the goal as improving “privacy, efficiency, and flexibility of Bitcoin’s scripting capabilities without adding new security assumptions.” The authors note that Schnorr signatures, Merkle branches (an idea earlier proposals called MAST) and Taproot had each been proposed separately, and that combining them “in a single proposal would be an extensive change,” so they were split into three documents that were designed and deployed as one.
Everything below is built on the SegWit upgrade of 2017, which gave each output a version number. Taproot outputs are SegWit version 1; the older native SegWit outputs are version 0. That versioning is what allowed a change this large to be introduced as a soft fork, meaning older nodes continue to accept the new blocks without understanding the new rules.
Schnorr signatures: a cleaner signature that can be added together
Bitcoin launched with a signature scheme called ECDSA. It works, but it has awkward properties. Its security proof rests on stronger assumptions than cryptographers would like, its signatures come in a variable-length encoding, and a signature can be altered into a different valid form by anyone who sees it, which is the malleability problem that SegWit had to work around.
BIP340 specifies Schnorr signatures for the same curve Bitcoin already uses, so no new cryptographic assumption is introduced. The proposal says Schnorr signatures are “provably secure” under standard assumptions, that they are not malleable, and that they are a fixed 64 bytes with 32-byte public keys, one byte shorter than before. Nodes can also verify many Schnorr signatures in a single batch, which is faster than checking them one at a time.
The property that matters most is linearity. Because of how the math works, BIP340 explains, Schnorr “enables multiple collaborating parties to produce a signature that is valid for the sum of their public keys.” Three people sharing control of a coin can publish one combined key and one combined signature, and on the chain it looks exactly like one person spending one coin. Under ECDSA a multi-signature spend had to reveal every key and every signature.
The key path and the script path: two doors into the same coin
A Taproot output contains a single public key, which BIP341 calls the output key. That key is built from two ingredients: an internal key, which might be one person’s key or an aggregate of several, and the root of a Merkle tree whose leaves are scripts, each describing an alternative way to spend the coin. The proposal defines the output key as the internal key plus a hash of the internal key and the tree root, so the tree is committed inside the key without being visible.
The simplest way to spend is the key path: whoever controls the internal key signs with a Schnorr signature, and that is the whole witness. Nothing about the tree is revealed. BIP341 spells out the privacy consequence: “As long as the key-based spending path is used for spending, it is not revealed whether a script path was permitted.” A plain single-signature wallet, a two-of-three multisig and a complex contract with a dozen fallback conditions all look the same.
The other way is the script path. If the parties cannot or will not cooperate on a key-path spend, the spender reveals one leaf script, the Merkle branch that proves it belongs to the tree, and whatever the script requires. The other leaves stay hidden. This is the Merkle-branch idea, often called MAST, and it means a coin can carry many spending conditions while only ever revealing the one that gets used.
Tapscript changes how scripts check signatures
Scripts revealed on the script path run under BIP342’s rules, which the proposal calls Tapscript. The signature-checking operations now verify Schnorr signatures instead of ECDSA. The old multi-signature opcode, OP_CHECKMULTISIG, is disabled, because it was awkward to verify in batches. In its place there is OP_CHECKSIGADD, which counts valid signatures one at a time so that a rule such as “any two of these three keys” can be written efficiently and batch-verified.
Tapscript also reserves a set of unused opcodes as OP_SUCCESS. Any script containing one is treated as automatically valid today, which sounds odd until you see the purpose: a future soft fork can assign meaning to one of those opcodes without breaking anything, because today’s nodes were already accepting it. BIP342 frames the whole document as making “Schnorr signatures, batch validation, and signature hash” improvements available inside scripts, not just for key-path spends.
Addresses that start with bc1p
Taproot outputs are written as addresses using Bech32m, defined in BIP350 by Pieter Wuille. Bech32m is a small fix to the Bech32 format that SegWit introduced. The original had an unexpected weakness: BIP350 explains that “whenever the final character is a ‘p’, inserting or deleting any number of ‘q’ characters immediately preceding it does not invalidate the checksum.” Version 0 addresses were safe because of their fixed lengths, but future versions would not have been.
So version 0 addresses keep using Bech32, and version 1 and above use Bech32m, which changes one constant in the checksum. A mainnet Taproot address begins with bc1p. Sending to one from an older wallet that does not understand Bech32m will fail rather than silently misdirect coins, which was the intent. Our guide to Bitcoin address types shows the formats side by side.
Speedy Trial: how Taproot activated in November 2021
Bitcoin Core 0.21.1, released on 1 May 2021, carried the activation logic. The method, nicknamed Speedy Trial, was a variation of the BIP9 version-bits signaling used for SegWit, with two differences. The window was short: if 90% of the blocks in any 2,016-block period signaled on bit 2 between 24 April and 11 August 2021, Taproot would lock in; if not, the attempt would simply expire. And there was a minimum activation height of 709,632, so even after locking in, the rules would not switch on until that block, giving everyone months to upgrade.
The contrast with SegWit was deliberate. SegWit’s signaling dragged on for most of a year and became entangled in the block size war. Taproot had no comparable opposition, and the release notes encouraged “all users, businesses, and miners” to upgrade “unless they object to activation of taproot.” Miners reached the threshold within the window.
Block 709,632 was mined by F2Pool on 14 November 2021 at 05:15 UTC, with 2,043 transactions. Bitcoin Optech’s newsletter that week confirmed that the soft fork “activated at block height 709,632,” and noted a wrinkle: several large mining pools were not yet including Taproot spends in their blocks, most likely because their transaction-selection software had not caught up with their signaling. The newsletter’s advice was to run your own Taproot-enforcing node rather than rely on what pools do.
Compare what a key-path spend and a script-path spend disclose
For a key-path spend, the on-chain witness supplies a signature for the output key. For a script-path spend, it supplies the executed script and the information needed to prove that script belongs to the committed tree. Unused script branches do not have to be published in full.
This is a statement about the spending conditions exposed by those paths. It is not a promise that transaction amounts, timing, or outside information stop being useful for analysis. When a claim says “Taproot improves privacy,” ask which construction and which spending path the claim describes.
Direct answers
Questions people ask
Is Taproot a hard fork?
No. Taproot is a soft fork using SegWit version-1 outputs. Its rules preserve compatibility with older validation rules, while upgraded nodes enforce the new spending requirements. This describes rule compatibility, not a guarantee that any old node will always follow the intended chain.
What does Taproot do for privacy?
A key-path spend supplies a signature for the output key without revealing an unused script tree. A script-path spend reveals the script being used and its inclusion proof, rather than every alternative script in full. These benefits concern spending conditions; they do not make transaction amounts, timing or external information private.
When did Taproot activate?
At block 709,632, mined on 14 November 2021 at 05:15 UTC. Miners had met the signaling threshold earlier in 2021, but the activation rules included a minimum height so that nobody was caught off guard.
Do I need a Taproot address?
No. Legacy, SegWit and Taproot addresses all keep working. A Taproot address starts with bc1p and uses the Bech32m format; a wallet that does not understand Bech32m should refuse to send to it rather than send coins somewhere wrong.
What is MAST?
MAST is the older name for the idea of putting a coin’s alternative spending scripts into a Merkle tree and revealing only the one that gets used. BIP341 builds it into Taproot outputs as the script path, and cites the earlier MAST proposals directly.
Inspect the evidence
The answer and key facts have stable claim links. These records retain the scope and qualification when reused.
Taproot activated at block 709,632 on 14 November 2021. It adds Schnorr signatures and an output type that can be spent through a key or by revealing one branch of a script tree. A cooperative key-path spend can hide the existence of other conditions, while script-path spends reveal the executed branch. This can save space and improve privacy in particular constructions; it does not make all transactions indistinguishable. Mainnet Taproot addresses begin bc1p.
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimProposals: BIP340 (Schnorr), BIP341 (Taproot), BIP342 (Tapscript)
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimActivation software: Bitcoin Core 0.21.1, released 1 May 2021
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimSignaling window: 24 April to 11 August 2021; 90% of a 2,016-block period on bit 2
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimActivated: Block 709,632, 14 November 2021, 05:15 UTC
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimSignature size: BIP340 signatures are 64 bytes and public keys 32 bytes; a Taproot witness signature adds a byte when an explicit nondefault sighash type is used
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimAddress prefix: bc1p, using the Bech32m format
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimFork type: Soft fork; Taproot outputs are SegWit version 1
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimRevision history
- — Initial Bitcoin encyclopedia entry at this permanent URL.
- — Revised direct answer to preserve source scope and qualifications. Corrected key fact: Signature size
- — Added reusable claims, explicit source locators, and matching Markdown and JSON. This publishing change does not itself establish factual verification.
- — Added “Compare what a key-path spend and a script-path spend disclose”, clarified the search description. Independent verification is recorded separately.
Source register
Sources and references
Retrieval dates and locators are recorded individually.- BIP 340: Schnorr Signatures for secp256k1Pieter Wuille and Jonas Nick and Tim RuffingBitcoin Improvement Proposals repository on GitHub
Specifies Schnorr signatures: provable security, non-malleability, 64-byte signatures with 32-byte keys, batch verification, and linearity that lets parties sign for the sum of their keys.
Locator: Specifies Schnorr signatures: provable security, non-malleability, 64-byte signatures with 32-byte keys, batch verification, and linearity that lets parties sign for the sum of their keys. · Version / scope: 927b6de9915c9262615a6399de51b200f81e5aa4 · Retrieved: 2026-10-02T15:04:18.814642+00:00Open source - BIP 341: Taproot: SegWit version 1 spending rulesPieter Wuille and Jonas Nick and Anthony TownsBitcoin Improvement Proposals repository on GitHub
Defines Taproot outputs, the internal key tweaked by the Merkle root, key-path and script-path spending, the privacy rationale, and the Speedy Trial deployment with minimum activation height 709,632.
Locator: Defines Taproot outputs, the internal key tweaked by the Merkle root, key-path and script-path spending, the privacy rationale, and the Speedy Trial deployment with minimum activation height 709,632. · Version / scope: 927b6de9915c9262615a6399de51b200f81e5aa4 · Retrieved: 2026-10-02T15:04:13.593548+00:00Open source - BIP 342: Validation of Taproot ScriptsPieter Wuille and Jonas Nick and Anthony TownsBitcoin Improvement Proposals repository on GitHub
Defines Tapscript: Schnorr-based signature checks, OP_CHECKSIGADD, the disabling of OP_CHECKMULTISIG, and OP_SUCCESS opcodes reserved for future upgrades.
Locator: Defines Tapscript: Schnorr-based signature checks, OP_CHECKSIGADD, the disabling of OP_CHECKMULTISIG, and OP_SUCCESS opcodes reserved for future upgrades. · Version / scope: 927b6de9915c9262615a6399de51b200f81e5aa4 · Retrieved: 2026-10-02T15:04:15.160885+00:00Open source - BIP 350: Bech32m format for v1+ witness addressesPieter WuilleBitcoin Improvement Proposals repository on GitHub
Explains the Bech32 insertion weakness and specifies Bech32m for witness versions 1 and above, which gives Taproot addresses the bc1p prefix.
Locator: Explains the Bech32 insertion weakness and specifies Bech32m for witness versions 1 and above, which gives Taproot addresses the bc1p prefix. · Version / scope: 927b6de9915c9262615a6399de51b200f81e5aa4 · Retrieved: 2026-10-02T15:04:13.517498+00:00Open source - Bitcoin Core version 0.21.1 released2021-05-01Bitcoin Core (bitcoincore.org)
Release notes describing Speedy Trial: 90% signaling in a 2,016-block period between 24 April and 11 August 2021, activation at block 709,632, and the encouragement to upgrade unless one objects to Taproot.
Locator: Release notes describing Speedy Trial: 90% signaling in a 2,016-block period between 24 April and 11 August 2021, activation at block 709,632, and the encouragement to upgrade unless one objects to Taproot. · Retrieved: 2026-10-02T14:48:57.328339+00:00Open source - Block 709,632Blockstream Esplora
Shows the Taproot activation block mined by F2Pool on 14 November 2021 at 05:15 UTC with 2,043 transactions.
Locator: JSON fields height, timestamp, id; block height 709632 · Version / scope: 0000000000000000000687bca986194dc2c1f949318629b44bb54ec0a94d8244 · Retrieved: 2026-10-02T15:25:01.715712+00:00Open source - Bitcoin Optech Newsletter #1752021-11-17Bitcoin Optech
Confirms that the taproot soft fork activated at block height 709,632 and reports that several large mining pools were not yet mining blocks containing taproot spends.
Locator: Confirms that the taproot soft fork activated at block height 709,632 and reports that several large mining pools were not yet mining blocks containing taproot spends. · Retrieved: 2026-10-02T14:48:57.332146+00:00Open source
Research and drafting use AI assistance. A separate automated review checks claims against primary sources; no external expert or named human review is implied. Publication, substantive editing, source retrieval and verification are recorded separately. This version was independently checked by an automated reviewer on 2 October 2026.
Editorial method and correctionsDegrees of Satoshi editorial project. “Taproot explained: Schnorr signatures, hidden scripts and Bitcoin’s 2021 upgrade.” Published 2026-09-23; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/taproot-explained/