區塊鏈元件向鏈下模型的演化

買賣虛擬貨幣
區塊鏈的主要組成部分是: 共識、網路、記錄、計算。區塊鏈是記錄交易輸出的共享狀態資料庫。這些計算的輸入是以前計算結果的新輸入和當前狀態。狀態轉換更新透過對等網路廣播,每個節點驗證傳入的狀態更新以達成共識。透過讓網路中的每個參與節點執行計算並就結果輸出達成一致,區塊鏈帶來了以不可信的方式執行程式的能力,然後將輸出記錄到一個不可變的分類賬中。這種方法的缺點是,由於吞吐量限制,達到web級別的效能非常不可行。當前計算必須在分配的塊時間內計算。例如,EOS的塊時間為500ms,因此每個交易的交易時間限制為150ms,以適應分配的塊時間。像以太坊這樣的公共賬本要求網路中的所有節點儲存鏈中的所有資料,以便能夠驗證交易。這樣做的缺點是很難實現隱私,因為所有對方法和交易輸出的輸入都是公開可見的。我們將探討如何將諸如記錄儲存(儲存)和智慧合約(計算)之類的元件移出鏈,從而在不犧牲安全性和可伸縮性需求的情況下實現更健壯的計算和儲存需求。
Off-Chain(鏈下)移動某些元件可以緩解上面提到的一些問題。例如,使用鏈下儲存,資料不再需要由所有節點承載,而只需要由執行計算的節點承載。另一個例子是,計算引擎不需要固定在第一層鏈上;計算可以作為一個鏈下任務執行,類似於一個沒有伺服器的平臺,例如Function as a Service (FaaS),使用一個與區塊鏈節點解耦的不同執行環境。因為執行不再與鏈軟體耦合,計算可以在不同的節點或伺服器上執行。這意味著第1層鏈現在用作一種方法來註冊輸入和輸出,並作為一種方法來啟動計算提供者的計算。鏈下資料儲存減少了每個節點預期儲存的儲存需求。在第1層鏈之外儲存資料意味著對處理特定應用程式交易感興趣的參與者是需要儲存資料的人,而不是所有其他節點,如果他們願意,他們可以這樣做。鏈下資料儲存的一個危險是資料可用性不再得到保證,因為資料不是區塊鏈的一部分,而只是資料的指紋儲存在鏈上。如果資料丟失,則無法執行計算,因此這會影響此應用程式的活性,這是不好的。然而,另一個權衡是,儲存在鏈下的資料可以保持私有和機密性,因為不是所有節點都需要知道資料是什麼,而只需要知道那些計算任務的節點。鏈下計算可以在很大程度上減少冗餘計算,以達到一致。第1層鏈只能包含執行驗證所需的最少量和最必要的資訊,而計算是在鏈下上計算的,但是記錄狀態轉換函式的確定性輸出。鏈下計算可以與鏈下儲存耦合,作為讀取輸入、提取應用程式和記錄輸出的手段。如果你想一下像以太坊這樣的區塊鏈是怎麼做的,它們聚合交易,按照每個帳戶接收到的順序nonce對交易進行排序,然後根據提供最高費用的交易對它們進行排序。在工作量證明系統中,網路中的每個節點執行相同的例程,導致每個節點具有相同的限制,更不用說浪費計算工作了。

在一個典型的第一層鏈,如以太坊,狀態轉換系統是這樣的:

鏈上儲存和計算
節點接收交易,其中包括要呼叫的智慧合約和方法等資料,以及該方法的輸入。節點讀取當前狀態並執行建立新狀態的交易,並將該狀態儲存在同一個節點中。這意味著所有計算交易的冗餘節點也將所有相同的資訊冗餘地儲存在它們自己的節點中。我們將在下一節中看到,可以將儲存解除安裝到獨立的鏈下儲存節點中。鏈下儲存當我們開始將儲存抽象到一個外鏈下提供者時,我們立即減少了冗餘儲存需求。在此場景中,當鏈節點接收到交易時,必須從儲存節點獲取初始狀態。計算完成後,鏈節點將結果狀態傳送到儲存節點進行持久化。
使用鏈上計算的鏈下儲存
還有一個額外的步驟,即計算節點必須驗證從儲存節點接收到的資料。這個鏈節點只儲存資料的指紋以檢查完整性。例如,如果使用IPFS進行鏈下儲存,則鏈節點儲存資料的內容雜湊值。當從儲存節點接收到資料時,區塊鏈節點重新計算內容雜湊值,以驗證其所期望的資料。同樣,在計算輸出狀態之後,資料被鏈下儲存在IPFS上,其內容散雜湊值儲存在鏈上以供參考。需要注意的一件重要事情是,當將儲存置於鏈下狀態時,我們就失去了ACID(原始性、一致性、隔離性、耐久性)模型中的耐久性原則。讓資料在鏈上活動可以保證資料是可用的,但是將資料移到鏈下只能保證我們能夠驗證資料的完整性(一致性)。一些使用鏈下儲存的專案是謎;其中只有一個引用儲存在鏈上;使用以代理為中心的架構,其中每個dapp維護自己的分散式雜湊值表;如果對等節點只維護一個區域檔案,就會指定從哪裡下載資料;所有的應用程式都作為旁路執行,儲存自己的資料,沒有應用程式資料鏈。Dispatch Labs ; 指紋儲存在鏈上,具有透過資料農上傳和下載資料的能力,MultiChain ; 其中資訊可以釋出到離線流,節點可以訂閱這些流,Polkadot: 其中每個並行鏈(parachain)負責儲存它們自己的資料,而中繼鏈主要儲存會計資訊和塊頭。以太坊正在考慮一種狀態儲存的租用方法,在這種方法中,節點可以付費儲存資料,否則它們只儲存指紋。
鏈下計算相似儲存如何可以鏈下解除安裝,計算可以以類似的方式解除安裝。狀態轉移功能可以由一個單獨的節點計算到鏈節點的狀態轉移函式。這裡我們展示了一個鏈節點如何將計算解除安裝,而計算節點從鏈節點讀取資料:
鏈上儲存和離線計算
在這個場景中,所有資料都儲存在鏈上,鏈節點將計算請求連同所需的資料一起傳送給鏈下計算節點。鏈下節點執行狀態轉換函式來計算輸出狀態。由於計算是在鏈下解除安裝的,鏈節點現在需要對結果狀態進行驗證,因為計算節點可能報告錯誤的輸出狀態。驗證機制可以簡單地驗證結果輸出是由計算節點簽名的,而計算節點是鏈節點期望結果來自的節點。
在驗證完成後,將儲存新狀態。Serverless(無伺服器)由於計算與區塊鏈節點解耦,這意味著計算可以作為無伺服器函式執行,如onLamba、OpenFaaS或Kubeless。鏈下計算允許將區塊鏈分類帳維護狀態與無伺服器功能相結合。您可以想象一個由鏈節點、任務協調器和工作人員組成的生態系統:

鏈下工人叢集
例如,可以使用區塊鏈作為基於事件的系統來註冊發起鏈下工作的交易。您可以有一個Kubernetescluster,其中主節點監視on-chain請求,並以任務的形式將工作負載分配給它各自的工作節點,任務可以是無伺服器函式或輕量級Docker映像。Kubernetes執行時環境crio對執行進行沙箱化,並且始終可以選擇啟用更高的安全性,例如使用unikerkernel,它將核心的基本部分與應用程式耦合,以便將應用程式與主機隔離開來。另一種選擇是使用微型vm,比如KataContainers,或者是AWS Lambda和AWS Fargate正在使用的fireworks。
為了確保計算的正確性,編排節點可能會冗餘地將相同的任務分發給多個工作人員,並得到大多數工作人員的結果。在一個開放的市場中,任何擁有空閒計算能力的人都可以加入一個工人叢集,並在完成任務後得到主控制器的獎勵。除了基於任務的鏈下計算之外,另一種形式就是能夠在分配的時間內租用伺服器空間。由於很難確定資源提供者是否實際提供了他們所說的資源,因此這種方法往往依賴於信任網路來擴充套件聲譽和信譽網路。鏈下計算空間中的一些專案是Truebit、Golem、SONM、iExec、Akash、Hypernet、ArcBlock和Transmute。鏈下儲存和計算(混合模型)將鏈下儲存和鏈下計算結合起來,可以實現兩個方面的最佳效果。下面是兩個模型如何相互交織的概述:鏈下儲存和鏈下計算。使用這種混合模型,可以獲得更好的可伸縮性:
鏈下儲存和鏈下計算
等離子體就是一個例子,它結合了鏈下儲存和計算。Plasma是區塊鏈的層次結構,其中每個子區塊鏈計算狀態轉換,但被繫結到其父鏈;子鏈週期性地寫回父鏈。每個子鏈負責持久化它們自己的資料。這允許子鏈以自己的速度執行。父鏈可以檢查狀態轉換,這意味著子鏈的狀態轉換是正確的。驗證鏈下計算計算鏈下計算的節點稱為驗證器。驗證者提交結果並證明計算的正確性。驗證證明的節點稱為驗證者。驗證人檢查是有效的證明,如果成功,驗證人檢查的結果可以持續。
為了減少網路上的負載,驗證應該是非互動式的,這意味著驗證者應該能夠在一條訊息中檢查驗證,從而避免與驗證者之間的來回。驗證也應該是廉價的,這意味著它的大小應該是小的,它可以相對快速地計算和鏈上。zk - snark密碼學允許這兩種需求。該訊息可以在一個步驟和鏈上進行驗證。zk- snark的另一個好處是驗證器可以在不知道輸入是什麼的情況下正確地證明計算。驗證者對輸入的知識為零。在高水平的zk- snark中,需要將計算過程指定為算術電路。Iden3開發了一些抽象複雜性的庫,比如circom、電路編譯器和scorksjs 節點。用於生成給定已編譯電路的證明的庫。zk- snark的一個缺點是,它需要由建立應用程式的可信方執行一次性設定。惡意的一方可以生成虛假的證據。為了減少對該過程的信任,多方計算是將設定步驟過程分配給互不瞭解的多個參與者的一種方法。可信設定被稱為“有毒的廢物”,因為必須建立一個主金鑰,然後銷燬它,但是總存在未正確消除該金鑰的風險。Bulletproofs 是另一個零知識方案,它不需要像zksnark那樣的信任設定。最初,防彈設計用於機密交易的有效距離證明。一般來說,zk- snark更適用於複雜的語句,而bulletproof更適用於簡單的語句。防彈證明的一個缺點是,驗證比snark證明更耗時。Zk-STARKs類似於bulletproof不需要設定階段,因為它不依賴於公鑰加密,但是在實踐中使用的證明大小仍然相對較大。Zcash使用zk- snark,但最終將遷移到zk-STARKs。StarkWare和Zcash公司的成員是zk-STARKS的積極研究人員,致力於在區塊鏈中啟用隱私功能。
結論我們研究了將儲存和計算轉移到離線模型的方法,以及如何使用離線方法保護資料和輸入的隱私。鏈下儲存不再侷限於鏈上的需求,計算可能更加複雜,並且與正在使用的軟體棧無關。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;