# Pay to True Return

Ty Everett (<ty@projectbabbage.com>)

## Abstract

In one view of Bitcoin, only spendable output scripts with satoshis attached constitute valid Bitcoin tokens, because Bitcoin tokens are UTXOs. Since traditional [BRC-18](/scripts/0018.md) scripts are not compatible with this view, we propose a methodology for creating OP\_RETURN scripts that are spendable and contain satoshis. This provides a way for software to automatically convert non-compliant OP\_RETURNs into proper Bitcoin tokens while encouraging developers to consider the spendability constraints that govern their tokens.

## Motivation

Bitcoin is a token system, and as such, every output should be spendable and have value in satoshis. This fundamental principle ensures that Bitcoin remains a secure and reliable system that can be trusted by users around the world. However, traditional [BRC-18](/scripts/0018.md) scripts, employing the OP\_FALSE OP\_RETURN pattern, are not compatible with this view.

OP\_FALSE OP\_RETURN outputs are non-spendable and carry no value, which means they cannot be considered tokens under this definition. This creates a problem for developers who want to store data on the blockchain using OP\_RETURN, as it goes against the basic principles of the Bitcoin token system.

To address this issue, we propose a new methodology for creating OP\_RETURN scripts that are spendable and contain satoshis. This provides a way for software to automatically convert non-compliant OP\_RETURNs into proper Bitcoin tokens while encouraging developers to consider the spendability constraints that govern their tokens.

By adding the cost of one single satoshi and the fully-open spendability constraints to OP\_RETURN outputs, developers will be encouraged to consider the actual constraints that govern their tokens. This will drive them towards script patterns that protect what their tokens represent and promote a more robust and secure token system for Bitcoin.

This standard offers a solution that maintains the fundamental principles of the Bitcoin token system while providing a practical way for developers to store data on the blockchain using OP\_RETURN. By adopting this methodology, we can ensure that Bitcoin remains a secure and reliable system that can be trusted by users worldwide.

## Specification

We specify the same script template as [BRC-18](/scripts/0018.md), except that instead of OP\_FALSE being the first opcode, it is replaced with OP\_TRUE. We also stipulate that at least one satoshi must be locked in the output.

For example:

```s
.lock
  TRUE RETURN
  <data1>
  <data2>
  <data3>
```

## Risks and Limitations

Because [BRC-18](/scripts/0018.md) implementers did not define the constraints under which their Bitcoin tokens would be unlocked, we have defined a fully-open system in which anyone can redeem these tokens. If implementers see this as a problem, they should consider being cognisant of the mechanisms that define the spendability constraints of their Bitcoin outputs.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bsv.brc.dev/scripts/0019.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
