狀態通道概述、例子和相關專案

買賣虛擬貨幣
本文是區塊鏈擴充套件性討論的第三篇,前兩篇連結如下:
  1. 以太坊上的擴容方案:概述
  2. 分片概述、zilliqa和quarkchain

確定性的錨定

在討論狀態通道前,我們需意識到:公鏈的威力在於其加密經濟學(cryptoeconomic)上的共識模型,即透過密碼學,我們可以巧妙平衡參與方的利益並建立一個計算機網路使得參與節點對整個網路的狀態達成共識。

這種基於密碼學的共識機制提供了一種強大的確定性,即除非極端情況(如51%攻擊)發生,否則鏈上的所有操作(例如智慧合約)都將是可信的。

鏈外擴充套件(第二層解決方案)的根本假設在於,我們可以利用鏈上提供的確定性作為錨點,並於其上附加其他經濟學模型以擴充套件公鏈已有的能力。


概述

區塊鏈最根本的限制在於區塊鏈是昂貴的:交易需要手續費、智慧合約的執行消耗依賴於計算複雜度。為了處理這個問題,狀態通道想把鏈外處理和區塊鏈本質上可信這兩者結合起來。參與者之間的雙向通訊通道使得通常在鏈上進行的操作能在鏈外進行。這將極大地減少交易時間,因為參與方不再依賴於第三方來驗證此交易,並且可以選擇在某個時間把最後狀態(代表交易的集合)廣播到區塊鏈上。發生於狀態通道內的事件具有非常高的安全性和確定性,出錯了我們依然可以透過上文提到的錨定來確定狀態。狀態通道是比支付通道(payment channel,例如比特幣上的閃電網路)更為通用的形式,不只用於付款,也能用於區塊鏈上任何的狀態更新。


交易步驟

狀態通道的交易步驟如下:

  1. 基於參與方共識,透過多重簽名或智慧合約鎖定一部分割槽塊鏈狀態。
  2. 參與方透過簽名交易彼此互動,無需向礦工提交資訊。
  3. 最終,整個交易集合被提交到區塊鏈上。

關閉通道

狀態通道的關閉由參與方定義,如下是常見的情況:

  • 時間。例如參與方約定在開啟通道後兩個小時關閉。
  • 交易內容。例如約定在價值為100美元的交易進行後關閉。

舉例

考慮alice和bob之間進行的撲克牌遊戲,勝利方將獲得一個eth。一個自然的想法是在以太坊上建立智慧合約以實現此撲克牌遊戲,參與者執行操作時將往智慧合約傳送交易;一方勝利後智慧合約將提供最終獎勵。這種方式是可行的,但是效率低下並且昂貴,因為alice和bob本質上是讓整個以太坊網路處理他們的遊戲,每次參與者想執行操作時都必須付出gas,並且還需等待礦工確認。

所以我們需要設計一個系統,使得遊戲的進行儘可能少的發生在以太坊上。這需要alice和bob能在鏈外更新遊戲的狀態,並且最終可以把結果提交到以太坊上,這就是狀態通道的典型應用。

首先,我們需在以太坊上建立一個名為poker的智慧合約,它能理解遊戲規則並且明確alice和bob是遊戲的參與方,它同時也擁有價值為一個eth的獎勵。

接著,alice和bob進行遊戲。alice將建立並簽名交易、將其傳送給bob,bob將簽名、傳送回簽名後的版本並儲存一份複製。接下來bob建立並簽名他的第一個操作,傳送給alice,後者將簽名、傳送回簽名後的版本並保留一份複製。如此反覆進行遊戲狀態的更新。每次交易都包含一個nonce,可以用於區分動作的先後順序。

截至這裡,這一切尚未發生在鏈上。alice和bob只是在兩者之間傳送交易,但這一切交易都能被髮送到poker智慧合約,因為它們是合法的以太坊交易。這類似於兩人互寫支票,實際上跟銀行之間沒有金錢交易,但雙方都有一疊支票可以到銀行進行結算。

當alice和bob結束遊戲時(例如alice已經贏了),他們可以透過提交一個最終狀態到poker智慧合約來關閉通道,只需付出一次手續費。poker智慧合約保證此最終狀態由雙方簽名,並且會等待一定的時間來保證沒有人可以合理地質疑此結果。最終,它把一個eth的獎勵傳送給alice。

為什麼需等待一定時間

設想惡意bob提交了一個過去的對他有利的狀態,poker智慧合約無法得知這是否是最新的。等待一段時間允許alice提交一個新的狀態,從而使得poker智慧合約拒絕惡意bob的請求。

特點

狀態通道在很多應用場景是非常有效的,但我們也需要了解其特點以明確適用範圍:
  • 狀態通道需考慮可用性。假如alice在上文提到的等待時間內被惡意bob拔掉了網線,她可能無法在時間結束前提交最新的狀態。當然,她可以讓他人獲得其狀態複製以避免此問題。
  • 狀態通道對參與方在長時間內大量狀態互動特別有效。建立通道會有一定的開銷,但部署後的平均狀態更新開銷是極低的。
  • 狀態通道適用於擁有已知參與方的應用。這是因為類似poker的智慧合約需在一開始就知道哪些地址是參與方,增加或移除參與方將導致合約的更改。
  • 狀態通道具有強隱私特點。因為所有一切都發生在通道內部,而不是被公開廣播並記錄在區塊鏈上。只有開啟和關閉通道是公開的。
  • 狀態通道具有實時的確定性。意味著只要雙方簽名了狀態更新,它就能被認為是確定的。雙方都認為,假如有必要,他們能在區塊鏈上執行此狀態。

專案

雷電網路(raiden network)

basically all blockchain based applications that want to scale to real world usage will benefit from raiden. it can be used for applications like asset trading in gaming or finance, retail payments, micropayments for content (think the next youtube or spotify where creators are directly paid for every second consumed). but it’s also suitable as an infrastructure for cheaper, faster and more secure correspondent banking. — heiko hees, founder/ceo brainbot technology.

雷電網路使得物聯網和m2m(machine-to-machine)之間的微交易(micro transaction)成為可能。比起普通的狀態通道,使用者將連線到由狀態通道構成的網路中,並且可以和連線到網路上的其他參與方發起付款。雷電網路的簡化版本,名為μraiden,已部署在以太坊主網上。

其他專案

  • liquidity network: 鏈外支付系統,與μraiden類似。
  • counterfactual: 以太坊上的狀態通道框架,模組化的設計使得開發者無需成為狀態通道專家。
  • funfair: 去中心化的博彩平臺,開發了名為fate channels的狀態通道。
  • spankchain: 基於區塊鏈的成人內容平臺,開發了單向支付通道。
  • decentraland: 基於區塊鏈的虛擬世界,開發了基於狀態通道的指令碼系統(scripting system)。

程式碼例子(需科學上網)

如下連結透過50行solidity程式碼實現了支付通道:

https://medium.com/@matthewdif/ethereum-payment-channel-in-50-lines-of-code-a94fad2704bc

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;