# OP\_RETURN

### OP\_RETURN 是比特幣的一個操作碼，允許你在區塊鏈上永久儲存少量資料。它讓比特幣不只是支付系統，還能成為資料存證的平台。

***

## 什麼是 OP\_RETURN？

比特幣交易使用一種簡單的腳本語言，其中包含各種「操作碼」（Opcode）。OP\_RETURN 是其中一個特殊的操作碼，它的功能是：

1. 標記這筆輸出為「不可花費」
2. 允許在這筆輸出中嵌入最多 80 字節的任意資料

{% hint style="info" %}
**簡單理解**

OP\_RETURN 就像是在比特幣區塊鏈上「刻字」。一旦刻上去，這些資料就永遠存在，無法刪除，全世界都可以看到。
{% endhint %}

***

## 為什麼需要 OP\_RETURN？

在 OP\_RETURN 被引入之前，人們用各種「駭客」方式在比特幣上存資料：

* 把資料編碼成假的比特幣地址
* 這些「地址」的比特幣永遠無法被花費
* 造成 [UTXO](/gei-kai-fa-zhe-de-zhi-nan/utxo.md) 集膨脹

OP\_RETURN 提供了一個**官方認可**的方式來存資料：

* 明確標記為不可花費
* 不會造成 UTXO 膨脹（因為不會被加入 UTXO 集）
* 節點可以選擇是否儲存這些資料

***

## OP\_RETURN 的限制

| 項目   | 限制                   |
| ---- | -------------------- |
| 資料大小 | 最多 80 字節（約 80 個英文字母） |
| 每筆交易 | 只允許一個 OP\_RETURN 輸出  |
| 金額   | 必須為 0（不可花費）          |

80 字節聽起來很少，但足以存放：

* 一個文件的哈希值（32 字節）
* 一小段文字
* 一個指向外部資料的指標

***

## OP\_RETURN 的應用

### 1. 文件存證

把文件的哈希值存上鏈，證明該文件在某個時間點存在。

**流程：**

1. 計算文件的 SHA-256 哈希值
2. 把哈希值嵌入 OP\_RETURN
3. 發送交易

之後任何人都可以：

* 下載原始文件
* 計算哈希值
* 與區塊鏈上的記錄比對
* 確認文件自該時間點後未被修改

### 2. 數位資產協議

許多協議使用 OP\_RETURN 來定義數位資產：

* **Omni Layer**（前身 Mastercoin）— USDT 最初就是透過 Omni 發行在比特幣上
* **Open Assets Protocol** — 彩色幣協議
* **Counterparty** — 比特幣上的智能合約平台

### 3. 身份驗證

把身份資訊的哈希存上鏈，用於去中心化身份（DID）系統。

### 4. 時間戳服務

證明某個資料在特定時間之前就存在。用於：

* 智慧財產權證明
* 合約存證
* 學術研究時間戳

***

## 與 Ordinals 和 Inscriptions 的關係

2023 年興起的 [Bitcoin Ordinals](/bi-te-bi/ordinals.md) 使用了不同的方法：

| 比較     | OP\_RETURN | Ordinals Inscriptions |
| ------ | ---------- | --------------------- |
| 資料大小   | 最多 80 字節   | 可達數 MB                |
| 儲存位置   | 輸出腳本       | 見證資料（Witness）         |
| 對區塊鏈影響 | 較小         | 較大                    |
| 主要用途   | 存證、協議標記    | NFT、完整媒體檔案            |

OP\_RETURN 適合存放小量、關鍵的資料；Ordinals 則允許存放完整的圖片、影片等媒體。

***

## 如何使用 OP\_RETURN？

### 透過專業工具

* **OpenTimestamps** — 免費的時間戳服務
* **Proof of Existence** — 文件存證服務
* **BTCRelay** — 跨鏈驗證

### 透過程式碼

使用 Bitcoin 函式庫（如 bitcoinjs-lib）可以創建包含 OP\_RETURN 的交易。

基本結構：

```
OP_RETURN <你的資料>
```

***

## OP\_RETURN 的爭議

早期，部分比特幣社群成員認為 OP\_RETURN 是對區塊鏈的「濫用」：

**反對意見：**

* 比特幣應該只用於支付
* 儲存任意資料會讓區塊鏈變大
* 可能被用於儲存非法內容

**支持意見：**

* 提供官方管道比私下濫用更好
* 80 字節的限制足夠控制影響
* 資料存證是有價值的應用

最終社群接受了 OP\_RETURN，但將資料限制在 80 字節。

***

## 實際案例

### 比特幣創世區塊的訊息

中本聰在比特幣創世區塊中留下了著名的訊息：

> "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks"

這證明了比特幣在 2009 年 1 月 3 日之後才被創建。

### 婚禮誓言

有人把婚禮誓言的哈希值存上比特幣區塊鏈，作為永恆的紀念。

### 學術論文

研究者使用 OP\_RETURN 來為研究資料提供時間戳，證明研究的優先權。

***

## 總結

{% hint style="success" %}
**OP\_RETURN 的價值**

OP\_RETURN 把比特幣從單純的支付系統，擴展成一個全球性、不可篡改的資料存證平台。雖然每筆交易只能存 80 字節，但這足以為任何大小的資料提供時間戳和存在證明。
{% endhint %}

***

## 延伸閱讀

* [UTXO](/gei-kai-fa-zhe-de-zhi-nan/utxo.md) — 比特幣的交易輸出模型
* [Bitcoin Ordinals](/bi-te-bi/ordinals.md) — 在比特幣上存放完整資料
* [比特幣](/bi-te-bi/bi-te.md) — 比特幣基礎知識
* [哈希算法](/gei-kai-fa-zhe-de-zhi-nan/cryptography/hash.md) — 了解哈希與存證原理


---

# 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://www.0x1.academy/gei-kai-fa-zhe-de-zhi-nan/op-return.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.
