Taproot & Schnorr (BIP340–342)

Key-Pfad, Script-Pfad, MAST und Tapscript.

Taproot aktivierte sich bei Block 709.632 am 14. November 2021. Es sind drei BIPs, die zusammenarbeiten.

BIP340: Schnorr-Signaturen

Ein neues Schnorr-Signatur-Schema auf derselben Kurve secp256k1. Signaturen sind 64 Bytes, öffentliche Schlüssel sind 32-Byte-x-only-Schlüssel. Weil Schnorr linear ist, können mehrere Signer ihre Schlüssel mit Protokollen wie MuSig2 (BIP327) zu einem kombinieren und eine einzige Signatur erzeugen.

BIP341: Taproot-Outputs

Ein Taproot-Output (SegWit v1, bc1p…) committed sich auf einen 32-Byte-Schlüssel Q. Q wird aus einem internen Schlüssel P und einem optionalen Script-Baum gebaut:

Q = P + t·G, wobei t = hashTapTweak(P || merkle_root)

Es gibt zwei Wege auszugeben:

  • Key-Pfad: mit dem getweakten Schlüssel signieren. On-chain ist das nur eine Signatur. Niemand kann wissen, ob ein Script-Baum existierte.
  • Script-Pfad: ein Script (ein Blatt), seine Inputs und einen Control Block offenlegen, der P und den Merkle-Zweig hält, der beweist, dass dieses Blatt im Baum ist. Die anderen Blätter bleiben verborgen.

Dieser Baum von Alternativen heißt oft MAST. Ein typisches Design: der Key-Pfad ist „alle sind einig“, und die Blätter sind Backups wie „2-von-3 nach 6 Monaten“.

BIP342: Tapscript

Die Script-Sprache in den Blättern wurde aktualisiert. OP_CHECKMULTISIG wurde durch OP_CHECKSIGADD ersetzt, das batch-verifizierbar ist. Die 10.000-Byte-Script-Grenze und die 201-Opcode-Grenze entfielen und wurden durch ein Signatur-Budget ersetzt, das an die Witness-Größe gebunden ist. Unbenutzte Opcodes wurden zu OP_SUCCESSx, was künftige Soft Forks vereinfacht.

Besseres Signatur-Hashing

Der Sighash von BIP341 committed sich auf Beträge und Scripts aller ausgegebenen Inputs, sodass Hardware-Wallets Gebühren prüfen können, ohne frühere Transaktionen zu sehen.

Aktivierung

Taproot nutzte „Speedy Trial“, ein kurzes BIP9-ähnliches Signalisierungsfenster mit 90%-Schwelle. Die 90%-Schwelle wurde bei Block 687.284 am 12. Juni 2021 erreicht, ab der nächsten Periode (Block 687.456) gelockt und ab Block 709.632 durchgesetzt.

Vorteile

Günstigere und privatere Multisig und Verträge, weil der Normalfall wie eine gewöhnliche Einzelschlüssel-Zahlung aussieht.