狀態通道是一種被用來考慮區塊鏈中可能發生的區塊鏈互動的非常廣泛和簡單的方式,但是它可以從區塊鏈中轉移到鏈下,而不會顯著增加任何參與者的風險。這一策略最為人所知的例子就是比特幣支付通道這個想法,它允許兩方之間直接傳送無需費用的即時支付。狀態通道是支付通道的一般形式,將相同的方式應用於通常在區塊鏈上執行的任何型別的改變狀態的操作。在不需要任何額外信任的情況下將這些互動從鏈條上轉移到鏈下,可以顯著提高速度和降低成本。狀態通道將是擴充套件區塊鏈技術以支援更高階別應用的關鍵部分。
狀態通道的基本組成部分非常簡單:
1.部分割槽塊鏈狀態通過多重簽名或某種智慧合約進行鎖定,以便特定參與者必須完全同意彼此才能進行更新。
2.參與者通過構建和簽署可提交區塊鏈的交易來相互更新狀態,但這個時候僅僅是持續進行更新。每個新的更新覆蓋掉以前的更新。
3.最後,參與者將狀態提交回區塊鏈,區塊鏈關閉狀態通道並再次解鎖狀態(通常是與開始時不同的組態)。
這就是狀態通道!如果兩個參與者間更新的「狀態」是數字貨幣餘額,那我們就得到了一個支付通道。步驟1和步驟3開啟和關閉通道,這涉及區塊鏈操作。但是在步驟2中,可以迅速進行無限數量的更新,而完全無需涉及區塊鏈 ——這正是狀態通道大展身手的地方,因為只有步驟1和3釋出到網路時才需要支付費用,或等待確認。
事實上,只要通過仔細地規劃和設計,狀態通道可以幾乎無限期地保持開放,並且可以用作為一個區塊鏈經濟或區塊鏈生態系統提供動力的大型樞紐和輻射系統的一部分。
儘管我在上面做了簡單的描述,但狀態/支付渠道一般被認為是相當複雜的。這裏有幾個原因,其中之一是在我的三個步驟的措辭中隱藏了一些重要的細節。
讓我們仔細看看這些簡單的句子意味著什麼,首先是:
可以提交給區塊鏈
爲了使狀態通道運作起來,參與者必須確信,他們可以隨時將當前的通道的狀態釋出到區塊鏈上。這會導致一些重要的限制。
例如,必須有人保持線上狀態直到通道關閉,才能保護每個單獨方的利益。想象一下,當我們啟動一個支付通道,我一開始使用100個比特幣,而你一開始10個。如果我們首先簽署了一個將10個比特幣轉移給我的更新,然後再簽署一個將50轉回給你的更新,對你來說,顯然後者比前者更有利。如果你在交易中意外地失去了網際網路連線,並且我假裝從未發生過第二次更新,那麼我也許可以釋出第一次更新到區塊鏈,並有效地竊取你的50個比特幣!
在這種情況下,你需要的是有人保持線上來得到第二個交易的交易副本,以便它可以覆蓋掉第一個交易,從而確保你的比特幣受到保護。釋出交易廣播的不一定是你 ——你可以將一份副本傳送給許多隨機伺服器,這些伺服器只有在需要時才通過智慧合約釋出交易廣播(當然,收取少量費用)。但是,無論你做什麼,你都需要確保最新簽署的更新狀態可以蓋過所有舊狀態。這引導我們來到下一個微妙的句子:
每個之前的更新覆蓋掉之前的更新。
爲了使狀態通道的這部分起作用。鎖定和解鎖機制必須設計合理,以便提交給區塊鏈的那些舊狀態更新有機會被那些取代它們的新一代的狀態更新所更正。最簡單的方法是讓有關任何解鎖的嘗試都啟動一個計時器,在此期間任何較新的更新都可以替換舊的更新(重新啟動定時器)。當計時完成時,通道關閉,並調整狀態以反映最後收到的更新。計時器的長度將針對每個狀態通道進行選擇,從而平衡長通道關閉時間帶來的不便,同時提高網路連線或區塊鏈的問題的安全性。
或者,你可以構建一個財務懲罰的渠道,以便任何釋出區塊鏈更新不準確的人都會因未假冒後來的交易而使損失比得到的更多。但是這個機制最終並不重要,因為(回到前一個觀點),這種情況的博弈論對事物進行了歪曲。
只要這種機制在理論上是合理的,它就可能永遠不會被使用。實際上,通過計時器/罰款程式可能會引起額外費用,延誤或其他不便之處;考慮到迫使某人加入這個機制並不能給你帶來任何好處,狀態通道的各方可能會通過最終通道狀態雙方達成一致的方法來關閉通道。這個最終的平倉操作需要與普通的「中間」更新有根本的區別(因為它會繞過上面的「覆蓋」機制),所以參與者只會對在特定的通道內的被鎖定狀態的每一部分進行一次最後的平倉交易。
這些「微妙之處」的細節並不特別重要。這一切最終歸結於參與者通過建立一個「裁判」智慧合同來開放通道,彼此簽訂承諾,法官可以在必要時執行和裁決或者通過彼此商定來關閉渠道,裁判的裁決並不是必須的。只要「裁判」機制可以被認為是可靠的,這些通道可以被視為即時執行,而裁判只有在特殊情況下才會提出申訴,例如一方當事人失蹤。
當然,這些細節只是人們認為狀態/支付通道複雜的一部分原因。比較大的一個問題是比特幣支付通道很複雜。在比特幣網路中建立一個具有合理有用屬性的「裁判」機制錯綜複雜得令人驚訝。但是一旦你對狀態通道有一個清晰的概念,你就會發現,在有限的背景下,這僅僅只是一個想法。像計時器機制這樣的根據提交的簽名信息,允許採取兩種不同的路徑的基本智慧合約功能,在比特幣中顯然很難做到。但是就目前來說,比特幣其中一些功能正在逐漸新增或構建。
就我個人而言,我期待在未來6個月內看到可以使用比特幣支付通道。但通過意識到支付通道只是更廣泛的「狀態通道」觀念的一個特殊子集,我們意識到這是一個更廣泛的技術,並且狀態渠道可以應用於任何智慧合約,這些智慧合約處理參與者在其中的頻繁更新。你可以預見在許多(如果不是大多數)分散式應用程式中都會使用到這種方法。