> For the complete documentation index, see [llms.txt](https://www.0x1.academy/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.0x1.academy/gei-kai-fa-zhe-de-zhi-nan/op-return.md).

# 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) — 了解哈希與存證原理
