天天看點

《區塊鍊開發指南》一一第2章 區塊鍊進階 2.1 外帶資料

本節書摘來自華章計算機《區塊鍊開發指南》一書中的第2章,第2.1節,作者:申屠青春 主編 宋 波 張 鵬 汪曉明 季宙棟 左川民 編著更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

區塊鍊的外帶資料是指那些儲存在區塊鍊上但不進行貨币交易的資訊,比如需要永久儲存的資訊,前面提到過存在于區塊鍊上的每一筆交易都有一個輸入和輸出,區塊鍊的外帶資料也是采用類似的方式來存儲的。

如果有在比特币上永久存儲資料的需求,那麼你目前有兩種選擇,即:“op_return”和“multi-signatures”。op_return是指在每個交易的公鑰腳本中嵌入op_return操作碼,之後放置外帶資料;multi-signatures則是指在建立多簽位址時,使用空白簽名區域來放置資料。此類外帶資料的方法旨在讓程式設計者更簡單地将資料編碼到交易中,同時又不會影響到比特币區塊鍊的功能,目前非常流行,在omni、open assets、blockstack和factom等的區塊鍊上都有應用。

2.1.1 op_return外帶資料

2013年,比特币協定中引進了一項新功能,即:建立一種名為op_return的交易,可以嵌入40位元組小段資料(目前已經是80位元組長)。最初,這個功能旨在把情境資訊加入比特币交易裡,比如配送資訊等。後來,發展出了更具創造性的用法,即創造最小量的交易(0.00000001 btc加上交易費),并且可嵌入任何你想放進去的資訊。

比如交易号:

495926f46e3aae80088919f363b3b6ff52116e28637b63eb2a681b1fb990d2e4

所對應的交易輸出為op_return類型,那麼它的輸出腳本則為:

op_return 4343020549a5710049a57190

利用這個功能的第一個有趣的應用就是存在性證明(proof of existence),它可以為任何檔案建立一個hash,并且可以放入區塊鍊中,這點不同于其他所有檔案的身份認證id。之後,通過比較區塊鍊裡的hash和你手頭檔案的hash,就可以用那個交易的時間戳和存儲在其中的hash,來證明那個時點上某個檔案是确實存在的。隻要二者比對,就有了證明。

值得注意的是,隻能在該交易中輸出很小金額的比特币,如0.00005,因為輸出到op_return中的比特币是無法被再次使用的。

2.1.2 multi-signatures外帶資料

多簽名位址是另外一種外帶資料的方法。例如,對于1-of-2型的多簽名位址,我們在建立該位址時,提供的第一個公鑰是發送者的,因而輸出金額可以贖回;而第二個公鑰是空白的,因而該空間可以用來存儲外帶資料。對資料的要求則是:字首是資料的長度,後面是用0來充值的無資料區域。

該交易的輸出腳本為:

1 <0> 2 op_checkmultisign

這裡的<0>區域可用于存儲外帶資料,該輸出金額一樣可以被花費。如果要存儲更多資料,則可采用1-of-3或1-of-5型的多簽位址。