BTC
ETH
HTX
SOL
BNB
查看行情
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

一文了解狀態通道的現狀

区块记
特邀专栏作者
本文約3265字,閱讀全文需要約5分鐘
在這篇文章中,我們將了解狀態通道如何工作的基礎知識,以及為什麼它們的實現很複雜。
AI總結
在這篇文章中,我們將了解狀態通道如何工作的基礎知識,以及為什麼它們的實現很複雜。

編者按:本文來自區塊記(ID:BlockchainInsights),經授權發布。

編者按:本文來自

區塊記(ID:BlockchainInsights)

區塊記(ID:BlockchainInsights)

,經授權發布。

編者按:本文來自

區塊記(ID:BlockchainInsights)

區塊記(ID:BlockchainInsights)

,經授權發布。

編者按:本文來自

區塊記(ID:BlockchainInsights)"區塊記(ID:BlockchainInsights)",經授權發布。

在這篇文章中,我們將了解狀態通道如何工作的基礎知識,以及為什麼它們的實現很複雜。我們將討論它們如何用於比特幣的閃電網絡的支付,以及在以太坊智能合約的支持下,如何利用它們來實現更複雜的應用。最後,我們將探討為什麼狀態通道到目前為止還沒有被廣泛採用,以及為什麼這種情況可能會發生變化。"狀態通道如何工作"狀態通道的核心前提是出奇的簡單易懂。不再使用鏈上交易,希望定期進行交易的各方可以先在智能合約中鎖定資金,然後在鏈外交換簽名的消息,這些消息用來更新誰擁有哪些資金的狀態。任何數量的交易都可以在鏈外發生,其速度只受限於各方交換簽名信息的能力。無論何時,任何一方想要退出通道,都可以將最新的簽名狀態提交給鏈上智能合約,智能合約會驗證簽名,並按照約定的分配方式分配資金。

我們來看看最簡單的狀態通道的例子:雙方之間的簡單支付。我們請上我們的老朋友,Alice和Bob。我們假設這兩個人有理由定期交換資金exchange funds。他們都向基礎鏈上的智能合約存入資金- 在這個例子中,比方每個人存5個ETH。 Alice對支付給Bob 1個ETH的消息進行簽名,這意味著她將自己的餘額更新為4 ETH,Bob的餘額更新為6 ETH。 Alice將簽過名的消息發送給Bob,Bob對更新後的狀態進行簽名並返回。之後,Bob向Alice支付0.5 ETH,將自己的餘額減為5.5 ETH,將她的餘額增為4.5 ETH。他對這次的支付信息進行簽名,並發送給Alice,然後她也對這個信息簽名並將其發送回去。

只要Alice和Bob願意,這個過程就會重複。值得注意的是,小額支付在這個系統中是可以的。由於在通道結算之前沒有任何費用,所以發送1000筆0.001ETH的付款和發送一筆1ETH的付款從成本上是一樣的。

最終,Alice和Bob的交易告一段落。雙方最後簽了名的餘額是,Alice有7個ETH,Bob有3個ETH。她將這最後一個共同簽名的狀態提交給基礎鏈,基礎鏈首先驗證雙方確實是用私鑰簽名的,然後根據所表明的餘額發放給雙方。簡單又簡潔,對吧?是的,但我們忽略了一些關鍵細節。

細節中的魔鬼

對於狀態通道來說,即使是在我們簡單的雙方支付通道的例子中,對這些爭議性因素的考量也會增加大量的偶然複雜性。考慮一下這個場景。如果Bob付給Alice 2個ETH作為商品或服務的回報, 但當他收到商品後,他使用了一個過時的狀態- 一個在他最近一次付款前簽了名的狀態- 來關閉鏈上通道。 Alice和Bob都對這個之前的狀態簽了名,而智能合約並不知道這個狀態是之前的。這將使Bob可以索取Alice認為屬於她的資金。

多方支付

為了防止這種不良行為,我們的系統可以要求兩個用戶都對一個特殊的"最終"狀態進行簽名,這個狀態明確地將通道標記為關閉,並且只有當這樣的狀態被提交時才會進行資金的發放。那麼,如果一方拒絕對這樣的最終狀態簽名,或者乾脆消失或長時間離線,會發生什麼?雙方的資金都會被卡在智能合約中。

為了避免這樣

悲催

的結果,需要讓各方能夠退出通道,用中間狀態提取資金。當雙方沒有明確關閉通道時,大多數的最終操作都會增加一個資金支付的等待期。這使得每一方都有機會通過出示雙方簽過名的較新狀態來對取款提出異議,從而證明另一方試圖作弊。這樣的證明往往伴隨著對惡意者的懲罰。

這是一個可行的解決方案,但我們可以看到它已經增加了多少複雜性。對於一個簡單的雙方支付通道,現在雙方都必須不斷監控這個鏈,以確保另一方沒有試圖作弊。他們必須維護其最新狀態的緩存副本,並準備進行鏈上交易以證明發生了作弊行為。此外,如果另一方停止響應,用戶必須準備好等待異議期過後才能拿回自己的資金。https://medium.com/)。

多方支付

現在,事情是這樣的- 只有兩方支付的狀態通道在可用性上是相當有限的。有多少經濟往來涉及到只是雙方之間來來回回地重複支付,而且雙方都會放心地把自己的一大筆錢專門用來與另一方進行支付的目的?大概是相當少的。

為了讓狀態通道更有用,我們需要擴展它們的作用。我們有兩種方法可以做到這一點。一是增加可以使用通道的參與方數量。二是擴展狀態通道的能力,不僅僅是支付,可以實現更多通用的狀態種類,從而實現更複雜的用例。

我們先來看看參與方的增加。最簡單的方法是有一個大的通道,所有參與者都向同一個合約存款,並對所有的狀態進行簽名。由於顯而易見的原因,這種方法在少量用戶之外無法發揮作用。我們需要的不是一個單一的通道,而是一個通道網絡。

閃電網絡:支付通道網絡

為了讓支付通道真正變得有用,比特幣的閃電網絡讓它們變得可按特定的路線跳轉。任何用戶都可能用一個或多個節點打開通道(任何人都可以操作)。然後,支付在節點之間https://docs.ethhub.io/)。

跳轉",每個節點都會將資金轉移到下一個節點,直到到達預定的接收方。對於這樣的跳轉,每個節點都會收取少量費用。"你可以想像,這樣的系統伴隨著複雜性的爆增,而閃電網絡花了很長的時間來解決這樣的困難。它仍有一段路要走,在過去的12-18個月裡,閃電網絡的採用沒有什麼起色。老實說,我不確定閃電網絡是否會獲得大量使用,但已經建立起來的技術還是令人印象深刻。https://blog.statechannels.org/)

儘管閃電網絡通過使整個參與者之間的支付成為可能而讓狀態通道變得更加有用,但其他人採取了不同的策略:將通道限制在一小部分參與方中,但擴大了它們的功能。

开发者
智能合约
ETH
歡迎加入Odaily官方社群