Arkade extends the standard Partially Signed Bitcoin Transaction (PSBT) format (BIP 174) to include custom fields required for its advanced contract logic and coordination mechanisms. These fields allow Arkade to encode metadata such as taproot trees, relative timelocks, multi-signer coordination, and custom witness data; features that are not supported by standard PSBTs. Arkade’s PSBT extensions build on BIP 174’s forward-compatible design. Because standard PSBT parsers simply ignore but preserve these unknown fields, Arkade transactions remain fully interoperable while adding richer contract semantics and coordination logic.Documentation Index
Fetch the complete documentation index at: https://docs.arkadeos.com/llms.txt
Use this file to discover all available pages before exploring further.
Input Fields
Arkade leverages the unknown field mechanism by introducing its own field namespace under key type222 (0xDE), enabling protocol-specific functionality while remaining interoperable with standard tooling. Each field appears in the PSBT input map under key type 0xDE, following the PSBT unknown-field encoding rules.
| Name | Type | Key | Purpose | Value Format |
|---|---|---|---|---|
taptree | 0xDE | 0x74617074726565 (“taptree”) | A list of tapscript leaves | Sequence of tapscript leaves (depth + version + script). |
expiry | 0xDE | 0x657870697279 (“expiry”) | Specifies relative timelock (CSV) for input spending | BIP68 sequence encoding |
cosigner | 0xDE | 0x636F7369676E6572 (“cosigner”) + <uint32_key_index> | Identifies indexed Musig2 cosigner public keys | 33-byte compressed public key |
condition | 0xDE | 0x636F6E646974696F6E (“condition”) | Adds custom witness elements for script execution | raw witness bytes |
Field Details
Taptree Field
Taptree Field
Field:
Purpose: Embeds a Taproot script tree for complex input spending conditions.
Key Format:
Value Format: TapTree encoding (variable length)The TapTree is encoded as a sequence of tapscript leaves, where each leaf contains:
taptreePurpose: Embeds a Taproot script tree for complex input spending conditions.
Key Format:
0xDE + "taptree" (7 bytes)Value Format: TapTree encoding (variable length)The TapTree is encoded as a sequence of tapscript leaves, where each leaf contains:
- Depth (1 byte): Always 1 for single-level trees
- Leaf version (1 byte): Always tapscript version (
0xC0) - Script length (compact size): Length of the script in bytes
- Script bytes: The actual tapscript
Expiry Field
Expiry Field
Field:
Purpose: Defines a relative locktime (CSV) condition for the input.
Key Format:
Value Format: BIP68 sequence encoding (1–5 bytes, little-endian)Example:
expiryPurpose: Defines a relative locktime (CSV) condition for the input.
Key Format:
0xDE + "expiry" (6 bytes)Value Format: BIP68 sequence encoding (1–5 bytes, little-endian)Example:
Cosigner Field
Cosigner Field
Field:
Purpose: Specifies indexed Musig2 cosigner public keys.
Key Format:
Value Format: 33-byte compressed public keyIndex is a 4-byte big-endian integer appended to the base key. This allows multiple cosigner fields per input, each with a unique index for proper ordering.Example:
cosignerPurpose: Specifies indexed Musig2 cosigner public keys.
Key Format:
0xDE + "cosigner" + <uint32_index> (11 bytes)Value Format: 33-byte compressed public keyIndex is a 4-byte big-endian integer appended to the base key. This allows multiple cosigner fields per input, each with a unique index for proper ordering.Example:
Condition Field
Condition Field
Field:
Purpose: Provides additional witness elements for custom script execution.
Key Format:
Value Format: PSBT witness encoding (compact size + data)Each witness includes:
conditionPurpose: Provides additional witness elements for custom script execution.
Key Format:
0xDE + "condition" (9 bytes)Value Format: PSBT witness encoding (compact size + data)Each witness includes:
- Number of witness elements (compact size)
- For each element: length (compact size) + data
Reference Implementations
The reference implementations are available in thearkd codebase:
PSBT fields
Core field definitions and encoding/decoding
TapTree
TapTree encoding/decoding
Expiry
Relative Locktime handling