You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -194,6 +200,12 @@ The currently defined per-input types are defined as follows:
194
200
** Value: The UTF-8 encoded commitment message string for the proof-of-reserves. See [[bip-0127.mediawiki|BIP 127]] for more information.
195
201
*** <tt>{porCommitment}</tt>
196
202
203
+
* Type: Version Number <tt>PSBT_INPUT_PROPRIETARY = 0xFC</tt>
204
+
** Key: Variable length identifier prefix, followed by a subtype, followed by the key data itself.
205
+
*** <tt>{0xFC}|<prefix>|{subtype}|{key data}</tt>
206
+
** Value: Any value data as defined by the proprietary type user.
207
+
*** <tt><data></tt>
208
+
197
209
The currently defined per-output <ref>'''Why do we need per-output data?''' Per-output data allows signers
198
210
to verify that the outputs are going to the intended recipient. The output data can also be use by signers to
199
211
determine which outputs are change outputs and verify that the change is returning to the correct place.</ref> types are defined as follows:
@@ -216,6 +228,12 @@ determine which outputs are change outputs and verify that the change is returni
216
228
** Value: The master key fingerprint concatenated with the derivation path of the public key. The derivation path is represented as 32 bit unsigned integer indexes concatenated with each other. This must omit the index of the master key. Public keys are those needed to spend this output.
* Type: Version Number <tt>PSBT_OUTPUT_PROPRIETARY = 0xFC</tt>
232
+
** Key: Variable length identifier prefix, followed by a subtype, followed by the key data itself.
233
+
*** <tt>{0xFC}|<prefix>|{subtype}|{key data}</tt>
234
+
** Value: Any value data as defined by the proprietary type user.
235
+
*** <tt><data></tt>
236
+
219
237
The transaction format is specified as follows:
220
238
221
239
@@ -291,6 +309,23 @@ whichever value it wishes.<ref>'''Why can the values be arbitrarily chosen?''' W
291
309
valid or invalid. If the values are invalid, a signer would simply produce an invalid signature and the final transaction itself would be invalid. If the
292
310
values are valid, then it does not matter which is chosen as either way the transaction is still valid.</ref>
293
311
312
+
===Proprietary Use Type===
313
+
314
+
For all global, per-input, and per-output maps, the types <tt>0xFC</tt> is reserved for proprietary use.
315
+
The proprietary use type requires keys that follow the type with a variable length string identifer, then a subtype.
316
+
317
+
The identifier can be any variable length string that software can use to identify whether the particular data in the proprietary type can be used by it.
318
+
It can also be the empty string and just be a single <tt>0x00</tt> byte although this is not recommended.
319
+
320
+
The subtype is defined by the proprietary type user and can mean whatever they want it to mean.
321
+
The subtype must also be a compact size unsigned integer in the same form as the normal types.
322
+
The key data and value data are defined by the proprietary type user.
323
+
324
+
The proprietary use types is for private use by individuals and organizations who wish to use PSBT in their processes.
325
+
It is useful when there are additional data that they need attached to a PSBT but such data are not useful or available for the general public.
326
+
The proprietary use type is not to be used by any public specification and there is no expectation that any publicly available software be able to understand any specific meanings of it and the subtypes.
327
+
This type must be used for internal processes only.
328
+
294
329
==Responsibilities==
295
330
296
331
Using the transaction format involves many different responsibilities. Multiple responsibilities can be handled by a single entity, but each responsibility is specialized in what it should be capable of doing.
0 commit comments