OP_RETURN
OP_RETURN 是比特幣的一個操作碼,允許你在區塊鏈上永久儲存少量資料。它讓比特幣不只是支付系統,還能成為資料存證的平台。
什麼是 OP_RETURN?
比特幣交易使用一種簡單的腳本語言,其中包含各種「操作碼」(Opcode)。OP_RETURN 是其中一個特殊的操作碼,它的功能是:
標記這筆輸出為「不可花費」
允許在這筆輸出中嵌入最多 80 字節的任意資料
為什麼需要 OP_RETURN?
在 OP_RETURN 被引入之前,人們用各種「駭客」方式在比特幣上存資料:
把資料編碼成假的比特幣地址
這些「地址」的比特幣永遠無法被花費
造成 UTXO 集膨脹
OP_RETURN 提供了一個官方認可的方式來存資料:
明確標記為不可花費
不會造成 UTXO 膨脹(因為不會被加入 UTXO 集)
節點可以選擇是否儲存這些資料
OP_RETURN 的限制
資料大小
最多 80 字節(約 80 個英文字母)
每筆交易
只允許一個 OP_RETURN 輸出
金額
必須為 0(不可花費)
80 字節聽起來很少,但足以存放:
一個文件的哈希值(32 字節)
一小段文字
一個指向外部資料的指標
OP_RETURN 的應用
1. 文件存證
把文件的哈希值存上鏈,證明該文件在某個時間點存在。
流程:
計算文件的 SHA-256 哈希值
把哈希值嵌入 OP_RETURN
發送交易
之後任何人都可以:
下載原始文件
計算哈希值
與區塊鏈上的記錄比對
確認文件自該時間點後未被修改
2. 數位資產協議
許多協議使用 OP_RETURN 來定義數位資產:
Omni Layer(前身 Mastercoin)— USDT 最初就是透過 Omni 發行在比特幣上
Open Assets Protocol — 彩色幣協議
Counterparty — 比特幣上的智能合約平台
3. 身份驗證
把身份資訊的哈希存上鏈,用於去中心化身份(DID)系統。
4. 時間戳服務
證明某個資料在特定時間之前就存在。用於:
智慧財產權證明
合約存證
學術研究時間戳
與 Ordinals 和 Inscriptions 的關係
2023 年興起的 Bitcoin Ordinals 使用了不同的方法:
資料大小
最多 80 字節
可達數 MB
儲存位置
輸出腳本
見證資料(Witness)
對區塊鏈影響
較小
較大
主要用途
存證、協議標記
NFT、完整媒體檔案
OP_RETURN 適合存放小量、關鍵的資料;Ordinals 則允許存放完整的圖片、影片等媒體。
如何使用 OP_RETURN?
透過專業工具
OpenTimestamps — 免費的時間戳服務
Proof of Existence — 文件存證服務
BTCRelay — 跨鏈驗證
透過程式碼
使用 Bitcoin 函式庫(如 bitcoinjs-lib)可以創建包含 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 來為研究資料提供時間戳,證明研究的優先權。
總結
OP_RETURN 的價值
OP_RETURN 把比特幣從單純的支付系統,擴展成一個全球性、不可篡改的資料存證平台。雖然每筆交易只能存 80 字節,但這足以為任何大小的資料提供時間戳和存在證明。
延伸閱讀
UTXO — 比特幣的交易輸出模型
Bitcoin Ordinals — 在比特幣上存放完整資料
比特幣 — 比特幣基礎知識
哈希算法 — 了解哈希與存證原理
Last updated