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

image

上期《衆說區塊鏈》討論的主題是「區塊鏈在醫療行業的落地」,你們經過阿里健康給常州市醫聯體提供的區塊鏈解決方案,圍繞這個主題分享本身了對區塊鏈在醫療領域落地的見解和看法。git

本期《衆說區塊鏈》討論的主題是「以太坊分片技術」,特約嘉賓楊鎮老師跟你們介紹了以太坊分片技術,並針對你們的疑惑進行了解答。github

主題以太坊的分片技術算法

時間:5月19月(週六)晚9點-10點瀏覽器

特約嘉賓:楊鎮微信

資料:關於分片的技術說明文檔,楊鎮老師進行了中譯,中文版地址:https://github.com/riversyang/sharding/blob/develop/docs/doc.md網絡

討論實錄數據結構

@cynthia:你們好,週六晚9點,HiBlock區塊鏈社區特別欄目《衆說區塊鏈》準時和你們見面啦,我是主持人Cynthia,很是感謝你們對社區的支持。併發

《衆說區塊鏈》由HiBlock區塊鏈社區發起,每週六晚9點,在社羣內組織一個區塊鏈相關主題的討論,在討論過程當中加深社區成員對區塊鏈的理解。負載均衡

五月初,以太坊創始人「V神」Vitalik Buterin表示,以太坊的內部擴展解決方案——分片已經接近完成。以太坊分片旨在將以太坊分紅幾個併發網絡,從而使整個網絡更加高效地擴展,這將有助於緩解以太坊網絡目前所面臨的擁塞問題,從而提高交易速度並下降成本。分佈式

EOS陣前叫囂,以太坊借力「分片技術」能捍衛它的地位嗎?對此你怎麼看?你認爲分片技術能解決目前以太坊存在的擁堵問題並達到提高速度的目的嗎?除了這些優點之外還有哪些優點?又存在哪些劣勢呢?

本期《衆說區塊鏈》討論的主題是「以太坊的分片技術」,你們能夠圍繞這個主題分享本身對分片的見解和看法。

接下來歡迎本期特約嘉賓楊鎮,帶領你們一塊兒聊聊「以太坊的分片技術」

下面有請楊鎮老師帶領你們一塊兒聊聊以太坊的分片。

@何強:你們對分片技術熟悉嗎?

羣成員:大部分是不熟悉的,但很感興趣

@楊鎮:你們好,由於區塊鏈自己的技術限制,公鏈的吞吐量問題(同一時間內交易確認量低)一直是應用角度上最被詬病的一個問題。以太坊解決這個問題的方案就是所謂的分片(sharding)。

分片的方案有不少技術細節,我先摘一端技術說明的譯文給你們分享。

假設用變量 c 來表示一個節點的有效計算能力,那麼在一個普通的區塊鏈裏,交易容量就被限定爲 O(c),由於每一個節點都必須處理全部的交易。二次方分片的目的,就是經過一種雙層的設計來增長交易容量。第一層不須要硬分叉,主鏈就保持原樣。不過,一個叫作 校驗器管理和約 (validator manager contract,VMC)的合約須要被髮布到主鏈上,它用來維持分片系統。這個合約中會存在 O(c) 個 分片 (目前爲 100),每一個分片都像是個獨立的「銀河」:它具備本身的帳戶空間,交易須要指定它們本身應該被髮布到哪一個分片中,而且分片間的通訊是受限的(事實上,在第一階段,不存在這種通訊能力)。

@何強:有沒有具體的數字,現有的效率怎麼樣?分片後能達到什麼效率?分片有上限麼?好比能分多少片?

@楊鎮:這個具體的參數通常用 TPS(Transactions per second),目前我印象裏仍是100這個數量級,也就是每秒能處理的交易量小於 100。按照剛剛方案裏的說明,分片以後,理論上 TPS 能夠提升 100 倍。

目前方案的核心就是剛剛說的 VMC 合約,這是一個目前公鏈上要增長的合約。按照剛剛方案裏的說明,分片以後,理論上 TPS 能夠提升 100 倍。

按照如今的方案,實裝以後的效果是,增長了 100 個shard,每一個 shard 上都是一個單獨的鏈,只不過在這些新的shard鏈上,原先的區塊概念沒有了,變成了 collation,這能夠想象成另外一種類型的區塊,是爲了和現有的主鏈區塊加以區分。

分片運行在一個普通的符合最長鏈規則的權益證實系統中,權益數據將保存在主鏈上(具體來講,是在 VMC 中)。全部分片共享一個通用驗證器池,這也意味着:任何經過 VMC 註冊的驗證器,理論上均可以在任意時間被受權來在任意分片上建立區塊。每一個分片會有一個 O(c) 的區塊大小 / gas 上限(block size/gas limit),這樣,系統的總體容量就變成了 O(c^2) 。

@何強:一百倍也就是一秒10000哈,和如今交易系統比起來處於什麼水平?

@楊鎮:類比,不知道,沒研究其餘對手~

@何強:這個能和支付寶作類比嗎?支付寶極限大概是每秒120000筆。

@楊鎮:固然無法比,不要分佈式系統和中心化系統比性能。

請注意,分片以後,記帳方式變爲了權益證實。

VMC這個合約是有註冊功能的,也就是說,想參與分片記帳的地址,須要從本身地址給合約發送必定量的eth,來完成註冊,以後,VMC會按照全部註冊的記帳人(collator)所提供的eth金額比例來隨機分配由誰來記帳。

這其實就是一個PoS(Proof of Stake)協議了。

在這種狀況下,每一個 shard 中的 collation 組成的鏈都是獨立增加的,咱們再發送交易時,就須要指定想由哪一個 shard 來處理。

以前由區塊來保存的交易列表數據就被移到了 collation 裏,區塊裏保存的就變成了 collation header 列表。

目前,各個 shard 之間是不能交互的,也就是說,咱們發送到某個交易,只會存在於某一個 shard 中。

這樣,咱們的客戶端,通常就要明確指定咱們監視哪個 shard,而像區塊鏈瀏覽器,則要監視所有100 個 shard。

@bob:若是沒記錯的話當前的以太坊交易,每秒20筆。

@何強:這個變化對鏈上現有業務有什麼影響?理論上應該是隻有改善。

@楊鎮:TPS確定會提高,這個毫無疑問,至關於變成了100 個單獨的鏈在一塊兒處理交易。

@何強:對開發者呢?從開發的角度是增長了一些複雜度,不過換來了TPS的大幅度提高哈。

@楊鎮:開發角度的複雜度提高能夠忽略。使用上沒有太大變化,固然,協議層定義會變、區塊、collation數據結構會變。

@西安-趙曉楠:那意思好比對接以太坊的rpc接口可能會有調整?

@楊鎮:rpc麼?確定會。

@何強:理論上TPS提升xxx倍,那怎麼知道實際上提升多少?

@楊鎮:實際提升多少就要測試了,理論上就是100倍。

@@山東-孔慶豐:爲何是100個?能知足現有業務?未來是否是能夠分紅成千上萬片?

@楊鎮:100倍這個是能夠調整的,目前是在VMC中寫死的。分片這個協議變更,是爲了儘可能少的影響目前的程序,如今還在測試階段。

@西安-趙曉楠:分片時間點大概啥時候,以前看過一些資料說實現分片,技術難度很大呀,v神以前說的3-5年才能 搞定,這進度推動這麼快?

@何強:若是後期業務快速爆發,靠分片能持續提升TPS麼?光衝着提升TPS來講,應該還有其餘辦法。最後爲何決定就用分片了?

@楊鎮:這個要看社區測試的進度和反饋,目前尚未明確的時間點。分片有4個階段,目前只是第一階段,爲了控制影響程度。

關於分片的技術說明文檔,我進行了中譯,中文版在個人github上:https://github.com/riversyang/sharding/blob/develop/docs/doc.md,你們有興趣也能夠看一下。具體的階段介紹,在文章裏有,但很是技術化。具體的實施,和後續 metropolis 版本也直接相關。

@西安-趙曉楠:plasma.項目和分片是一個項目仍是什麼?

@楊鎮:plasma須要基於sharding來實施 因此這是第一步。sharding也是後續plasma實施的基礎,也就是把計算分散到所謂的側鏈上進行。目前主網上的肯定區塊仍是靠PoW,但經過VMC選擇collator(也就是collation的記帳人)這是PoS,因此V神也說過,這個過渡階段是所謂的混合挖礦。

@西安-趙曉楠:分片技術實施後,有沒有可能會下降些手續費?不用如今競價手續費進行打包。

@楊鎮:是的,是VMC根據PoS算法隨機選的記帳人。

@白菜:交易須要指定它們本身應該被髮布到哪一個分片中,而且分片間的通訊是受限的。這句話不明白。這麼作的目的是什麼,爲何受限,請大神指點,我是小白,請不要見笑。

@楊鎮:由於目前沒有跨鏈協議支持,因此沒法實現跨鏈通訊,並且在目前來看,也沒有必要作跨鏈交互。一個交易是存在某個 shard ,仍是像如今存在 block 中其實不是很重要。

@白菜:您最開始說,VMC合約、分片就是在公鏈上要增長的合約?我理解成了沒有跨鏈。是否是我理解錯了?

@楊鎮:沒有跨鏈。

@白菜:我覺得只是增長一個vmc合約而已,不算跨鏈。

@楊鎮:管理的是shard 的基礎信息,以及負責管理 stake、生成 collator,就是記帳的人。shard 的數據,和目前同樣,單獨存儲,只把hash 保存到主網的VMC中。

@鄭鵬:VMC是一個在主鏈上的分片前置合約吧。

@楊鎮:不是前置,是必須的。目前的方案裏,VMC是必須的,須要和sharding協議一塊兒實裝。

@鄭鵬:感受分片技術和負載均衡理論有點兒相似,區別在哪裏?去中心化的負載均衡?

@楊鎮:我以爲不要用中心化的技術去類比去中心化技術。徹底不同,VMC是選擇誰來生成collation,以PoS的方式。若是要了解技術細節請你們認真閱讀黃皮書,而後看分片的技術說明。

@蘭凱仁:那這個vmc不算中心化麼,vmc也是每一個礦機都包含的合約麼?

@楊鎮:區塊鏈裏的全部處理都是串行的,不存在咱們普通的中心化技術裏的所謂併發問題。VMC是惟一的實例,和其餘全部智能合約同樣。跟所謂中心化不要緊。

合約代碼是存在客戶端的,全部客戶端都有一份,EVM的執行也是全部客戶端都會執行

因此不存在所謂中心化的問題,這些基礎概念仍是須要先學習下。

總體上看,是的,但實際上不是每一個客戶端都有100個分片鏈,每一個客戶端能夠本身指定監視那個shard,你能夠監視全部的,也能夠特定某個。礦機,理論上也不用全部,但run的時間長了,最終就會變成全部的shard。由於 VMC 選記帳人是隨機的,因此若是時間夠長,總會輪到全部的 shard都記過。

@白菜:以太坊分片主要是爲了解決交易速度慢的問題。問題各個片區的共識如何達成,各個分片如何通訊?既然不能跨鏈,跨片能夠吧?

@楊鎮:分片鏈之間不能通訊,我最開始發的那段說明裏已經說了。某個交易只會存在於某個shard,暫時不存在跨shard 的須要。

@Timothy:聽起來以太坊能作分片擴容的一個緣由是由於節點數夠多了,能夠切一百份,照樣每份節點也夠實現不可篡改了。能這樣理解嗎?

@楊鎮:不是這樣的,跟節點個數不要緊,是有一個節點就有一個副本,分片的改動是協議級、基礎數據級別的改動,區塊鏈的基礎機制沒有變化。

@Timothy:分片看起來技術含量不低,它對於國內各類各樣的公鏈項目,是否有可落地的借鑑意義呢?

@蘭凱仁:感受分片技術主要增長了交易的"併發",原來10分鐘1筆,如今10分鐘100筆。

@楊鎮:理論上提高100倍,是同一時間有100個鏈在處理交易,如今只有一個。每一個鏈仍是像如今同樣是串行化處理的,理論上1000也能夠,就看VMC裏存幾個head。

@Timothy:目前eth的tps瓶頸是節點算力仍是網絡延遲?分片主要是解決哪一個瓶頸的?

@楊鎮:區塊是有gaslimit的,也是就是一個區塊能包含的交易是有限的,而後15秒一個區塊。分片以後就變成了100個上述的鏈同時在處理。

@joseph:楊老師 區塊鏈作公益捐贈 目前有哪些東西能夠參考?

@楊鎮:公益捐款,理論上寫個合約就能夠,全部款項的進出都是透明的(能夠在鏈上查到)。但這個事的關鍵是實操的設計,好比如何支取、發放。這就不是技術問題了。

區塊鏈應用的關鍵仍是應用設計,絕大部分狀況下技術都不是主要問題。

@Cynthia:感謝楊鎮老師,今天先聊到這裏,你們能夠繼續消化一下。討論的內容會沉澱下來發布在公衆號,還有想問的能夠在文末留言哦~

下期主題未定,特約嘉賓也未定,歡迎你毛遂自薦,或推薦~下週六晚9點,《衆說區塊鏈》不見不散~

點擊「閱讀原文」加入HiBlock區塊鏈技術佈道,共同窗習

本文內容來源於:HiBlock區塊鏈社區微信羣討論

【衆說區塊鏈】是HiBlock區塊鏈社區組織的微信羣討論活動,每週六晚9點準時開始,圍繞一個主題進行討論,有興趣的小夥伴加小助手:baobaotalk_com入羣吧~

合做社區:

image

image

如下是咱們的社區介紹,歡迎各類合做、交流、學習:)

image

相關文章
相關標籤/搜索