從2018年3月8日到10日,來自世界各地的以太坊專業人士、研究人員、投資者和愛好者湧入了巴黎來參加以太坊社區會議(EthCC)。
EthCC是由一家法國的非盈利組織Asseth籌備組織的。Asseth自2016年初以來,一直在推廣和分享以太坊及其生態系統方面的知識。
會議一共有超過800人蔘加(當然也包括了原作者!)。
關於“擴展EthCC”的最後一次講座中的人數指標
在三天的會議期間舉行了超過100個講座,主題範圍從管理、安全和隱私到DApp開發、遊戲和去中心化交易等。
如果我仔細描述每一個講座的話,這篇文章就會太長了。所以既然我們在Loom Network的關注點在於可擴展性,在這篇文章中,我們將重點介紹EthCC的可擴展性講座。
Plasma, Plasma Cash & 分片
在第二天, Karl Floersch展示了Plasma & 分片的最新進展。這個講座是他上週上傳的解釋Plasma視頻的稍微更多細節版本。
這應該是我最喜歡的講座了,主要是由於Karl對他描述的概念所表現的能量和熱情。 目前,Plasma是為代幣轉移(ERCO20 / 以太)而設計的,但它可以擴展到更復雜的代幣,如ERC721或甚至更通用的狀態轉換。
應該明白,Plasma不是一個協議,它是一種設計模式、一種技術。 最主要的要求是Plasma鏈必須(幾乎)像根鏈一樣安全。
Plasma技術背後的主要安全機制是“Plasma出口”,該過程允許參與Plasma鏈的用戶停止參與鏈並將他們的資金轉移回根鏈。 每個Plasma鏈也由其自己的“Plasma操作員”管理。
在用戶在Plasma鏈中進行交易並且想要將其資金轉移到主鏈的情況下,他們提交一個“退出交易”(即他們的交易歷史的默克爾(Merkle)證明,以證明他們擁有一定數量的資金)。 那一刻,就會產生一個“挑戰期”。
挑戰機制在大多數鏈下解決方案中都能看到。 從本質上講,你允許任何人通過提交證明你的聲明無效的證據(在Plasma中這可以是交易歷史的Merkle證明,在支付通道中這可以是來自另一方的簽署消息)來挑戰你的聲明。 另外,在進行可能會受到挑戰的交易時,你還需要附加一筆小額獎金,以激勵人們在如果他們認為你的行為是惡意的時候挑戰你。 這就像你試圖偷東西,並說“如果你能抓到我,我會付你5美元”。
在正常情況下,如果Bob想要將5個PETH(Plasma以太)轉移回根鏈,他會提交一個“退出交易”(加上賞金作為抵押品),如果它沒有被挑戰,Bob就可以在根鏈領取5ETH。 如果Bob的“退出交易”成功受到挑戰,它將被取消,挑戰者將獲得賞金。
Alice注意到Sam試圖退出並挑戰他。 在這個例子中,Sam的退出是具有欺詐性的,因此它被取消了+Alice收到了Sam的抵押品。
更危險的情況是,當Plama操作員想要退出他們的鏈。 下面所描述的攻擊矢量圖涉及Plasma操作員開發一個區塊,獲得任意數量的PETH,然後嘗試退出,並將所有ETH鎖定在自己的智能合約中。 在這個例子中,Sam和Alice的PETH比Plasma操作員的PETH更早鑄造。
Sam和Alice注意到操作員的惡意行為並提交了“退出交易”(他們的會在操作員的之前被處理)。
為了“榨乾”Plasma合約,如果Plasma操作員提交“退出”,Sam和Alice注意到瞭然後他們也提交“退出”。 較早的交易會首先被處理,這意味著他們可以首先安全地將他們的PETH兌換為ETH,然後當Plasma操作員的“退出”得到處理時,它是無效的,因為合約現在是空的了。
Karl講座的第二部分是Plasma Cash,將在下面Vitalik的講座中介紹。
最後一部分是關於分片,0期和1期。
分片0期:
無硬分叉
驗證經理合約與一組分片驗證程序,最多100個以太坊分片以及數據可用性保證
分片1期:
帳戶抽象化[1][2][3]
eWASM
如上所述,分片中有3種實體:
用戶:發送交易的實體
區塊提議者:計算狀態轉換以及提議區塊
驗證者:驗證區塊以及確保數據可用性
Minimal Viable(最小可行)Plasma的現狀
David Knott介紹了Plasma的UTXO模型。 與比特幣類似,UTXO模型涉及一個具有未支出輸出的交易總和的用戶,以及組成餘額的未支出輸出交易(UTXO)的總和。 這在試圖證明時效率不高,因為用戶可能有成千上萬的UTXO,這會增加證據的大小。 在這種情況下,通過用戶將所有的UTXO發送給自己,然後將其壓縮為一個,來完成模擬帳戶的工作。
當用戶在Plasma合約中存入(鎖定)以太時,會為此金額生成一個UTXO。 然後,用戶可以在Plasma鏈上進行儘可能多的交易,並且享受快速確認和低費用的好處。 當他們想要退出時,他們將他們的UTXO提交給根鏈的合約,並取回他們鎖定的以太。
主鏈中的Plasma合約是最終仲裁員。
The goal is to be able to have Plasma Chains of Plasma Chains that will offer different features. 安全性將通過與法院類似的機制來維持。 在發生爭議的情況下,將調用下一級權限,直到爭議在最壞情況下得到根鏈的最終解決。
Plasma Cash
最後,Vitalik Buterin在他的“驚喜”講座中揭曉了Plasma Cash — — “更少每用戶數據檢查的Plasma”。與此同時,由於房間完全爆滿了,Karl在外面做了一個即興的講座,你可以在這裡看。這個講座也是ethresear.ch論壇正在進行的討論的現場版本。
本質上來說,Plasma Cash是具有一個以下修改的Plasma版本¹:
每一單筆存入都相對應有一個唯一的幣ID;代幣無法分割也無法合併。
我們不是按照
txindex
的順序將交易存儲在二進制Merkle樹中,而是要求它們存儲在稀疏簡單的Merkle樹或Patricia樹中,索引是所用幣的ID。
這為幣提供了一些不可互換的屬性,從而可以優化其歷史證明。 通過這種結構,用戶只需要驗證他們正在觀看的幣的歷史記錄(Merkle路徑,遵循UTXO模型)。與必須驗證所有幣的整個交易鏈相比,這允許了高效的證明。
狀態通道
我將重點對狀態通道領域的三個主要參與者進行比較:Funfair、SpankChain和Raiden Network。
Funfair & Fate通道
由於這是一個賭博的用例,因此它需要有一個隨機性來源。 當玩家與賭場之間的支付通道開放時,RNG將由玩家和賭場播種,從而確保有一個更安全的熵源。 Fate通道目前是閉源的,Jez將其描述為保留競爭優勢的手段。
FunFair可以做到“變成完全狀態通道”,這與SpankChain的可以進行任意狀態轉換(不同於Raiden的僅用於支付)的狀態通道類似。
它們需要1筆交易開通通道,需要1筆來結算。 任何數量的中間交易都發生在鏈下。Fate通道“生命”也很短暫,意味著它們僅持續一局遊戲的時長。
Fate通道與其他狀態通道實現之間的差異(上:支付通道,下:CounterFactural)
SpankChain & 通用化狀態通道
Ameen概述了SpankChain的生態系統,然後Nathan Ginnever對SpankChain的狀態通道實現中做了深入的講解。 通用化狀態通道和“反事實實例化”是由L4和Counterfactual創造的術語。
其概念就是,參與狀態通道的雙方簽署並分享一個可以隨時被部署到區塊鏈的智能合約的字節碼。隨時可以拉動開關的能力使任何不誠實的行為無利可圖,而且足以使雙方都在無需部署合約的情況下,遵守合約規則。
這允許在兩個客戶端按預期行事的情況下進行零鏈上交易。
如果出現了挑戰,情況就不同了:
債券經理合約負責開啟和關閉通道。 它持有結合的以太/代幣以及由鏈下客戶端詮釋的子通道關閉時的最終狀態所決定的餘額。
Raiden Network & 支付通道
href="https://www.youtube.com/watch?v=93qOwUSj4PQ">關於Raiden Network的講座是他們進展和路線圖的最新消息。你可以把Raiden想作是以太坊的Lightning Network。
Raiden需要一臺電腦是可以運行以太坊節點並且每時每刻都在線上的,所以IoT設備就不適合,而這也是團隊的目標。
可用性問題依然存在,例如移動客戶端無法運行Raiden節點。 定位低功耗設備時,還需要額外開銷來增加適當的安全性。 當前可用的通信協議(如whisper)既不可擴展也沒有足夠低的潛伏給Raiden,所以導致它們要使用 Matrix。
他們將代碼重構為多個存儲庫,你可以在Raiden的Github上找到。 根據從μRaiden學到的,新的智能合約更加註重可讀性、安全性和gas優化。
Raiden正在追蹤10月發佈的路線圖
Minimal Viable Product(最小可行產品)的每個模塊即將完成,經過在測試網絡上的測試和外部審核後,Raiden將最終發佈到主網。 如果你是一名開發人員,這裡有大量文檔,你可以通過分叉Raiden的任何存儲庫並提交合並請求(PR)來為Raiden作出貢獻。
下圖應該可以給你提供一個每種狀態通道解決方案之間的直觀比較:
經驗證的鏈下計算
我覺得關於這方面的討論還不夠。 Oraclize在任何外部數據源(例如網絡API)和區塊鏈應用程序(如以太坊方面的智能合約)之間提供安全的認證通道[1]。 這可以進一步擴展到鏈下卸載計算資源,但仍然能夠花費60.000 gas驗證其在鏈上的有效性。
Oraclize在Devcon3講座中對其進行了進一步描述。 你可以在鏈下執行任何Solidity函數,通過Oraclize獲得結果並驗證其真實性。 如果證明通過了,你就節省了很多gas,否則你只能在鏈上執行交易(這讓我想起了Truebit)。
鏈下執行和驗證稍微讓人想起了TrueBit
講座也有提及關於如何使用Oraclize來增強支付通道,但是沒有深入描述。
Casper的“建設以修正”,從二元共識到分片
Vlad的講座和研究集中於創建明確定義、且可以“通過建設以修正”的協議。 這個概念有點與直覺相悖。 傳統的方法是首先創建協議,然後再對其進行分析。而CBC是先進行分析,然後再創建協議。
“通過建設以修正”的方式:
正式地但僅對協議的部分詳細說明
定義協議必須滿足的屬性和證明
衍生協議時應增加經過驗證可滿足的條款
目標是使對協議正確性的證明成為幾乎微不足道。
在這種情況下,定義一組數學規則(一些自動機理論可能會在這部分中幫助到你),然後根據這些規則設計協議。
Vlad的講座從定義規則和術語(如共識安全)開始:
如果兩個狀態σ1和σ2具有共同的未來協議狀態σ3,則通過使用σ1和σ2之間的前向安全性以及σ3和σ2之間的後向一致性,在σ1處做出的所有決策將與在σ2處做出的決策一致。 這將使σ1與σ2具有共識安全。
關於共識安全的更深入的解釋,請參考論文的定理1。
最後,在講座中討論的分片部分,他描述了合併區塊,這可以被認為是分片之間共享歷史的“檢查點”。
兩個分片和一個合併區塊
我強烈推薦你在這裡觀看講座(幻燈片),閱讀CBC論文,並觀看Vlad在以太坊柏林聚會上關於CBC協議的其他講座。因為這仍然處於研究階段,所以還沒有主網的預計發佈日期。
雖然跟上Vlad的講座思路有些困難,而且往往需要全神貫注地重新觀看,但我覺得Vlad的講座內容非常豐富,信息量很大,所以你應該花時間嘗試理解他的概念。 這是會議中最長的講座。 CBC Casper和協議設計是一個我覺得很複雜的領域,所以我將在未來的單獨一篇文章中嘗試討論它。
(文章原標題:2018年3月以太坊的擴展現狀——EthCC精選:Plasma Cash、Minimum Viable Plasma和更多……)