Transcript可擴充套件的以太坊區塊鏈作為資料層
Vitalik最近提出了他對Rollups的想法以及與Ethereum1.0和2.0中的第2層解決方案相關的資料可用性問題。他的演講包含了一些引人入勝的結構,可能會進一步從團隊中進行迭代。這是一個至關重要的研究領域,因為對於希望增加使用者群的專案來說,仍然非常需要信任最小化的區塊鏈擴充套件機制。如果你有時間我建議聽完整的演講。
以前的研究
本次演講所依據的基本概念首先出現在Vitalik於2018年8月發表的文章中,將可用性引擎 availability engines 歸功於Justin Drake。2018年9月,一個擴大該主題的 ETHresearch 帖子得到了重要討論。在2019年1月,EF研究人員和Matter Labs之間的合作在Rinkeby測試網上產生了一個名為Ignis的概念證明。這是團隊的 原始帖子 和 Trustnodes訪談/演示 。
以下是Alex Gluchowski和Kent Barton在ETHDenver 2019上的精彩演講,詳細介紹了Rollup機制:零知識縮放 Scaling With Zero Knowledge 。對於SNARK和STARK之間的差異也有很好的探索。
最後,由於EF資助,看起來Matter Labs繼續通過snark進行擴充套件工作,請檢視 此處 的公告以及更多資源。
我在下面輸入了Vitalik演講的粗略記錄,試圖捕捉每個部分的精髓。希望人們覺得這很有用。
背景/MASTERCOIN
這是一種新的L2結構,與可擴充套件性(plasma/state channels)的L2不同,它使用BC作為資料儲存而非計算的場所。計算可以用zk-snarks完成。
- 一些歷史:將Mastercoin視為BTC之上的元協議。為解釋tx定義一組不同的規則。BTC是資料儲存,但不是狀態執行。特殊tx可以用flag表示。
- Mastercoin的缺點:客戶端不夠輕(需要BTC區塊鏈和Mastercoin節點)。MC協議中的活動不會影響BTC鏈,這限制了整體功能。
- 現在我們有ETH 1.0,很快我們將獲得ETH 2.0,我們能做類似於Mastercoin的事嗎?
ZK ROLLUP
ZK彙總(not ignis, not ignis plasma)可以在今天提高30倍的可擴充套件性,將來會更高。工作原理:Onchain合約只儲存一個值:merkle樹的merkle根。
- 使用者傳送txs,由一個叫做中繼者的特殊actor呼叫並設定zKsnark。釋出以前的狀態,新狀態,其中包括捆綁在一起的交易。
- 這與Plasma相似嗎?(兩者都是持有merkle根的合約)不同之處在於Plasma需要複雜的退出遊戲/退出期以便處理惡意操作員的可能性(資料可用性)。
- zK Rollup沒有資料可用性問題,因為所有交易都發布到鏈,沒有簽名。
- 每個釋出
13
個位元組X每個位元組68
個gas=884
個gas,當前簡單tx的當前成本為21k
。 - zKsnark證明了tx的有效性,而不是讓ETH主鏈驗證每個簽名交易。計算和儲存被移除。Merkle root留在鏈上。這避免了
central actor/relayer
。因為資料是在鏈上釋出的,所以任何人都可以驗證。 - 這可以通過不包括nonce來改進,刪除2個位元組(每個位元組11個位元組每位元組X
gas
氣體=748
個gas) - 注意:即時存款和取款。提款:coin從他們的merkle分支轉移到主鏈,然後是merkle root更新。存款將是相反的,但另外為使用者提供帳戶ID。可能會有很多漂浮在周圍。
- 這種結構可以相對安全地將簡單付款從
15 tx/s
增加到500 tx/s
。 - 斯坦福1.x研討會( youtube視訊 )的一個結果是,與其他業務相比,資料價格過高。儘管存在對狀態的擔憂,但向塊大小新增1kb並不會使事情變得更糟。在Istanbul可以減少簡單tx的gas成本,從而將ETH1.x的吞吐量提高到
1000 tx/sec
以上。
進一步採取行動
Rollup應該能夠支援更復雜的狀態轉換,包括Uniswap,高效能交換,多個token,隱私保護計算,ENS等,所有這些都使用 SNARK + publish tree details
範例。
ZK ZK ROLLUP(Bose–Einstein condensate)
7140 gas
BEACON CHAIN - 第1階段
- 如果我們想做更多的事情怎麼辦?輸入ETH 2.0的Beacon Chain第1階段。作為僅資料鏈的分片鏈意味著
2.8 MB/秒
的資料可用性。 - 每個zK zK彙總是
105位元組
/意味著27k
隱私保留交易/秒,如果完全消耗2.8 MB。如果我們不關心隱私,則27k增加10倍。 - get rekt scamcoins LOL VB 甚至無法選擇哪個是TPS聲稱的最差。
- 障礙是這些系統依賴於資料和計算(雖然數量很少)。ETH 2.0(階段1)沒有計算但有大量資料,而ETH 1.0有計算:讓我們橋接兩者。
ETH2在ETH1輕客戶端
- ETH 2.0研究團隊花了很多時間使2.0體系結構輕鬆客戶端友好。
- 當持久委員會切換時,每9天需要
80kb
的merkle分支(也可以在9天內分攤),每個頭部加500
位元組。 - 在ETH1客戶端需要
BLS-12-381
預編譯。 ETH 1鏈可以是掛鉤到2.0鏈的計算層,要求在2.0鏈上釋出用於彙總模式的資料。
其他用於可擴充套件資料可用性的引擎
Plasma具有更頻繁的承諾,Dapps儲存鏈上的訊息,具有獨立(“主權”)狀態轉換功能的區塊鏈協議搭載在以太坊上用於資料可用性。
加快跨境交易
- 當前分片設計的弱點:分片之間的通訊有延遲(等待交聯,~6分鐘)
- 解決此延遲的粗略建議是允許一個分片看到另一個分片的根的機制。這可能在大多數時間都有效。
- 快速探索使用者何時想要在分片之間轉移token:他們可以將tx釋出到帶有root的智慧合約(包含預期的token轉移),以及保證金。
- “碎片的merkle root是0x12345,如果這個說法錯了,我同意失去100 ETH(押金)”。
- 在儲存令牌餘額的登錄檔的上下文中,釋出100個ETH存款的使用者(在等待x-shard交易通過時)然後將其餘額更新為條件狀態:如果狀態根宣告是正確的,我有x+轉移amt ,如果不正確我只有原始金額(減去沒收的ETH保證金)。
- 將其視為SC內部的量子疊加(儲存兩種狀態/兩種可能性)。只有當合約通過交聯才能知道原始碎片的狀態根時才解決。
- 然後可以在使用者之間傳遞這種疊加,而不需要他們知道(錢包會顯示樂觀的值,直到約6分鐘後才會傳送交聯)。
一般用途隱私
ZEXE:基於UTXO的系統,可以保護隱私。
第2層計算的好處
- 從哲學上講,第1層不需要過於複雜來優化屬性,塊時間,x-shard通訊,x-shard同步訊息支援,隱私等。
- 從理論上講,ETH 2.0階段3可能永遠是足夠的,不需要超級二次分片。
- 例外情況是增加分片或更新加密。
- 其他區塊鏈已經提出了這個主張,但實際情況是,一旦你擁有可擴充套件的資料可用性和足夠的表現力,至少要驗證zKSnarks和狀態轉換(功率和複雜性的最低閾值),你可以在頂部建立所有必要的L2。
- L1可能變得越來越難以改變,但如果它們處於可擴充套件資料可用性之上(2.8 mb/sec),這對計算L2來說是好的。
問題交流
問:L2內容是否排除了使用完整語言不適用於zKsnarks?
TC的數學定義與加密社群的含義有所不同。數學:TC意味著計算機。這是如此籠統,你不能告訴計算何時停止(Snark需要事先知道)。
加密:使用TC意味著表達足以使應用程式具有複雜的內部狀態(plasma,makerdao,uniswap,這些L2的驗證引擎)BTC不能做這些事情,ETH可以。ZEXE是基於UTXO的模型,但也可以。
TC是錯誤的詞,但是你可以做一些足夠表達的事情來構建zKsnarks中的應用程式。
問:我們是否應該擔心熊市期間30%的雜湊率損失?
這是一個問題,但不是真正需要擔心的事情。ETC(以太坊經典)遭到攻擊,但只有3%的ETH鏈雜湊值。如果它成為一個重要的問題,那麼第0階段可以用作1.0鏈POW客戶端的終結機制。然後,51%的攻擊只允許審查塊,而不是恢復塊。
問:基礎層和應用層之間的去中心化程度總會存在競爭。資料可用性和SNARK總是mean集中化?[部分聽不見]
這個新的L2類非常有趣,不需要解決資料可用性問題。集中化可以減少。比較Plasma和Rollup:plasma資料可用性問題意味著需要有一個actor,如果惡意,他可以浪費使用者2周的coin鎖定時間。如果轉發者消失,Rollup沒有資料可用性問題,另一個可以迅速取代他們的位置。可能的傷害減少,像Rollup這樣的L2是解決方案的一部分。
問:在進行跨域通訊時,你是否正在考慮兩階段提交協議[聽不清]?
合約yanking有助於解決火車和酒店問題。(與不同分片上的2個物件進行互動)ETH鏈是否應支援L1上的同步?不,它引入了太多的複雜性。
現在,在兩個交聯之間,你可以計算分片中的狀態轉換,作為分片和信標鏈中資料的函式。不依賴於其他分片中發生的事情。
具有同步交叉分片呼叫會破壞此不變數,使狀態計算遊戲變得更加複雜,儘管你可以實現類似Rollup的L2,這將有助於支援同步交叉分片呼叫。
問:“第三方”L2解決方案(Celer)與其他以太坊L2解決方案之間的關係是什麼?
Celer是一個提供自己的資料可用性解決方案的L2,Plasma也是這樣做的。Rollup執行計算offchain並在鏈上處理資料可用性。有不同的權衡。
======================================================================
分享一些以太坊、EOS、比特幣等區塊鏈相關的互動式線上程式設計實戰教程:
- EOS教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智慧合約開發與部署、使用程式碼與智慧合約互動等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
- 深入淺出玩轉EOS錢包開發 ,本課程以手機EOS錢包的完整開發過程為主線,深入學習EOS區塊鏈應用開發,課程內容即涵蓋賬戶、計算資源、智慧合約、動作與交易等EOS區塊鏈的核心概念,同時也講解如何使用eosjs和eosjs-ecc開發包訪問EOS區塊鏈,以及如何在React前端應用中整合對EOS區塊鏈的支援。課程內容深入淺出,非常適合前端工程師深入學習EOS區塊鏈應用開發。
- java以太坊開發教程,主要是針對java和android程式設計師進行區塊鏈以太坊開發的web3j詳解。
- php以太坊,主要是介紹使用php進行智慧合約開發互動,進行賬號建立、交易、轉賬、代幣開發以及過濾器和交易等內容。
- python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
- 以太坊入門教程,主要介紹智慧合約與dapp應用開發,適合入門。
- 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
- ERC721以太坊通證實戰,課程以一個數字藝術品創作與分享DApp的實戰開發為主線,深入講解以太坊非同質化通證的概念、標準與開發方案。內容包含ERC-721標準的自主實現,講解OpenZeppelin合約程式碼庫二次開發,實戰專案採用Truffle,IPFS,實現了通證以及去中心化的通證交易所。
- C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括賬戶管理、狀態與交易、智慧合約開發與互動、過濾器和交易等。
- java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Java程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
- php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Php程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
- c#比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在C#程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是C#工程師不可多得的比特幣開發學習課程。
- tendermint區塊鏈開發詳解 ,本課程適合希望使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI介面、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操程式碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。
匯智網原創翻譯,轉載請標明出處。這裡是 transcript可擴充套件的以太坊區塊鏈作為資料層