P2TR
P2TR est le sigle pour Pay to Taproot (en français « payer à la racine »). C’est un modèle de script standard utilisé pour établir des conditions de dépense sur un UTXO. Il a été introduit avec l’implémentation de Taproot en novembre 2021. P2TR utilise le protocole de Schnorr pour agréger des clés cryptographiques, ainsi que des arbres de Merkle pour des scripts alternatifs, connus sous le nom de MAST (Merkelized Alternative Script Tree). Contrairement aux transactions traditionnelles où les conditions de dépense sont exposées publiquement (parfois à la réception, parfois à la dépense), P2TR permet de masquer des scripts complexes derrière une seule clé publique apparente.
Techniquement, un script P2TR verrouille des bitcoins sur une clé publique Schnorr unique, dénommée \(K\). Cependant, cette clé \(K\) est en réalité un agrégat d’une clé publique \(P\) et d’une clé publique \(M\), cette dernière étant calculée à partir de la racine de Merkle d’une liste de scriptPubKey. Les bitcoins verrouillés avec un script P2TR peuvent être dépensés de deux manières distinctes : soit en publiant une signature pour la clé publique \(P\), soit en satisfaisant l’un des scripts contenus dans l’arbre de Merkle. La première option est appelée « key path » (chemin de clé) et la seconde « script path » (chemin de script).
Ainsi, P2TR permet aux utilisateurs d’envoyer des bitcoins soit à une clé publique, soit à plusieurs scripts de leur choix. Un autre avantage de ce script est que, bien qu’il y ait de multiples façons de dépenser une sortie P2TR, seule celle qui est utilisée doit être révélée à la dépense, permettant ainsi aux alternatives inutilisées de rester privées. P2TR est une sortie SegWit de version 1, ce qui signifie que les signatures pour les entrées P2TR sont stockées dans le témoin d’une transaction, et non dans le scriptSig. Les adresses P2TR utilisent un encodage Bech32m et commencent par bc1p.