狀態通道
狀態通道是兩方(或少數幾方)之間的一場私下對話,整個過程只碰觸區塊鏈兩次:開通一次、關閉一次。想像兩位朋友在酒吧記帳:他們不在每杯酒上桌時都跑去櫃台結帳,而是在一張紙巾上記下累計金額,各自為最新的總額簽個名;直到離開時才向收銀員結清那個最終數字。區塊鏈就是那位收銀員——又慢又公開——而通道就是那張紙巾,他們可以在上面免費且即時地更新餘額數千次。
具體而言,雙方先把資金鎖進鏈上一份多重簽章合約(這是開通)。接著他們在鏈下交換已簽署的訊息,每一則都代表一個雙方同意的新狀態——餘額的分配、一盤棋的局面,或任何該合約能裁決的東西。每次更新都帶有一個嚴格遞增的版本號,以及所有參與者的簽章,因此只有「最新且互相簽署過」的狀態才有效。若要合作關閉,任一方提交最新已簽署的狀態,合約便依此向各方支付。中間那些更新的成本與延遲基本上為零,因為它們從不上鏈。
難點在於防止作弊的強制執行。若你的對手方消失,或試圖提交一個對他較有利的舊狀態,合約會開啟一段挑戰期,期間另一方可以貼出更新的已簽署狀態來推翻它;某些設計還加上罰則,把作弊者的全部餘額判給誠實的一方。這意味著參與者(或代他們值守的瞭望塔服務)必須保持在線,才能捍衛自己的資金。狀態通道為「一組固定參與者之間反覆互動」提供了可能達到的最低延遲與成本,但它幫不上對陌生人的一次性付款,而且會在通道的整個生命週期內鎖住資本。
通用狀態通道把這個構想從付款擴展到任意的應用狀態,做法是透過一份鏈上裁決合約,以及「反事實實例化」——只有在真正發生爭議時才把子應用合約部署上鏈。實務上,支付通道與閃電網路是僅有的大規模部署;完全通用的狀態通道複雜到讓彙整(rollup)最終成為主流的擴容路線。
通道在兩次更新之間並不會把餘額「存」在鏈上——鏈只看得到開通時的鎖定與最終狀態。中間的一切僅以雙方持有的已簽署訊息存在,這正是「保持在線(或雇用瞭望塔)」之所以重要的原因。