30
votes
Accepted
What is the script assembly and execution in P2TR spend (spend from Taproot)
Before we start
I realize your question is only about single-sig scenarios, and you want an answer focused on how validation works. I will address these things, but I think I need to elaborate a bit ...
15
votes
Accepted
How can I find samples for P2TR transactions on mainnet?
Taproot activated in block 709 632, but the first P2TR transactions were in block 709 635. A few P2TR transactions that may be useful for test vectors would be:
33e7…9036, the first P2TR transaction
...
13
votes
Accepted
XPRIV/XPUB type for P2TR
There is no ypub/zpub similar thing for Taproot. The recommendation is to use xpriv/xpub along with some extra information indicating that the script to create is Taproot, (e.g. with a tr() descriptor)...
13
votes
Accepted
BIP-341: Should key-path-only P2TR be eschewed altogether?
Let's first introduce some terminology, because "key path only" could mean different things. Say:
A raw taproot output is one where the output key (the one in the scriptPubKey) is exactly ...
13
votes
Accepted
Is there an economic incentive to switch from P2WPKH to P2TR?
Facts
A P2WPKH input weighs 68 vB (assuming the worst-case with a high-r signature, -0.25 vB with a low-r signature) and a P2WPKH output weighs 31 vB for a total of 99 vB.
A P2TR input weighs 57.5 vB ...
10
votes
What is the largest multisig quorum currently possible?
The rules governing this depend on the type of script used and whether that script is in the output script, in a P2SH, in a P2WSH, or in P2TR. Additionally, the rules are more restrictive for ...
9
votes
Accepted
How can I create P2TR addresses with Bitcoin Core 22.0?
This functionality in the Bitcoin Core wallet has deliberately not been merged pre activation to prevent users from easily generating and giving out Taproot addresses prior to the Taproot rules being ...
9
votes
Accepted
Should the Bitcoin Core wallet (or any wallet) prevent users from sending funds to a Taproot address pre activation?
TL;DR: Wallets SHOULD allow sending to all bech32m addresses at this point, but wallets MUST NOT request P2TR outputs before the Taproot spending rules are enforced on the network¹.
The design of ...
9
votes
Is a P2TR address a compressed public key?
SEC encoded public keys are either:
Uncompressed 65-byte encoding: 0x04 + [32-byte X coordinate] + [32-byte Y coordinate]
Compressed 33-byte encoding:
0x02 + [32-byte X coordinate] (if Y coordinate ...
8
votes
XPRIV/XPUB type for P2TR
The concept of an xpub originates from BIP32, where it denotes an extended public key, from which multiple child keys can be derived.
At the time of BIP32, there was really only one address type ...
8
votes
Accepted
How do the fees for taproot transactions compare to P2WPKH?
Taproot inputs are smaller but outputs are larger. Specifically, P2WPKH (Native SegWit) inputs and outputs take 68 and 31 vbytes in a transaction, respectively, while P2TR (Taproot) inputs and outputs ...
7
votes
Accepted
Is there a way to convert a P2PKH address into P2TR?
Short answer: no, at least not via the key path (and using a script path would be less efficient than using P2WPKH instead)
Longer answer: no, and even if it were possible, this would be a terrible ...
7
votes
Accepted
Will P2TR make P2WSH obsolete?
As far as I can tell, P2TR is better than P2WSH in almost every case. The leading assumption in the design of P2TR is of course, that you will prefer to use the keypath whenever possible, and that ...
7
votes
Accepted
Is a P2TR address a compressed public key?
Pay to Taproot uses x-only pubkeys.
In Bitcoin, a private key d is a scalar, and its corresponding public key Q is the elliptic curve point found by multiplying d with the generator G of secp256k1: Q =...
7
votes
Accepted
How to extract the internal key of a simple P2TR address?
A P2TR address encodes a public key using Bech32m, which you can directly decode. This public key is often (as recommended by BIP341) the result of taking a different key (called "internal key&...
6
votes
Accepted
Is there an economic incentive to use P2WSH over P2TR?
Yes, having only a single leaf and all else being equal, a P2TR input costs 34 witness bytes (8.5 vbytes) more than a P2WSH input with the same script.
However, almost all current usage of P2WSH (...
5
votes
Accepted
Is taproot considered nonstandard to older clients?
P2TR outputs (and higher-version native witness outputs) are standard since Bitcoin Core v0.19: https://github.com/bitcoin/bitcoin/pull/15846
Inputs spending P2TR outputs are non-standard in all ...
5
votes
Accepted
P2TR: Is pub key hashed in address?
Public keys are not hashed in Taproot (SegWit v1). The Taproot (Merkle) tree in the script path uses hashes but the Merkle root of this tree tweaks the unhashed public key (internal key) and the ...
5
votes
Is tweak used when spending from script path for Taproot?
You perform tweaking at signing time if the key you're signing for was tweaked. That's a decision that was made when the output was constructed, not when it is spent.
Taproot outputs can consist of:
...
5
votes
Accepted
How can I tell if a Taproot input is a key path spend or a script path spend?
Taproot is specified in BIP341 which also includes much relevant information such as motivation and rationale. My answer will essentially just rephrase some of its highlights.
Key path spends and ...
5
votes
Accepted
"Witness program hash mismatch" code -26 when broadcasting a transaction
"Witness program hash mismatch" in a Taproot script path spend means the Taproot commitment wasn't successfully verified, in other words the internal key tweaked with the taptweak hash (...
4
votes
tracking invoice address type migration
You can find the first on https://txstats.com/dashboard/db/utxo-set-repartition-by-output-type?orgId=1. For a version weighed by value you can look at the graphs of the individual output types on the ...
4
votes
How can I spend from a P2TR address on Signet with the Bitcoin Core wallet in 22.0?
This is a draft answer (incomplete).
To get set up on Signet ie sync the Signet chain and claim some Signet Bitcoin, follow these instructions. (You can run a Signet node in parallel with your mainnet ...
4
votes
Accepted
non-mandatory-script-verify-flag (Invalid Schnorr signature) when I try to send a P2TR tx on testnet
I finally managed to successfully send a correct P2TR tx to the network in testnet!
I answer my own question so that maybe it could be helpful for other people struggling with the same problem.
There ...
4
votes
How to identify P2TR output type?
I don't see why that scriptPubKey would be incorrectly marked as P2TR as it absolutely does not follow the expected pattern. BIP 341 is very unambiguous as to the script construction - it must be OP_1 ...
4
votes
Accepted
How is tapscript different than P2PKH using opcodes from a developer perspective?
It sounds like this means that I could do an ordinal in a non-taproot address bitcoin transaction. So I could mint an ordinal with a P2PKH address.
Historically output types with address standards ...
4
votes
Accepted
P2TR script-path multisig
Yes, the conversion from descriptor to script converts the keys to x-only form, because that is the only public key format supported inside tapscript. There is no parity information to recover; these ...
3
votes
Accepted
Issue when broadcasting Taproot transaction to older nodes
How am I supposed to broadcast a Taproot transaction to older nodes when they won't accept it?
You can't. You need to broadcast it to new nodes for it to propagate.
3
votes
Accepted
What is the weight of a P2TR input?
TL;DR:
A P2TR keypath input will weigh 57.5 vbytes. A P2TR scriptpath input will weigh a variable amount greater than that.
Composition of a P2TR input
Each input commits to spending a specific UTXO ...
3
votes
Should the Bitcoin Core wallet (or any wallet) prevent users from sending funds to a Taproot address pre activation?
For a sender to send to a P2TR address pre activation they must have received that P2TR address from the receiver and so it would be an indirect safeguard to protect the receiver having given out P2TR ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
p2tr × 97taproot × 67
script × 14
schnorr-signatures × 10
segregated-witness × 9
multi-signature × 9
public-key × 7
python × 7
output-script-descriptors × 7
bip350-bech32m × 7
wallet × 6
p2wpkh × 6
p2pkh × 5
bip174-psbt × 5
transaction-weight × 5
key-tweaking × 5
ordinals × 5
signature × 4
p2sh × 4
p2wsh × 4
musig × 4
sighash × 4
x-only-pubkeys × 4
bitcoin-core × 3
address-generation × 3