專訪資深以太坊技術專家楊鎮:分片技術可否破解以太坊寒冬之危?

image

4月30日V神發佈的分片技術使2018年成爲以太坊之年;隨着ICO寒冬到來,以太坊價格暴跌,截至9月7日以太坊(ETH)下跌超過70%;而繼而傳出的芝加哥期權交易所(CBOE)將要在2018年末推出以太坊(ETH)期貨的消息,或許會給低迷的以太坊帶來起色。程序員

一波三折的以太坊面臨的「歸零」爭議,又將如何突圍?爲此,有聲音指出,以太坊效率低下,解決這一關乎整個社羣生死存亡問題,或將爲以太坊帶來新的起色。而分片技術正是着眼於改進主鏈自己的協議來提升它的性能的一項技術。算法

矩陣數字經濟智庫有幸專訪了資深以太坊技術專家楊鎮,矩陣數字經濟智庫常駐專家,從以太坊所面臨的問題到解決方案,再到片技術以及區塊鏈應用等多方面解構以太坊技術突圍之路。 安全

1

楊鎮:「老程序員」的以太坊技術佈道之路

性格上循規蹈矩,執着於精益求精的楊鎮在大學畢業後前後從事過軟件外包行業、企業內部業務系統的全生命週期工程實踐以及工程過程標準(CMMI)軟件質量管理等工做。網絡

在通過了接近十年的軟件開發、軟件工程實踐和工程方法論的積累以後,在2011年入職聯想在其內部 IT 團隊任一線技術經理。但願能在所謂的「大公司」裏尋求發展。儘管在兩年的大公司生涯中表現還算出色,但他一直沒有放棄追尋適合本身的生活和工做方式。數據結構

image

在不到三年的創業經歷以後,楊鎮在 2016 年初從新迴歸企業 IT 服務領域,加入一家作企業資產證券化業務的創業公司任 CTO,在不到兩年的時間裏幫公司打造了一個 ABS 業務的 SaaS 產品。若是說這是一次對成熟技術產品平臺的追尋;那麼 2017 年初評估用區塊鏈技術來支撐公司相關業務的可能性,就是一次對全新技術方案的勇敢嘗試。多線程

雖然最終由於種種緣由並無實際在公司業務中應用區塊鏈技術,但在不斷的技術探索中楊鎮看到了以太坊的價值,也就是「智能合約」平臺的潛力,也發現了我的發展的另外一種可能。本着學習的目的,他花了7個月的時間用業餘時間逐字逐句翻譯了 Homestead 官方文檔。以此爲契機,他開始接觸區塊鏈(以太坊)技術社區,對以太坊黃皮書的中文版進行了獨立校正,並做爲 Solidity 官方文檔中譯項目的貢獻者、管理員和主要的校正人蔘與到中文社區貢獻中。在今年七月份,他還與一個旨在打造高質量的區塊鏈技術課程的重運營模式在線技術教育社區/平臺合做,製做了一個以太坊智能合約高級開發的在線課程(https://www.jianshu.com/p/19781df7af93)架構

同時,楊鎮表示在將來會將主要精力用在區塊鏈技術的佈道/技術推廣上,也但願能用本身的力量幫助國內有志於從事區塊鏈技術的同行節省一些從入門到精通的時間,但願能逐步培養出真正「靠譜」的區塊鏈/智能合約開發者。分佈式

楊鎮目前主要參與的 Hiblock 區塊鏈社區,已經進行了兩個區塊鬆(區塊鏈技術黑客馬拉松),屢次線上、線下技術分享/見面會,同時也有自媒體渠道、網站、不少項目方和合做夥伴,日前也已經完成了本身的第一個產品,目前來講進展順利。性能

只是,真正沉澱下來的有質量、也有興趣參與社區的開發者還不多,這也是目前各個社區所面臨的共同的問題,也須要一些積累的時間;畢竟作技術仍是無法速成的,幾個月就成爲「專家」的天才實在是百裏挑一。學習

2

「以太坊之年」駁議

有人認爲今年以太坊的分佈式應用 DApps 將主要解決擴展規模障礙,2018年將是「以太坊」之年。但醉心以太坊技術的「老程序員」楊鎮表示並不一樣意這種說法:

以太坊目前的版本拜占庭(BYZANTIUM)在 2017 年 9 月就已經上線。2018 年裏以太坊沒有任何大的修改或者加強,Solidity 編譯器有小版本升級,但沒有太大區別。

image

以太坊從誕生開始就能夠認爲是一個理想主義的實驗性的平臺:不過多地人爲干預,讓生態中的參與者自發地去進化;重大決策過程也會考慮普通參與者的意見;以太坊社區對理想的堅持,應該獲得尊重和讚許。以太坊是世界上第一個智能合約平臺,也是目前對開發者最友好的、生態最健全的智能合約平臺,因此它的地位,短期內依然不會被撼動。

不過以太坊團隊自身工程能力的欠缺也已經不是什麼祕密了;從 2016 年 Gavin Wood 博士的離開開始,以太坊早期的核心開發團隊絕大多數已經離開了以太坊社區。而把全部計算都放到一個單線程(單進程)的「世界計算機」上是否是一個正確的、有效的方法,恐怕也已經早有定論(從軟硬件工程的角度,分層架構是必然選擇,這也已是業內共識)。只是以太坊已經成爲一個成熟的生態,要修改它,代價太高,因此須要格外謹慎。

楊鎮認爲 V 神對於以太坊的堅守大概是外界看好它的最主要的緣由,而以太坊的 research 團隊的水平也是能夠期待的。這也讓咱們有理由相信以太坊社區在將來一兩年以內能拿出真正革命性的主鏈擴容方案,但工程實踐上的表現仍然有待觀察。

3

以太坊的問題及解決方案

以太坊發展至今,已經暴露出一系列的問題和矛盾,主要存在着性能不足、治理結構不全面、存儲空間劇增等方面的問題,對此楊鎮基於對以太坊的深刻研究給咱們作出瞭解答。

(1)性能方面的不足,是基礎技術決定的。一個分佈式全球共識系統,一個單線程的「世界計算機」,性能固然不可能與成熟的中心化技術相比;但就目前的總體計算量和應用普及程度來說,大概也還並非致命傷。不過這個性能問題也是目前以太坊社區在主要解決的 layer1 擴容問題,具體地說,就是指正在設計中的 Shasper(Casper+Sharding)協議的實施。

(2)治理方面,通常能夠分爲鏈上治理(on-chain governance)和鏈外治理(off-chain governance)。以太坊社區的風格是不過多地人爲干預,除了 EIP(Ethereum Improvement Proposal)以外,並無成體系鏈外治理設計。而鏈上治理,目前以太坊是沒有這樣的技術機制的;將來基於 PoS 的共識協議(Shasper)實施以後,就可能有一些相應的技術方案來支持所謂的鏈上治理,但目前這仍是未知數。區塊鏈治理的問題也能夠看做是一種權衡,咱們要選擇更相信技術仍是更相信人性。

**(3)節點數據存儲方面。**基於區塊鏈系統自己的技術特性,像以太坊這樣基於帳戶模型所構建的基礎數據結構,全部帳戶狀態和合約狀態都必需要保存在全部礦工節點和全節點上,並經過在網絡間傳輸的區塊數據進行驗證以達成全網共識,這種設計形成的極度冗餘的數據存儲方式是必然的,也是必須的;其中確實存在全節點的存儲壓力問題,而這在最新的輕節點協議中已有相關設計。

將來以太坊在處理大量的歷史數據時,會採起一種混合方案。一方面,容許全節點對歷史數據(超過 1 年以上的交易/區塊數據)進行隨機丟棄,具體的算法將保證時間越近的數據被丟棄的概率越低;從全網狀態來看,時間越久遠的數據纔有更大的概率在全部節點上都找不到;以此來下降全節點存儲的壓力,同時會給予全節點必定的獎勵以鼓勵它們保留歷史數據(這個設計在目前是沒有的)。

另外一方面,也容許用戶向全節點「租用」存儲空間以保存與用戶指定的帳戶相關的歷史數據;即用戶能夠按期向全節點支付數據存儲費用以保證本身帳戶的歷史數據不被丟棄,這能夠很簡單的經過智能合約實現。經過這樣的一種混合方案,以太坊網絡將能夠逐漸下降/穩定全節點的存儲壓力。這個方案目前也還只是 draft 階段,計劃中它將會根據 Shasper(Casper+Sharding)協議的實施狀況具體排定上線時間。

以太坊社區始終在致力於解決這些已知的問題,但實際進展確實不盡如人意;對此,楊鎮也認爲應該對社區保持信心和耐心,改進方案的最終結果也值得咱們共同期待。

4

「分片時代到來」,分片技術原理

以太坊性能問題一直爲人所詬病,而就在2018年4月,V神發佈了一個新的概念驗證,演示瞭如何把分片擴展解決方案「栓在」以太坊主鏈上,並在Twitter發帖稱「分片即將到來」,將大幅提高以太坊交易處理能力。以太坊分片技術意味着區塊鏈技術如今發展得更加多元,其可擴展性帶寬問題能夠在2020年以前獲得解決。

有人稱「分片」是智能合約發明以來的最大突破。對此,楊鎮也作了技術性的解讀。

所謂分片,是指以太坊主網擴容的技術方案,英文是 Sharding。請注意這是主網擴容,也就是 layer1 擴容。

目前的以太坊主網,實際上是至關於一個單線程(單進程)的在全部礦工和全節點上都會運行來達成共識的一個「世界計算機」,它目前的平均 TPS(Transactions Per Second)大概是在 10 這個量級。

分片(sharding)就是把這個單線程的計算機,擴展爲多線程(目前的設定爲 1024 個線程)計算機,也就是同時能夠有 1024 個 shard 鏈來處理交易;固然,地址/帳戶狀態也就將會分別保存在這 1024 個 shard 鏈上。

這樣作以後,就會產生一個很明顯的問題:由於地址/帳戶已經分散到不一樣的 shard 鏈上了,那麼不一樣的 shard 鏈上的地址之間如何進行交易呢?(這裏須要理解的是:Sharding 方案中的某一個用戶的帳戶/地址僅會存在於某一個 shard 鏈上,而並非把目前的全部帳戶/地址拷貝 1024 份)。

目前是設計了一種叫作 CrossLink(能夠譯爲「交叉連接」)的數據結構來把 shard 鏈的狀態變更通知 PoS 主鏈 beacon 鏈(大概能夠譯爲「信標鏈」)。Beacon 鏈是全部 shard 鏈的公共主鏈,同時也是一個基於 PoS 算法的與目前的 PoW 主鏈協同工做的新主鏈;而 beacon 鏈,就是基於大名鼎鼎的 Casper 協議設計實現的。

Casper 有兩個版本,一個是 V 神和 Virgil Griffith 作的 Casper the Friendly Finality Gadget,簡稱 Casper FFG,它是一個 PoW+PoS 的混合共識算法,也是從目前的 PoW 主鏈向 PoS 主鏈的過渡時期會採用的技術方案;另外一個是 Vlad Zamfir 作的 Casper the Friendly GHOST: Correct-by-Construction,簡稱 Casper CBC,這大概是將來以太坊最終會實施的鏈上治理方案(包含了經濟模型的從新設計)。

Casper 和 Sharing(分片)在很長一段時間內都是兩個獨立的項目,由不一樣的團隊在進行研究。在今年 7 月份,以太坊社區作了一個重大決定:將 Casper 和 Sharding 項目合二爲一。這是由於在研究的過程當中,開發者們逐漸發現它們的相關性實際上是很是強的,不少技術細節須要一併考慮設計,因此最終作出了這個決定。這樣,以太坊的 layer1 擴容方案,就變成了所謂的 Shasper(Sharding+Casper)協議。

Shasper 協議是一個很是大的改進(創新),自己的技術難度也很是高。目前,其協議設計僅完成了大概 70% 左右,不少技術細節也尚未最終肯定。

Shasper 協議目前的設計,已經與原始的 Casper FFG 協議有了一些差異;對此,楊鎮也作了概念性的解讀。

首先要介紹的是在 Shasper 協議中的一些關鍵角色和術語,好比validator(驗證者)、active validator set(活躍驗證者集合)、committee(委員會、活躍驗證者集合的一個僞隨機子集)、proposer(提案者、生成區塊的 validator)、attester(證實人、簽發區塊的 validator)以及 slot(一個 8 秒的時間週期,供提案者和證實人簽發一個區塊)、dynasty transition(朝代更迭、即更新驗證者集合)、dynasty(朝代、自創世區塊開始的朝代更迭次數、也就是朝代序號)、cycle(週期、全部驗證者都有機會作出一個證實的的區塊跨度)、finalized(定稿)、justified(肯定)等等。

Shasper 協議須要在目前的 PoW 主鏈上建立一個用於鎖定 validator 的權益和管理 validator(好比挑選 committee、進行 dynasty transition 等等)的 casper 合約,這是惟一必須的對目前既有主鏈的修改。

而後,但願成爲 validator 的用戶,能夠從本身的帳戶向這個 Casper 合約發送 32 Eth 來「註冊」,這是個相對民主化的設計(也就是每一個地址僅容許、且最多容許用 32 Eth 來進行註冊,而不是像最初的設計那樣不限制這個權益數額,會使某些擁有大量 Eth 的地址有過大的收益)。以後 Casper 合約會把這些「註冊的」地址做爲備選 validator 保存,做爲當前 dynasty 的驗證者集合。固然,Casper 合約裏鎖定的這部分權益,也可能會基於必定的規則進行扣減,也就是協議級的懲罰機制,好比被證實在「做惡/造假」或者長時間「離線/不作簽名」等等。

Casper 合約會爲每一個 shard 鏈選擇一個 committee 用來在這個 shard 鏈上籤發區塊,由 shard 鏈上的區塊所致使的狀態變更會經過 crossLink 記錄到 beacon 鏈上。

顯然,由於全部 shard 鏈是並行工做的,它們會各自生成本身的區塊來記錄交易數據和狀態變更;當交易雙方的地址不在同一個shard 鏈上的時候,這個交易就將影響兩個 shard 鏈的狀態,而由於它們是並行處理的,交易的打包順序並不肯定,因此與它們關聯的 beacon 鏈上的區塊就必定會「分叉」(即在同一時間產生多個 parentHash 同樣的區塊)。

這裏可能不太容易理解,不過咱們能夠參考目前的 PoW 主鏈末端的抖動問題:在 PoW 算法裏,由於全部礦工是並行進行挖礦運算的,那麼因爲網絡延遲的緣由,在一個區塊時間(16 秒)內就頗有可能會產生多個 parentHash 相同的「合法區塊」;在分片的狀況下也是相似的,1024 個 shard 鏈是並行進行交易執行/打包的,目前設定的 slot(也就是區塊時間)是 8 秒,因此由於網絡延遲的緣由,必然會在它們的公共主鏈 beacon 鏈上產生 parentHash 相同的合法區塊。

**Casper 協議,本質上是一個「提案算法(proposal mechanism)」,是用來在同時發生的多個提案所組成的區塊樹中選擇主分支或者「權威鏈(canoncial chain)」的一種共識算法,它也是一種對 BFT(拜占庭容錯)算法的改進。**固然,實際的算法比這裏描述的要複雜的多,其中的技術細節一樣也很是多。

整體來看,Shasper(Sharding+Casper)方案的實現難度是很高的,目前也還有不少的技術細節沒有最終肯定,可能會有一些變數,包括經濟模型的設計(各個參與方的獎勵比例、具體的懲罰機制、PoW 鏈獎勵的削減方案等等)。按照目前的計劃,該方案將於 2020 年上主網,但兩年的時間可能會發生不少事情,社區的工程能力也是使人擔憂的。另外這個方案自己的實際效果如何,大概也只能等到上線以後才能進行評估。

今年6月3日,V神在2018年以太坊技術及應用大會上,發表了題爲《Casper與分片技術最新進展》的演講。以太坊Casper以及以太坊分片技術(Sharding)的最新進展,以及首次透露了做爲Casper節點的獎懲機制。演講當天,以太坊一波強勢拉昇,回到600美圓上方,短時間幾個小時漲幅達到5%。可見,分片技術,獲得了諸多以太坊信仰者的承認。分片技術將來是否會成爲改變以太坊低迷期的關鍵,讓咱們拭目以待。

楊鎮

資深軟件工程師、架構師;區塊鏈技術佈道者,Solidity 官方文檔中譯項目的貢獻者、校正人和項目管理員。

有 17 年的軟件行業從業經驗。2017 年開始參與以太坊技術社區貢獻;獨立中譯了以太坊 Homestead 官方文檔;對以太坊黃皮書中文版進行了獨立校正和增補更新;獨立中譯了以太坊分片技術說明。

目前專一於區塊鏈技術推廣、中文技術社區貢獻以及智能合約開發和安全審計方向。

擴展閱讀:楊鎮老師的分享

【衆說區塊鏈】以太坊分片技術提高100倍處理效率,有多大做用?

衆說區塊鏈:區塊鏈中的側鏈技術

乾貨|以太坊全景介紹及入門學習路徑(分享實錄)

內容來源:矩陣數字經濟智庫

本文做者:熊佰祥

image

相關文章
相關標籤/搜索