© 2023 Blockchain Commons
Authors: Wolf McNally, Christopher Allen
Date: Aug 30, 2022
Revised: Aug 30, 2023
This document has been superseded by Bitcoin Output Descriptors (Version 3).
The content below is now deprecated and of historical interest only. It is not deployed anywhere of which we are aware.
This document defines a format for enclosing typed Bitcoin output descriptors in Gordian Envelopes.
The primary definition for Bitcoin output descriptors is text-based and defined in BIP-174.
This document defines a method for enclosing Bitcoin output descriptors in Gordian Envelopes, leveraging the existing text-based format and adding an assertion to declare the data type.
The two Known Values this protocol uses are defined in the Known Values Registry:
OutputDescriptor
(class)outputDescriptor
(property)hasName
(property)note
(property)
Note the difference in case of the two known values: OutputDescriptor
is a type (class), and outputDescriptor
, is a predicate (property).
The subject of a Bitcoin Output Descriptor Envelope is a text string containing a Bitcoin output descriptor.
- It MUST include an
isA: OutputDescriptor
assertion to declare its type conforming to this document. - It MAY include a
hasName
assertion, where the object MUST be a non-empty string. - It MAY include a
note
assertion, where the object MUST be a non-empty string.
Example:
"wpkh([37b5eed4/84'/0'/0']xpub6BkU445MSEBXbPjD3g2c2ch6mn8yy1SXXQUM7EwjgYiq6Wt1NDwDZ45npqWcV8uQC5oi2gHuVukoCoZZyT4HKq8EpotPMqGqxdZRuapCQ23/<0;1>/*)" [
isA: OutputDescriptor
hasName: "Example"
note: "This is the note."
]
A Bitcoin Output Descriptor Envelope MAY be used as the object of an assertion with the outputDescriptor
predicate.
Example:
"Example" [
outputDescriptor: "wpkh([37b5eed4/84'/0'/0']xpub6BkU445MSEBXbPjD3g2c2ch6mn8yy1SXXQUM7EwjgYiq6Wt1NDwDZ45npqWcV8uQC5oi2gHuVukoCoZZyT4HKq8EpotPMqGqxdZRuapCQ23/<0;1>/*)" [
isA: OutputDescriptor
hasName: "Example"
note: "This is the note."
]
]