狀態通道是一個Layer 2 擴展方案,它允許參與者安全且免費地進行任意數量的鏈下交易,並只需在開啟和關閉通道時支付gas 費用。因此,狀態通道可以實現以盡可能低的 gas 費用,支援更大的交易吞吐量。
什麼是 Layer 2?它對區塊鏈有什麼作用?請參考「什麼是二層網路」詞條。
我們來想像這樣一種情形:
Bob 每天都要向他的朋友Alice 支付超過10 筆、價值0.5 美元的ETH,並持續一個月。然而,這樣不僅十分費時,且將浪費大量 gas 費。在大多數時候,每筆交易的金額甚至不能覆蓋 Bob 為此需支付的 gas 費。
什麼是 gas 費?它是如何產生,又是如何計算的?請參考「什麼是 Gas 費」詞條。
所以他們想出了一個相當巧妙的辦法,他們可以在一個記賬APP 中分別開設自己的賬戶,並且Bob 必須預先將一些錢(比方說100 美元)存入一個保險箱,以獲得Alice 的信任。之後,對於每筆交易,他們只需要更新自己的帳戶餘額,而不需要立即結算。
一個月後,當他們之間的所有交易都已結束,記帳 APP 清楚地顯示了 Bob 欠了 Alice 80 美元。這時,鎖在保險箱裡的 100 美元將在他們之間重新分配。這是一種直觀理解狀態通道的方式,只不過所有的儲存和運算都將由智能合約來管理。
從技術上講,要加入一個狀態通道,一組參與者需要共同簽署一個多籤的智能合約,將他們的資金存入並鎖定到其中,形成一個初始的區塊鏈"狀態"。這個鎖定的 "狀態 "可以是一定數量的 ERC-20 代幣,甚至是 NFT、ENS 域名等。
然後,同一通道內的參與者可以自由地進行鏈下交易,而不需要立即將交易傳回 Layer 1 進行結算。每一筆鏈下交易都需要由所有參與者簽名,才能被認定為是有效的 "狀態更新"。
最後,當交易全部完成後,所有參與者應透過簽署智能合約向 Layer 1 提交最終的、所有參與者均認可的狀態。智能合約在驗證所有鏈下交易("狀態更新")均有效後,將最終關閉通道,並為每個參與者結算存款餘額。參與者隨後便可以取出他們剩餘的存款。
狀態通道的上述特點使其非常善於處理極高的交易吞吐量,同時為用戶保持較低的Gas 費用,尤其適用於長期、重複、小額支付的情形。然而,它也有其他缺點,例如只允許同一通道的參與者之間進行交易,而不允許通道在過程中增加或刪除參與者,這會大大增加其應用的限制。
採用狀態通道技術最著名的例子是比特幣閃電網路中的支付通道,它允許在兩方之間直接進行鏈下支付交易而無需支付費用。另一個著名的例子是 Celer Network。它的產品 Layer.2 finance 透過狀態通道技術,可以使用戶以極低的費用觸及所有現有的 DeFi 協定。