Rohes Script ist mächtig, aber leicht falsch zu machen. Ein kleiner Fehler kann Münzen unausgebbar machen oder für die falsche Person ausgebbar. Zwei Werkzeuge machen fortgeschrittene Wallets sicherer.
Output-Deskriptoren
Ein Deskriptor ist ein String, der genau beschreibt, welche Scripts eine Wallet besitzt:
wpkh(xpub…/0/*): natives SegWit Single-Key.wsh(multi(2,xpubA…,xpubB…,xpubC…)): 2-von-3-P2WSH-Multisig.tr(KEY,{pk(A),pk(B)}): Taproot mit einem Key-Pfad und zwei Script-Leaves.
Schlüsselherkünfte wie [fingerprint/84h/0h/0h] sagen Signern, welchen Schlüssel zu nutzen, und eine Prüfsumme nach # fängt Tippfehler. Deskriptoren sind in BIPs 380–386 standardisiert. Bitcoin Core-Wallets sind seit Version 23 standardmäßig deskriptorbasiert.
Miniscript
Miniscript, entworfen von Pieter Wuille, Andrew Poelstra und Sanket Kanjalkar und spezifiziert in BIP379, ist eine strukturierte Teilmenge von Script. Du schreibst eine Policy:
or(pk(A), and(pk(B), older(12960)))
„A kann jederzeit ausgeben, oder B kann nach 12.960 Blöcken ausgeben (etwa 90 Tage).“ Ein Compiler macht daraus Miniscript, das direkt auf Script abbildet. Das Ergebnis sieht etwa so aus:
or_d(pk(A),and_v(v:pk(B),older(12960)))
Warum es hilft
- Analysierbar: Software kann jeden Ausgabeweg berechnen, die maximale Witness-Größe (damit Gebühren geschätzt werden können) und welche Schlüssel nötig sind.
- Zusammensetzbar: Bausteine wie
pk(),multi(),thresh(),older(),after()undsha256()passen typsicher zusammen. - Signer-freundlich: Jede konforme Wallet kann für jedes Miniscript ohne Spezialcode signieren, zusammen mit PSBTs.
Praxis
Miniscript ermöglicht Erbschafts- und abklingende Multisig-Wallets, etwa „2-von-3 jetzt, 1-von-3 nach einem Jahr“, die früher Spezialscripts brauchten. Bitcoin Core unterstützt Miniscript in Deskriptoren für P2WSH und Tapscript.
Grenzen
Miniscript deckt den meisten nützlichen Script ab, aber nicht jedes mögliche Script. Es kann auch keine schlechte Policy verhindern, etwa den Recovery-Schlüssel der falschen Person zu geben.