Law4TW 的『存在證明』服務:如何將資料嵌入到區塊鏈之中

颱風過後的第一天,台北的風雨稍息,來淺談一下 Law4TW 的『存在證明』服務如何將資料嵌入到區塊鏈之中。

簡而言之,就是應用區塊鏈的 OP_RETURN 腳本代碼。

資料嵌入區塊鏈的技術,事實上已經在許許多多的應用當中實現,尤其在證明的應用以及資產交易的面向。當資料嵌入之後,依據區塊鏈的特性,這筆記錄就無法被移除或更改。經由這個程序,可以證明該筆記錄的來源,嵌入的日期與時間,以及所嵌入的資料,並且成為區塊鏈當中的一部分。類似的技術,解決許多透過區塊鏈所發展,包括側鏈與衍生應用,所面對到的種種問題。

Law4TW 的『存在證明』,就是基於相同技術,提供一種將文件或數位資產與權利的指紋碼,嵌入區塊鏈的服務。

在區塊鏈發展的早期歷史,為了將資料嵌入區塊鏈中,必須採取特別的方式。其中一種是創造一筆記錄,但是不屬於正規的比特幣位址。這種方式產生了一些問題,最主要就是造成 UTXO 的異常龐大 – 一個用來記錄未花費比特幣的資料庫。這個問題在 2014 年三月的第 0.9.0 版比特幣核心更新後獲得了解決。從那之後,所有相關的應用都可以使用 OP_RETURN 腳本進行實作,同時避免發生上述所產生的問題。

如何實作呢?區塊鏈作為去中心化帳本的存在,每筆記錄都標註著一個或多個輸入與輸出,其中使用的比特幣語言稱作為腳本。細節可以參照這邊的說明。而 OP_RETURN 腳本的作用,就是允許輸出項目包含不屬於實際交易的額外資料,標示這是一個非比特幣的輸出,不可以在未來被花費或支付,但同時它又是一筆合法記錄的存在。遵循區塊鏈網路的運作,在支付一定的交易費用之後,這筆記錄就會透過區塊鏈網路嵌入到公開的區塊鏈主鏈之中。

所有 OP_RETURN 的輸出基本被限定在 80 個位元組之內(實際應用建議保持在 40 個位元組之內),而且每一筆記錄只能包含一個 OP_RETURN 腳本。如果嵌入一般字元,允許的位元組數量大小也是一樣。看起來很小是吧?其實也是鼓勵開發者只嵌入資料的指紋碼,把資料本身保存在區塊鏈之外。好處在於,得以將資料嵌入到區塊鏈之中,卻又不至於導致永遠存在的區塊鏈資料量爆炸性地膨脹。

除了 Law4TW 的『存在證明』,基於 OP_RETURN 腳本的資產交易應用已經在多國推出。