Ausgabedeskriptoren bieten einen Standard, um Adresskörper zwischen verschiedenen Wallet-Implementierungen besser austauschbar zu machen. Es scheint, dass ein Ausgabedeskriptor verwendet werden kann, um jeden Miniscript-Ausdruck für einen bestimmten Schlüssel zu codieren. Können sie auch verwendet werden, um Sequenzausgabeskripts zu erstellen, die alle denselben Miniscript-Ausdruck verwenden, der auf eine Kette abgeleiteter Schlüssel angewendet wird?
Ja. Solche Deskriptoren werden als Bereichsdeskriptoren bezeichnet.
In einem Deskriptor werden Schlüssel in Form eines Schlüsselausdrucks bereitgestellt. Schlüsselausdrücke können einzelne Schlüssel selbst oder erweiterte BIP-32-Schlüssel sein, gefolgt von Ableitungsinformationen. Die Ableitungsinformationen können mit einem enden, *
um anzugeben, dass untergeordnete Schlüssel abgeleitet werden sollen. In diesem Fall ist der Deskriptor ein Bereichsdeskriptor und jeder abgeleitete untergeordnete Schlüssel wird zu einem Schlüssel im Ausgabeskript.
Wenn Sie sich dann den Bereichsdeskriptor wie eine höhere Form eines xpub vorstellen, dann hätten Sie "abgeleitete Deskriptoren" bei jedem untergeordneten Index. Der untergeordnete Index 0 wäre ein Deskriptor, bei dem alles mit dem übergeordneten Element identisch wäre, mit Ausnahme der xpubs. Diese werden durch den von Index 0 abgeleiteten Schlüssel ersetzt. Index 1 enthält die von Index 1 abgeleiteten Schlüssel und so weiter.
Bei Bereichsdeskriptoren ist zu beachten, dass sich die Indizes im Gleichschritt bewegen, um ein kombinatorisches Aufblähen zu vermeiden. Wenn es also mehrere xpubs in einem Deskriptor gibt, werden alle Schlüssel vom selben untergeordneten Index abgeleitet. Index 0 hat alle Schlüssel, die mit Index 0 abgeleitet sind, Index 1 hat alle Schlüssel, die mit Index 1 abgeleitet sind, usw.
max
and_v(v:pk(A),pk(B))
Miniskript mit eingebetteten Deskriptoren:and_v(v:pk([b33.../44'/0'/0']xpubApf/1/*),pk([f34.../44'/0'/0']xpub6ER.../1/*))
Andreas Chow
sh()
,multi()
,tr()
,wsh()
, usw. Deskriptoren erstellen die Ausgabeskripte, während Miniscript die inneren Skripte beschreibt. Ein Deskriptor wäre beispielsweisewsh(and_v(v:pk(xpub..../*),pk(xpub.../*)))
. Der Deskriptor ist der äußerewsh(...)
Ausdruck und das Miniskript ist der innereand_v(v:pk(xpub..../*),pk(xpub.../*))
max