This document specifies the standard format for representing spendable Unspent Transaction Outputs (UTXOs) and the associated information required for spending or sharing them with other parties. The goal is to provide a baseline UTXO storage format that encapsulates the minimal set of requirements, promotes compatibility and interoperability between different implementations, and reduces fragmentation within the Bitcoin ecosystem. This standard allows for extensions or deviations to be defined as part of other standards.
Motivation
The development of the BRC-36 standard is motivated by the need for a unified and standardized format for storing UTXOs, which are fundamental to Bitcoin and facilitate tokenization, as well as define the mechanism by which value is represented and conveyed within the system. With many different storage formats in use by various applications and implementations around the ecosystem, the lack of a standard format has led to compatibility issues and fragmentation. By providing a clear, standardized format for UTXO storage, we aim to enhance compatibility, facilitate sharing and spending of UTXOs among different parties, and simplify the implementation of Bitcoin-related services and applications.
Specification
The JSON representation of the UTXO storage format is specified as an object with the following fields:
Field
Description
txid
The transaction ID, represented as a hex string, of the transaction that contains the UTXO.
vout
The output index in the transaction (where 0 is the first output) where the UTXO is found.
outputScript
satoshis
The number of satoshis contained in the UTXO.
rawTx
inputs, mapiResponses, and/or proof
Implementation
In order to implement a compatible UTXO storage system, developers should adhere to the following guidelines:
Ensure that the UTXO storage object includes all the required fields, as specified.
Store the BRC-8 transaction envelope associated with the encompassing transaction alongside the UTXO, providing information about either the merkle proof on such a transaction or its associated input transactions and their SPV information.
Implement the ability to serialize and deserialize UTXOs using the JSON format specified in this standard, allowing for easy sharing and spending of UTXOs between parties.
When extending or deviating from the BRC-36 standard, make sure to define these changes as part of other standards or specifications to maintain compatibility and avoid further fragmentation.
Example
Here are some examples of UTXO storage objects in JSON format: