技術向 | 普通開發者如何掘金以太坊2.0

買賣虛擬貨幣

​Comunion 區塊鏈知識學習社羣是由 Comunion 發起並運營的區塊鏈領域知識分享社群。

其目標是: 構建國內質量最高的區塊鏈知識分享社群。

Comunion -去中心化組織(DAO)協作網路

下一代組織形式與創業互助網路

Comunion 是一個去中心化組織(DAO)協作網路,透過區塊鏈重塑傳統的人才交易和組織形式 ,建立數字時代的全新商業基礎設施和價值轉化機制,讓勞動價值像資本一樣自由流通、交易和積累。

本次是 Comunion 區塊鏈知識學習社羣第 1 期線上活動,後面我們會繼續為大家帶來高質量的區塊鏈領域分享,歡迎持續關注!

本次分享嘉賓是《深入理解以太坊》作者;星鏈科技技術負責人,中國企業以太坊聯合發起人,前華信區塊鏈技術總監;有10 餘年軟體架構和國際專案經驗,目前專注於區塊鏈底層協議、智慧合約安全以及隱私保護研究的專家——王欣

以下是王欣老師帶來的精彩分享:

1.以太坊的發展之路

這是一張2019年的以太坊路線圖,我們看到從2013年底,以太坊創始人Vitalik Buterin釋出了以太坊初版白皮書,啟動了專案,到現在已經不知不覺走過了6個年頭。

2014年7月24日起,以太坊進行了為期42天的以太幣預售。到9月份,以太坊透過預售一共募集到 31,531 個比特幣,根據當時的比特幣價格,以太坊成功募集到了超過 1800 萬美元,根據 CoinTelegraph 的報道,以太坊“作為最成功的眾籌專案之一,將會被載入史冊”。

到了2015年7月30日,以太坊Frontier網路釋出。開發者們開始在Frontier網路上開發去中心化應用,礦工開始加入網路進行挖礦。礦工自身透過挖礦得到代幣獎勵,另一方面也提升了整網的算力,降低被駭客攻擊的風險。

Frontier是以太坊發展過程中的第一個里程碑,它雖然在開發者心目中的定位是beta版本,但在穩定性和效能方面的表現遠遠超出了任何人的期望,從而吸引更多的開發者加入構建以太坊生態的行列。

2016年3月14日(π日),以太坊平臺的第二個主要版本Homestead對外發布,同時也是以太坊釋出的第一個正式版本。

2017年9月18日,以太坊開發團隊開始測試”大都會”(Metropolis)版本的第一階段:拜占庭分叉。2017年10月16日,主網在4,370,000區塊高度成功完成拜占庭分叉。

此次硬分叉將為智慧合約的開發者提供靈活的引數;同時,為後期大都會升級引入zkSnarks零知識證明等技術做了準備;延遲引爆難度炸彈,將冰河期推遲1年;挖礦難度顯著降低,因此以太坊平臺的交易速度會明顯提高,對應的礦工們挖礦的收益從每區塊5個以太幣降低到3個。

2019年6月,“君士坦丁堡”硬分叉在 7080000 區塊高度完成,升級中包括五項改進方案。

  • 為資料儲存的變更引入更公平的定價方法

  • 使智慧合約開發商受益

  • 更良好的促進基於狀態通道和鏈下交易的特定可擴充套件性解決方案

  • 隨著更多事物被轉移到第二層

  • 將塊採礦獎勵從 3 ETH減少到 2 ETH,以及延遲以太坊的難度炸彈 12 個月

就在上個月,以太坊正式完成了“伊斯坦布林”分叉,包含六個以太坊改進提案(EIP),解決的主要問題是:拒絕服務(DDoS)攻擊彈性,降低Gas成本,增加基於zcash的Equihash工作量證明。

我們看到以太坊作為區塊鏈2.0技術的代表,不斷髮展,不斷創新,成為了業界數一數二的明星專案。

這張圖可以看到,以太坊的專案資產規模穩居第2的位置,遠遠超過其他加密貨幣專案。這於以太坊技術的高度有著非常密切的關係。以太坊背後的開發者也是非常具有極客精神的一群人。

2.以太坊核心技術

回到技術層面,我們可以看到以太坊的技術架構也是一種分層架構。從上到下,依次是應用層,合約層,協議層。協議層包含了EVM虛擬機器,區塊管理,KV資料庫,共識演算法,P2P網路等基本元件。

其中智慧合約是以太坊最最核心的技術,它的實現基於以太坊內部的EVM虛擬機器,智慧合約可以完成任何程式碼邏輯,從而支援多樣化的商業流程,以太坊中使用solidity語言編寫智慧合約。

智慧合約構建了以太坊豐富的DApp生態,讓區塊鏈更加落地,更加能與各行各業相結合,更加方便與物聯網、大資料、人工智慧、雲端計算這些技術相結合。

這也是以太坊區別於比特幣即區塊鏈1.0系統的最大魅力所在。

3.企業以太坊

大家知道以太坊是一個公鏈專案,那麼和我們的日常生活,還有我們開發者有什麼關係呢?

我們怎樣利用好以太坊這個技術資源,用到自己的專案上,或者做一些傳統行業的創新?這一直是困擾行業從業者最大的問題。

目前可能最成功的應用還是圍繞著數字資產的金融生態,比如交易所。但是在資產交易之外,人們的探索也一直沒有停止。

早在2017年,以摩根大通、芝加哥交易所集團、紐約梅隆銀行、湯森路透、微軟、英特爾、埃森哲等20多家全球頂尖金融機構和科技公司成立的企業以太坊聯盟。

這是企業以太坊的協議棧,我們看到比以太坊公鏈多了不少內容,它也更偏向一種企業架構,更加符合聯盟鏈的定義,在隱私保護、跨鏈通訊、共識演算法方面做了改進和最佳化。

4.技術改進方向

我本人也是2017年和企業以太坊EEA有過一些交流,參加過他們組織的電話討論會議。但是由於聯盟是一個鬆散的組織,缺少明確的發展目標和合作機制,直到今天也沒有什麼實質性的進展。

用他們自己的話說,就是組織內有太多的politics。其實這個聯盟還是以摩根大通的貢獻為主,他們推出了Quorum技術框架,就是以太坊在企業應用的比較好的原型。

螞蟻區塊鏈的BaaS平臺,微軟雲都是支援Quorum框架的。

那麼,現在區塊鏈的技術也遇到了瓶頸,也就是以太坊2.0概念被提出的原因。

主要的最佳化集中在三個方向:效能、隱私和手續費。

5.以太坊2.0

Eth2.0的將分三個階段實現:

1 - 階段0被稱為信標鏈,涉及核心部分、網路、簽名方案和隨機性。它在 Prysm Labs 建立的 Sapphire 測試網上執行。如果你有 Goerli ETH,則可以加入該測試網,質押gETH。

2 - 階段1是面向64條獨立執行分片鏈的協議實現。每個分片都可以執行網路的一種狀態。例如,你可以將 Maker 放在一個分片上,將其他 DeFi 應用放在另一個分片上,將 Eth2 鏈放在另一個分片上,將 Crypto Kitties 放在另一個分片上,依此類推……

3 - 階段2支援執行引擎,實現整個空間的交易和帳戶模型。執行引擎使系統的複雜度最小。

不知道是否還會推出更多的後續階段。儘管研究人員希望看到更多的 Eth2.0 分片鏈開發規劃,但這一切仍處於發展的早期。

這個是以太坊2.0的分層框架,主要變化是增加了Beacon Chain和Shard Chain。Shard翻譯為分片,類似於分散式作業系統,不同分片內的交易可以並行處理。

經過一段時間的開放討論,以太坊的2.0技術也逐漸開始收斂:分片數量從之前的 1024 減少到 64,分片區塊大小從(目標值 16,上限值 64)kB增加到(目標值 128,上限值 512)kB。分片總容量為 1.3-2.7 MB/s,具體值取決於時隙(slot time)

如果需要的話,分片數量和區塊大小可隨時間的推移而增加,比方說 10 年後最終達到 1024 個分片,以及 1 MB 區塊。

在 L1 和 L2 層實施了諸多簡化方案:

  • 所需的分片鏈邏輯更少

  • 因為 “原生的” 跨分片通訊可以在 1 個時隙內完成,所以無需透過 Layer-2 為跨分片通訊加速

  • 無需透過去中心化交易所來促進跨分片交易費手續的支付

  • 執行環境能夠進一步簡化

  • 無需再混合序列化和雜湊

當然,這也引入了一些問題:

  • 信標鏈的開銷更大

  • 分片區塊產生時間更長

  • 對 “突增性” 頻寬需求更高,但對 “平均” 頻寬的需求更低

TPS一直是區塊鏈被關注的重要瓶頸,我們知道比特幣和以太坊都採用了PoW共識演算法,TPS也就10左右。

最近以太坊2.0研究中引入了zk-rollup技術,它理論上可以將交易提高到3000TPS。

接近中心化系統的效能,大家知道,Visa 網路目前平均TPS為2000。

這是使用zk-rollup技術的以太坊理論效能對比

每個批次(一個批次就是一個 zkRollup 區塊)包含 2048 筆(簡單的以太坊)交易和一個 zk 證明。但是,由於實施了 EIP 1108 和 EIP 2028 這兩個提案,交易和證明的 gas 成本現在都發生了變化:每筆交易為8.125位元組。

當前每筆交易只需耗費16個gas /位元組,因此每筆交易 gas 花費為 8.125*16=130 gas。由於每批次有2048筆交易,因此每批次的交易成本為130 * 2048 = 266,240 gas。

如果將15個批次插入以太坊區塊,由於每個批次可容納 2048 筆交易,這意味著我們可以讓每個區塊打包15 * 2048 = 30,720筆交易。

30,720個交易/ 15秒=每秒2048筆交易。

當然以上知識理論推導,還存在一些實際問題需要解決:每個 zkRollup 批次都需要簡短的加密證明(zk-SNARK),以證明該批次中交易的完整性。事實證明,生成此證明的計算費用十分昂貴。這才是達到理論吞吐量限制的主要瓶頸。

目前使用一個 CPU 和三個 GPU,需要幾分鐘時間才能生成一個這樣的證明。儘管透過平行計算可以顯著改善效能,但是將證明生成時間從幾分鐘減少到幾秒鐘,同時保持合理的成本,仍然是一個重要的挑戰。

最後,再講一下零知識證明,它被用於保護區塊鏈上的資料隱私,非常適合用於醫療行業的電子病歷(HDR)場景。

理解零知識證明,大家可以回顧一下阿里巴巴和四十大盜的故事:

當強盜向阿里巴巴拷問開啟山洞石門的咒語時,他對強盜說:“你們在離開我一箭遠的地方,用弓箭指著我,當你們舉起右手我就唸咒語開啟石門,舉起左手我就唸咒語關上石門,如果我做不到或逃跑,你們就用弓箭射死我。”

阿里巴巴證明了他知道咒語,同時也沒有洩漏咒語的具體內容。

zk-SNARKs, Zk-STARKs和 BulletProofs(防彈證明)是零知識證明用於區塊鏈隱私技術的3種主要技術。對比來看:

1 - Bulletproofs 和 Zk-STARKs 不需要可信設定,zk-SNARKs則需要可信設定;zk-STARKs:透過證明者與驗證者之間的互動來執行,以一種有效的數學方法,使得驗證者透過驗證每一個步驟,最終確信證明者確實知道某個資訊或者擁有某種權益。

其特點是:證明快、驗證快,但證明體積大 SNARK指無需雙方互動,證明人單方出具即可,不需要反覆在雙方之間傳遞資訊。其特點是:證明慢、驗證快,證明體積小。

2 - 證明速度對比:Zk-STARKs > zk-SNARKs > Bulletproofs

3 - 檔案大小:zk-SNARKs < Bulletproofs <Zk-STARKs

簡單一句話:Zk-STARKs 太大,bulletproofs太慢,優點是不用預裝,zk-SNARKs最優。

目前已經有相當成熟的第三方庫,可以用於零知識證明的開發和研究。

這一領域也是學術界研究的熱點,最近幾個月宣佈了很多 zk-SNARK 構造相關的新突破。新的發現是臭名昭著的“可信設定”目前來看是多餘的,意味著可以使用通用計算。然而,很難找到關於這些新構造的可以理解的資訊。

新的零知識證明構造解決了設定過程的限制,這意味著像智慧合約這樣的任意程式碼都可以作為 zk-SNARKs 執行。通常有兩種做法:

透明設定:設定過程建立一個參考字串,是公共的,但是並不會產生有毒廢料。這類似於 zk-STARK 工作方式。Fractal、Halo 和 SuperSonic-CG 都使用了透明設定方式。這種方法的缺點是證明大小通常很大。Factal 和 zk-STARK 證明可能高達250kB大小,這對於區塊鏈應用來說是不切實際的。

Fractal 團隊告訴我,他們正在努力縮小證明的大小。Halo 和 SuperSonic 具有10kB甚至更小的證明尺寸。(注意:zk-STARK 是特定的零知識證明的名稱,類似於 Groth26 或 Fractal;

通用設定:設定過程建立結構化字串 (structured reference string),會產生有毒廢料,但建立不再侷限於單一電路。相反,一個參考字串可以與無限數量(具有一定上限)的任意電路一起使用。例如 Marlin、SuperSonic-RSA 和 Plonk。

儀式結束後,可以更新這三個構造的參考字串以提高安全性:如果當前的有毒廢料洩漏,則只需更新建立過程來再次保護系統。(一些通用的 zk-SNARK,例如 AuroraLight 和 Libra 使用靜態不可升級的通用設定。我們不會在本篇部落格中討論這些內容)。

表中是一些zksnark演算法的效能對比。在證明方方面,為每一個 zk-SNARK 構造建立證明需要O(n log n) 的時間。差異主要是證明的大小、驗證時間和參考字串的大小。

綜上所屬,我們主要考察了以太坊2.0的三個技術點:sharding,zkrollup和zksnark。

涉及到比較多的理論知識和演算法,需要花點時間才能理解。不過重點還是建議放在這些演算法有什麼用途,以及如何使用上面。

觀眾提問 Q&A

Q1 - 以太坊完成了分叉,那麼會對後續產生什麼主要影響嗎?

A:以太坊的分叉,就是一種軟體升級。以太坊的升級方向,就是以太坊社羣希望發展的方向,所以隨著一次次升級,網路會更加安全,更加高效,也更加符合社羣治理的思想。

這個我們平實軟體開發開發的快速迭代是一個道理。唯一不同的是,以太坊是一個承載了千億資產的金融系統,每次升級資產的安全性和服務的連續性沒有收到絲毫的影響。這也是這個專案值得關注的原因。

Q2 - 方便簡單介紹一下 solidity 語言嗎?

A:solidity是一種語法非常類似javascript的以太坊特有的指令碼語言。它有高階語言的大多數特性,最常用的操作就是對以太坊的賬戶,賬戶中的餘額進行操作。

solidity非常適合用於實現數字資產,比如ERC20,ERC721,ERC777都是非常常用的數字資產型別。

之前非常熱鬧的幣圈專案資產都是圍繞ERC20在做文章,以以太貓為代表的區塊鏈遊戲則是利用了ERC721標準。

Q3- Q1.區塊鏈平臺的迭代,受到公眾性的影響,不能太快太激進,比如會有分叉的問題,老師覺得這個問題未來能夠解決嗎?


Q2.在軟體平臺上,通常會出現馬太效應,也就是勝者通吃,現在以太坊位居平臺第一,是否其他平臺就沒有機會了呢?


Q3.非中心化,也就是DAO的理論,好像是從以太坊開始才滲透的,但實際上權力的集中會帶來效率,這個問題怎麼看呢?

A:首先,明確一點,區塊鏈專案的成功不僅僅取決於技術。V神發文也提到,社羣遠比程式碼重要。程式碼只是實現社羣治理和規則的工具。

在解決一些基本問題上,並不會用到很高深的技術。反倒是區塊鏈中的智慧合約和通證機制,是組織改進非常核心的內容。

區塊鏈平臺的迭代,現在可以說滿足不少的應用場景了。但是以太坊是為全球使用者服務,所以技術難度會更大。

我們研究區塊鏈,還是更多放在如何將區塊鏈技術落地,改造一個行業,或者解決一些核心社會問題,比如:醫療、教育等

以太坊的DAO是非常好的思路,去中心化也是相對的,也就是多中心化。PoS的思想就是,干係人關係越大,投票的權重也越大。不是每人都可以投票。

觀眾理解:
Q1.同理,也許其他比如非公鏈的應用,就像我們Comunion是可以快速迭代的,所以沒問題。
Q2.應用場景有很多,而以太坊太大,它不能對所有場景提供有效的解決方案,因此需要其他平臺。
Q3 非中心化的問題並不是最主要的,實際上利用區塊鏈可以實現更高效的分工,並不是取代。

Q4 - 請問王老師, 接下來以太坊生態中,對於普通的個人開發者,最大的機會在哪裡呢?

A:我們面向的未來是一個可程式設計的社會,有大量的商業規則和邏輯需要轉化為智慧合約,人工智慧解決了生產力的問題,區塊鏈能夠更加有效和公平地治理這些生產力。咱們開發者瞭解這些原理,就可以在具體的某個場景中,幫助實現這些邏輯,貢獻社會價值。

當然區塊鏈的底層也有很多技術挑戰,但是這更加適合有一定學術研究基礎的同學了。

Q:是否可以理解為:初學者很難一下子做複雜的開發,需要透過簡單的任務,不同的實現,成為一名標準的以太坊開發者?

A:是啊,技術參與建議還是放在區塊鏈應用方向,區塊鏈底層不太適合大多數人。

比如做區塊鏈的工具就是很好的思路,想imtoken類似的引用。比如:etherscan這類。

Q5 - dapp方向有什麼好的建議嗎?

A:廣義上講,我覺得有幾個方向吧,一個是金融類,一個是個人資訊類。金融就是數字資產的交易,投資,增值等,因為這個領域也越來越合規了,監管已經進來。個人資訊的隱私保護,越來越被看重,個人信用、健康檔案,個人消費畫像,越來約需要恢復主權。

Comunion的DAO,這是一個非公司,但超越公司的組織。不同背景,不同角度的思想在一起碰撞,會產生非同一般的效果。

DAO的財務和人員管理,都是非常需要DApp這類工具幫助的。

免責聲明:

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

推荐阅读

;