觀點:以太坊2.0技術分享
二級標題
二級標題
01 以太坊的發展之路
這是一張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 區塊高度完成,升級中包括五項改進方案:
1)為數據存儲的變更引入更公平的定價方法;
2)使智能合約開發商受益;
3)更良好的促進基於狀態通道和鏈下交易的特定可擴展性解決方案;
4)隨著更多事物被轉移到第二層;
5)將塊採礦獎勵從3 ETH減少到2 ETH,以及延遲以太坊的難度炸彈12 個月。
就在上個月,以太坊正式完成了「伊斯坦布爾」分叉,包含六個以太坊改進提案(EIP),解決的主要問題是:拒絕服務(DDoS)攻擊彈性,降低Gas成本,增加基於zcash的Equihash工作量證明。
二級標題
二級標題
02 以太坊核心技術
回到技術層面,我們可以看到以太坊的技術架構也是一種分層架構。從上到下,依次是應用層,合約層,協議層。協議層包含了EVM虛擬機,區塊管理,KV數據庫,共識算法,P2P網絡等基本組件。
其中智能合約是以太坊最最核心的技術,它的實現基於以太坊內部的EVM虛擬機,智能合約可以完成任何代碼邏輯,從而支持多樣化的商業流程,以太坊中使用solidity語言編寫智能合約。
二級標題
二級標題
03 企業以太坊
大家知道以太坊是一個公鏈項目,那麼和我們的日常生活,還有我們開發者有什麼關係呢?
我們怎樣利用好以太坊這個技術資源,用到自己的項目上,或者做一些傳統行業的創新?這一直是困擾行業從業者最大的問題。
目前可能最成功的應用還是圍繞著數字資產的金融生態,比如交易所。但是在資產交易之外,人們的探索也一直沒有停止。
二級標題
二級標題
04 技術改進方向
我本人也是2017年和企業以太坊EEA有過一些交流,參加過他們組織的電話討論會議。但是由於聯盟是一個鬆散的組織,缺少明確的發展目標和合作機制,直到今天也沒有什麼實質性的進展。
用他們自己的話說,就是組織內有太多的politics。其實這個聯盟還是以摩根大通的貢獻為主,他們推出了Quorum技術框架,就是以太坊在企業應用的比較好的原型。
螞蟻區塊鏈的BaaS平台,微軟雲都是支持Quorum框架的。
階段2
二級標題
05 以太坊2.0
階段0
階段0
階段1
階段1
階段2
階段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)所需的分片鏈邏輯更少;
2)因為「原生的」 跨分片通信可以在1 個時隙內完成,所以無需通過Layer-2 為跨分片通信加速;
3)無需通過去中心化交易所來促進跨分片交易費手續的支付;
4)執行環境能夠進一步簡化;
5)無需再混合序列化和哈希。
當然,這也引入了一些問題:
1)信標鏈的開銷更大;
2)分片區塊產生時間更長;
3)對「突增性」 帶寬需求更高,但對「平均」 帶寬的需求更低。
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 太大,bulletproofs太慢,優點是不用預裝,zk-SNARKs最優。
這一領域也是學術界研究的熱點,最近幾個月宣布了很多zk-SNARK 構造相關的新突破。新的發現是臭名昭著的「可信設置」目前來看是多餘的,意味著可以使用通用計算。然而,很難找到關於這些新構造的可以理解的信息。
新的零知識證明構造解決了設置過程的限制,這意味著像智能合約這樣的任意代碼都可以作為zk-SNARKs 運行。通常有兩種做法:
透明設置:設置過程創建一個參考字符串,是公共的,但是並不會產生有毒廢料。這類似於zk-STARK 工作方式。 Fractal、Halo 和SuperSonic-CG 都使用了透明設置方式。這種方法的缺點是證明大小通常很大。 Factal 和zk-STARK 證明可能高達250kB大小,這對於區塊鏈應用來說是不切實際的。
Fractal 團隊告訴我,他們正在努力縮小證明的大小。 Halo 和SuperSonic 具有10kB甚至更小的證明尺寸。 (注意:zk-STARK 是特定的零知識證明的名稱,類似於Groth16 或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:以太坊完成了分叉,那麼會對後續產生什麼主要影響嗎?
答:以太坊的分叉,就是一種軟件升級。以太坊的升級方向,就是以太坊社區希望發展的方向,所以隨著一次次升級,網絡會更加安全,更加高效,也更加符合社區治理的思想。
這個我們平時軟件開發的快速迭代是一個道理。唯一不同的是,以太坊是一個承載了千億資產的金融系統,每次升級資產的安全性和服務的連續性沒有收到絲毫的影響。這也是這個項目值得關注的原因。
Q2:方便簡單介紹一下solidity 語言嗎?
答:solidity是一種語法非常類似javascript的以太坊特有的腳本語言。它有高級語言的大多數特性,最常用的操作就是對以太坊的賬戶,賬戶中的餘額進行操作。
solidity非常適合用於實現數字資產,比如ERC20,ERC721,ERC777都是非常常用的數字資產類型。
之前非常熱鬧的幣圈項目資產都是圍繞ERC20在做文章,以以太貓為代表的區塊鏈遊戲則是利用了ERC721標準。
Q3:區塊鏈平台的迭代,受到公眾性的影響,不能太快太激進,比如會有分叉的問題,老師覺得這個問題未來能夠解決嗎?在軟件平台上,通常會出現馬太效應,也就是勝者通吃,現在以太坊位居平台第一,是否其他平台就沒有機會了呢?非中心化,也就是DAO的理論,好像是從以太坊開始才滲透的,但實際上權力的集中會帶來效率,這個問題怎麼看呢?
答:首先,明確一點,區塊鏈項目的成功不僅僅取決於技術。 V神發文也提到,社區遠比代碼重要。代碼只是實現社區治理和規則的工具。
在解決一些基本問題上,並不會用到很高深的技術。反倒是區塊鏈中的智能合約和通證機制,是組織改進非常核心的內容。
區塊鏈平台的迭代,現在可以說滿足不少的應用場景了。但是以太坊是為全球用戶服務,所以技術難度會更大。
我們研究區塊鏈,還是更多放在如何將區塊鏈技術落地,改造一個行業,或者解決一些核心社會問題,比如:醫療、教育等。
以太坊的DAO是非常好的思路,去中心化也是相對的,也就是多中心化。 PoS的思想就是,幹係人關係越大,投票的權重也越大。不是每人都可以投票。
Q4:請問王老師, 接下來以太坊生態中,對於普通的個人開發者,最大的機會在哪裡呢?
答:我們面向的未來是一個可編程的社會,有大量的商業規則和邏輯需要轉化為智能合約,人工智能解決了生產力的問題,區塊鏈能夠更加有效和公平地治理這些生產力。咱們開發者了解這些原理,就可以在具體的某個場景中,幫助實現這些邏輯,貢獻社會價值。
當然區塊鏈的底層也有很多技術挑戰,但是這更加適合有一定學術研究基礎的同學了。
技術參與建議還是放在區塊鏈應用方向,區塊鏈底層不太適合大多數人。
比如做區塊鏈的工具就是很好的思路,像imtoken類似的引用。比如:etherscan這類。
Q5:DApp方向有什麼好的建議嗎?
答:廣義上講,我覺得有幾個方向吧,一個是金融類,一個是個人信息類。金融就是數字資產的交易,投資,增值等,因為這個領域也越來越合規了,監管已經進來。個人信息的隱私保護,越來越被看重,個人信用、健康檔案,個人消費畫像,越來越需要恢復主權。
Comunion的DAO,這是一個非公司,但超越公司的組織。不同背景,不同角度的思想在一起碰撞,會產生非同一般的效果。
DAO的財務和人員管理,都是非常需要DApp這類工具幫助的。


