狀態通道和側鏈技術,是以太坊社區的兩種擴容技術,但是很多人經常會傻傻分不清楚,因此導致很多困惑。
今天,這篇文章試著解釋其中的道理,希望讓大家能夠理解。這篇文章的主要目的,是說清楚:
? 什么是狀態通道技術?
? 什么是側鏈技術?
然后試著比較這兩個技術:
? 他們試圖解決什么問題?
? 這兩者誰是更好的擴容解決方案?
不浪費太多時間了,讓我們趕緊開始吧。
什么是狀態通道技術?
狀態通道是非常廣泛和簡單的方法,來在區塊鏈上對其進行擴容,但是這是在區塊鏈鏈下進行的,并沒有顯著增加區塊鏈參與者的風險。這種方案最出名的案例就是比特幣的支付通道,它可以讓兩者之間直接發送快速以及手續費很低的支付。
狀態通道是支付通道的統稱,可以把這個技術應用到任何狀態更改的操作,大多數情況下是在區塊鏈上進行。
將計算移動到鏈下,就不需要多余的信任,可以導致成本的降低和速度的極大提升。狀態通道是區塊鏈擴容技術的重要組成部分,可以支持更高級別的使用。
狀態通道基本的組成部分有以下:
1. 區塊鏈的部分狀態通過多個簽名和部分智能合約鎖定,所以這部分參與者必須要完全同意對方去更新它。
2. 參與者通過產生以及簽名轉賬來自己更新狀態,這最終會上傳到區塊鏈上,而不是直接在鏈上進行計算。每個新的更新會刷新之前的更新。
3. 最終,參與者將狀態傳回到區塊鏈上,然后關閉狀態通道,并且再次鎖定狀態(通常是按照和開始不同的設置)。
如果參與者之間更新的“狀態”是數字貨幣余額,那么我們就會有支付通道。第一步和第三步,就會開啟和關閉這個通道,包括區塊鏈操作。但是第二步,無限的更新就會快速進行,而且不需要區塊鏈的干預- 這就是狀態通道的力量,因為只有第一步和第三步需要公開到網絡上,支付手續費,或者等待確認。其實,有了精心的計劃和設計,狀態通道可以幾乎保持無限開啟,并且被用作中心和分支系統,來助力整個經濟和生態系統。
盡管我們是很簡單地描述,其實狀態/支付通道是很復雜的。這里有幾個原因,其中一個就是這三步背后有很復雜的分散步驟。讓我們仔細來看看,這些都是什么,讓我們從以下開始:
可以提交到區塊鏈。
為了讓狀態通道工作,參與者必須要保證他們可以在任何時候公開通道目前的狀態。這就會導致很多重要的限制,例如有人必須要在線去保護每個參與者,直到通道關閉。
想象下,當我們開啟支付通道,我通過100個比特幣開始,但是你是通過10個比特幣開始。如果我們開始簽名一個更新,轉賬10個比特幣給我,然后又簽名一個更新,轉賬50個比特幣給你,那么之后的更新很明顯是比早前的那個更有利益。如果你不幸地沒有網絡連接了,那么假設第二個更新永遠不會發生,那么我就可以將第一個轉賬更新到區塊鏈上,然后從你那邊偷走50個比特幣!你需要做的,就是有人在線,并且有之后轉賬的復制,從而他們可以“覆蓋”前個轉賬,并且保證你的比特幣是被保護的。不一定非要是你- 你可以這個備份傳送給很多隨機的服務器,它們都是通過智能合約同意地,并且只要需要,就可以公開轉賬(當然,需要很少的手續費)。但是無論你怎么做,你需要保證最近的簽名更新是可以覆蓋所有其他的。這就到我們的第二個步驟:
每個新狀態“覆蓋”之前的更新
為了完成狀態通道的這部分工作,鎖定和解鎖機制必須要能夠合理地設計,從而提交到區塊鏈的舊狀態更新有機會被替代他們的更新狀態所糾正。最簡單的方法,就是讓任何解鎖都開啟計時器,在這段時間里,任何更新的更新能替代舊的更新(同時也重新啟動計時器)。當計時器完成的時候,通道就會關閉,并且狀態就會反應收到的最后一個更新。計時器的長度會為每個狀態通道特定選擇,從而平衡一個長通道的關閉時間,同時也增強安全性,這會防止網絡連接或者區塊鏈問題。另外,你可以通過金融懲罰的方式來構建通道,從而任何向區塊鏈公開不準確更新的人,通過假設之后的轉賬不會發生,讓這些人失去更多。
但是這個機制并不是很重要,因為(回到之前所說的點)這個情況下的博弈論會讓事情變得很糟糕。這個機制可能只是理論上聽起來沒問題,但是可能從不會使用。其實通過計時器/懲罰過程,也許會導致多余的費用,延遲或者其他不方便;如果讓某些人進入到這個機制,并不能給你任何好處,狀態通道的更方可能只是通過人工同意最終的狀態通道,從而關閉通道。最終的關閉操作需要和正常的“中介”更新不同(因為它會繞過上面的“覆蓋”機制),所以一旦在某個通道的部分狀態鎖定,參與者會只是簽署最終的轉賬。
這些“細節”不是特別重要。它最終分解開,可以理解為,參與者通過設置一個“法官”智能合約來打開通道,互相簽署協議,如有必要,裁判可以強制執行,然后通過在其中達成共識關閉通道,那么法官的判斷就不需要。只要“法官”機制是可靠的,這些承諾就可以被認為是即時轉賬,法官只在特殊情況下上述,例如一方參與者消失。
當然,這些細節只是人們認為狀態/支付通道復雜的愿意之一。更多地是,比特幣支付通道是很復雜的。在比特幣中建立“法官”機制是非常錯綜復雜的。但是一旦你對狀態通道有清晰的理解,你可以看到這僅僅來自于在受限的上下文中實現這個想法。基礎的智能合約機制,例如計時器機制以及根據上傳的簽名信息來選擇兩個不同的道路,這其實在比特幣中更難做到。某些功能是逐漸添加和建立的。通過看到支付通道只是特殊的廣泛“狀態通道”概念的子案例,我們發現這是更快寬泛的技術,并且這個狀態通道能夠應用到任何智能合約中,它們和定義的參與者之間進行高頻的更新。你可以預見,這種方式會在很多分布式應用中出現。
現在,我們應該對什么是“狀態通道”比較清楚了,接下來我們來看看側鏈技術。
什么是側鏈技術?
側鏈技術是一種分開獨立的區塊鏈,其會使用一個雙向錨定來依附于主鏈。
換句話說,你可以將資產移動到側鏈上,也可以轉移回主鏈。
這個雙向錨定可以在主鏈和側鏈之間按照預先設定的速率進行資產的內部交換。初始的區塊鏈通常代表著主鏈,而且所有新增的區塊鏈都被定義為側鏈。
主鏈上的用戶首先需要將代幣轉移到輸出地址,在那里代幣會被鎖定,從而用戶不能消費它們。一旦轉賬完成,在經過安全時間的等待之后,信息就會在鏈上傳遞。在等待時間之后,相同數量的代幣就會在側鏈發布,讓用戶能夠獲得并且消費它們。當從側鏈轉移到主鏈的時候,相反的事情就會發生。
聯盟
聯盟是指作為主鏈和其中一個側鏈中間點的群體。這個群體在用戶鎖定和釋放代幣的時候,就會確定。側鏈的創建者可以選擇聯盟的數量。但是聯盟結構的一個問題在于,它會在主流和側鏈之間添加一個層級。
側鏈對于他們自身的安全性是需要負責的。如果沒有足夠的算力來確保側鏈的安全,就可能會被黑客侵入。因為每個側鏈都是獨立的,如果被入侵,那么損害就會包含在側鏈上,不會影響主鏈。
相反地,如果主鏈被入侵了,那么側鏈仍然可以允許,但是錨定就會失去價值。
側鏈需要他們自己的礦工。這些礦工能夠通過“聯合挖礦”來獲得激勵,同種算法,同時挖礦,并且可以獲得兩種不同的數字貨幣。
現在,我們對側鏈也有所了解了。那么,讓我們來比較它們之間的區別。
它們試圖解決什么問題?
側鏈和狀態通道是用于來提高區塊鏈的擴容性。
它們都符合類似的模型。
? 鎖定狀態/資產。
? 在鏈下進行轉賬
? 在狀態通道/側鏈解鎖狀態/資產
但是盡管這樣類似,其中也有很多區別,主要是在狀態通道中,我們不使用單獨的區塊鏈,但是在側鏈中,我們使用單獨的區塊鏈。那么我們來看看,最終的結果是什么。
這兩個,誰是更好的擴容方案?
為了得到答案,讓我們來看看他們各自的優勢和劣勢。
狀態通道的好處
狀態通道有很強的隱私性能:這是因為任何事情都是發生在通道中的,而不是公開廣播并且記錄在鏈上。只有打開和關閉轉賬必須是公開的。但是在側鏈系統中,每筆轉賬都是發布在側鏈上的,然后側鏈上的每個參與者都會收到,然而事實上,你并沒有和側鏈上所有參與者交互。
? 狀態通道有即時的最終確定性,也就是說只要兩方簽署了狀態更新,就能認為狀態結束了。雙方對其能夠有很高的保證,如有需要,他們可以“強制”將狀態放入在鏈上。但是就像上面討論的那樣,狀態通道關閉,考慮到轉賬的安全性等級,可能會需要花費各種時間。然而在側鏈中,你在另一邊有區塊鏈。所以,最終結果取決于側鏈的挖礦算力。
狀態通道的缺陷
? 狀態通道需要所有參與者100%的在線:就像我們討論的,如果任何參與者變得不在線,那么對他們來說成本是很高的。參與者可以使用別人來作為代表,如果他掉線,但是代表被攻擊的可能性成了狀態通道的問題。但是在側鏈中,你就不需要一直在線。
? 狀態通道最好是用于一系列參與者:這是因為法官合約(用來鎖定狀態的合約)必須總是知道參與者/個體(也就是地址)是這個通道的一部分。我們可以添加和移除參與者,但是需要每次都對合約進行改變。但是在側鏈,對于參與者的轉移就沒有這類限制。
? 狀態通道對于要長期進行很多狀態更新的參與者來說,尤其有用:這是因為在部署法官合約的時候,創建通道有初始成本。但是一旦部署了,通道內部每個狀態的更新都非常便宜。
側鏈的好處
? 側鏈是永久的。如果現在已經有了,你不需要為了特定目的,來創建你自己的側鏈:側鏈在完成的時候,就被創建并且維護。我們不會關閉側鏈,而是在側鏈上鎖定資產,然后轉移到主鏈。這對于那些想在鏈下進行特定任務的情況,是非常有幫助的(例如,狗狗幣轉賬),因為最終都會到同個側鏈。所以,你不必為每個新的參與者來創建不同的側鏈。但是在狀態通道,你總說需要創建新的通道,然后添加新的參與者。但是,有些項目也使用了別的方法,可以不用為每個參與者都創建新的通道。你可以通過其他參與者不直接地在你和接收者之間建立通道。
? 側鏈可以讓數字貨幣和對方交互: 他們會添加了靈活性,同時也讓開發者在把數據推送到主鏈之前,能夠進行軟件測試。傳統銀行功能,例如發放跟蹤股權的所有者,可以在將他們轉移到主鏈之前,在側鏈進行測試。
側鏈的壞處
? 側鏈需要很多的初始投資才能開始:為了創建側鏈,我們需要有足夠的礦工,從而網絡可以防止攻擊者,保持安全。同時,我們必須要保證它們是在線并且運行的。但是在狀態通道中,沒有區塊鏈。所以,也不需要這類需求。
? 對于側鏈來說,聯盟是需要的:這會在主鏈和側鏈之間增加另個層級。這對于攻擊者來說,是另一個脆弱的點,因為可以攻擊聯盟。因此在狀態通道中,我們只需要智能合約來這樣做。
其實這兩個擴容方案之間的競爭是很大的。塵埃落地,但是這兩者仍然還發展地很好。由于研究還在繼續,現在很難決定到底誰是獲勝者。也許他們會合作來形成另外的混合解決方案,來為解決擴容問題。現在只能等待,看看時間會給我們帶來什么。
評論