1. 程式人生 > >【區塊鏈開發指南】區塊鏈進階

【區塊鏈開發指南】區塊鏈進階

儲存額外資料

在區塊鏈上儲存額外資料是指那些存在區塊鏈上但是對交易沒有任何影響的資料,目前儲存額外資料主要有兩種方法:OP_RETURNMulti-Signatures

OP_RETURN

2013年,比特幣協議中引進了一項新的功能,即:建立一種名為OP_RETURN的交易,可以嵌入40位元組小段資料(目前已經是80位元組)。最初這個功能旨在把情景資訊(例如配送資訊)加入比特幣交易中,後來就發展出了今天的這種用法:建立最小量(0.000000001BTC+交易費)的交易,然後把資訊嵌入進去。利用這個功能的一個有趣的應用就是存在性證明(Proof of Existence),它可以為任何檔案建立一個hash,然後存放到區塊鏈上,最終通過比較時間戳和hash就能證明該檔案在某時刻確實是存在的。但是這種方法也有一個缺點就是通過該交易傳送的比特幣無法被再次使用,也就是永久消失了。

Multi-Signatures

多簽名地址是另外一種存放資料的方法,對n-of-m型的多簽名地址,因為只需要提供n個有效簽名就可以花費該交易,但剩下的m-n個簽名的內容還是分配了儲存空間,如果沒有填寫的話那就回用0填充,我們就能將0換成我們想填充的資料,這種方法的好處是該交易依然可以繼續被花費。

側鏈(Sidechains)

側鏈不是指特定的某個區塊鏈,而是指那些遵守側鏈協議的所有區塊鏈,這個詞是針對比特幣主鏈來說的。側鏈協議是指可以讓比特幣安全的從比特幣主鏈轉移到其他區塊鏈,同時又可以讓其他區塊鏈上的貨幣安全返回到比特幣主鏈的一種協議。

目前側鏈主要是通過楔入式側鏈技術(pegged sidechain)來實現的,主要由Blockstream公司負責開發,詳細內容可以參考論文

《Enabling Blockchain Innovations with Pegged Sidechains》,側鏈一般具有如下屬性:

  • 在側鏈間移動的資產應該能夠被當前所有者移回,但除此之外任何人都不行(包括之前持有者)。
  • 資產的移動應當是無交易對手風險的;也就是說,不誠實的一方無法阻止轉移的發生。
  • 資產的轉移應當是原子操作的,即要麼全部完成,要麼完全不發生。不存在會導致其他任何鏈出現資產的鑄造或偷盜。
  • 側鏈應當完全獨立,其他鏈上所需要的資料應當完全由使用者提供。側鏈的驗證者應當只有在側鏈本身顯式共識規則有要求時,才去跟蹤其他鏈。
  • 不應要求使用者去跟蹤他們未主動使用的側鏈。

側鏈實現的過程中一般包括如下四個階段:

  • 傳送鎖定交易,把比特幣鎖定在比特幣主鏈上。
  • 等待確認期,確認期的作用是等待更多區塊確認鎖定交易,防止假冒鎖定和拒絕服務攻擊,鎖定時間為1~2天。
  • 在側鏈上贖回比特幣。上述確認期結束以後使用者在側鏈上建立一個交易花掉鎖定交易的輸出,並且提供一個SPV工作量證明,輸出到自己側鏈上的地址,這個交易也稱為贖回交易。
  • 等待一個競爭期,競爭期的作用是防止雙重支付,在此期間新轉移過來的幣不能在側鏈上花費。

競爭期結束之後,這個贖回交易被打包進區塊中,使用者就可以使用自己新幣了。從側鏈上轉移比特幣的過程也是如此。

合約幣(Counterparty)

合約幣從本質上來說是建立在比特幣之上的傳輸層協議,把比特幣區塊鏈當成可信的時間戳服務和可信的訊息釋出證明,主要目的是用來建立和使用去中心化的財務工具協議。協議內部的貨幣是合約幣XCP,合約幣並不是通過挖礦產生的,而是通過燃燒證明Proof of Burning通過燃燒比特幣來產生的,這個燃燒的過程是在2014年1月份已經完成的,總量燃燒了2130個比特幣(https://blockchain.info/address/1CounterpartyXXXXXXXXXXXXXXXUWLpVr),產生了260萬個XCP,每個XCP交易都包含如下資訊:

  • 源地址
  • 目的地址
  • 一定數量的比特幣+交易費
  • 最多40位元組的外帶資料,這些資料通過本章最開始的兩種方法嵌入到比特幣交易中。

為了方便區分,每個合約幣交易的資料區域都以UTF-8格式的CNTRPRTY打頭,用以區分合約幣交易和比特幣交易。合約幣交易中的源地址和目的地址其實就是比特幣地址,任何比特幣地址都可以收到任何合約幣資產。合約幣目前已經實現瞭如下功能:

  • 傳送資產:XCP或者自定義資產。
  • 自定義資產:發行使用者自定義貨幣或者資產,用以支付股息等等。
  • 分散式交易:使用XCP,BTC或者其他資產之間彼此交易。
  • 賭博和金融衍生品:打賭或者構造智慧合約。
  • 圖靈完備的智慧合約平臺:具有以太坊的所有特性,並且彼此相容。