加載中 ...

V神說,解釋以太坊2.0最好的文章就是這篇了

2019-05-23 23:30 編輯:btc268.com 來源:區塊鏈資訊

  

  

  翻譯 | 王國璽

  編輯 | 波波

  今天,V 神在 Twitter 上表示,君士坦丁堡升級的再度延遲完全不會影響以太坊 2.0 的 Casper/分片/寧靜 的研發團隊和研發進度:

  

  V 神是在轉推以太坊核心開發人員 Afri Schoedon 發表在以太坊 Reddit 論壇上的一段聲明時強調這些話。后者在 Reddit 上的聲明中表示,以太坊 2.0 的 寧靜/PoS/分片 與以太坊 1.0 完全無關,負責君士坦丁堡升級的團隊與開發以太坊 2.0 的團隊是完全獨立的。

  

  而說到以太坊 2.0,V 神前兩天剛剛推薦了一篇解讀以太坊 2.0 路線圖最好的文章:

  

  這篇文章詳細解釋了以太坊 2.0 各個階段的技術發展狀況,并對 Beacon 鏈、EVM2、分片、分片后的智能合約及 DApp 開發等技術如何組裝出新一代的以太坊做出了詳細的介紹。

  那么,相比以太坊 1.0,以太坊 2.0 到底有什么不同?請看區塊鏈大本營對這篇長文的完整翻譯:

  什么是以太坊 2.0?

  以太坊 2.0 是以太坊已充分規劃好的替代品,按照日程,在接下來的幾年里,以太坊 2.0 的設計人員會將當下以太坊的共識系統以及區塊鏈狀態悉數打包,加入到以太坊 2.0 中。

  如此一項龐大的工程以至于我們無法準確地預測以太坊 2.0 將會包含哪些內容又會舍棄哪些內容。根據當前掌握的信息,已經有一些團隊開始了早期開發,根據當前的計劃,以太坊 2.0 的設計人員在其中加入當下的一些先進技術,如分片技術、Casper 協議、狀態租金(state rent,即向用戶收取存儲數據費用的機制)和以太坊新一代虛擬機項目 eWASM。客戶端的開發也早已提上日程,早期的開發測試工作正在有條不紊地進行中,一個功能強大的以太坊 2.0 測試網絡預計將會在三個月內(2019 年第一季度)與我們見面。

  屆時,以太坊 2.0 中的以太幣將全部來源于當下以太坊主鏈,但設計人員計劃通過不斷地更新迭代來改變兩條區塊鏈之間的關系,以太坊 2.0 將逐步成為主鏈,而當下的以太坊 1.X 區塊鏈將會成為受其管理的分片鏈。

  以太坊2.0對開發人員意味著什么?

  如果你是希望在以太坊 2.0 中搶占先機的 Solidity 智能合約開發人員或 Dapp 開發人員,你將不得不面對很多的改動。以太坊 2.0 是以太坊的完整替代品,在其中我們當下編寫智能合約時所做的許多假設都不再成立。通過以太坊 2.0 的時間軸你會發現,團隊計劃在未來幾年分階段完成,從這一點看以太坊 2.0 更像是一次新品發布,而不是修修補補的產品升級,那就不難想象當下我們為以太坊 1.X 版本編寫的工具和智能合約可能都需要完全推倒重來,為以太坊 2.0 重新設計并重新編寫代碼。不過不要害怕,幸運的是,我們有幾年的時間來為這個新的生態系統做充分的準備。為了幫助大家推動這項工作,我們會幫大家分析當前以太坊 2.0 項目的路線圖并介紹一些工程上的波及面。

  分階段推出

  目前,分片技術路線圖(兩倍于以太坊 2.0 的路線圖)共規劃出了七個階段。只有第零階段列出了詳細具體的規劃,即進行定期更新。第一階段的規劃就沒有那么詳細了,看起來還沒有進入到開發階段。在第一階段之后,路線圖逐漸成為了預期目標的列表,而不再是一份技術文檔。例如,在第二階段中,路線圖鏈接到以太坊研究網站 https://ETHresear.ch/ 的次數是 github 的三倍。因為每個更前一步的進展看起來都更像是愿景而不是工程實現,在本文中我們的介紹會集中在路線圖的第零階段、第一階段和第二階段,不過針對后面的幾個階段我們也會簡單分析一下可能的發展方向。

  

  分階段推出

  第零階段:Beacon 鏈

  第零階段的核心任務是“Beacon 鏈”。以太坊 2.0 的設計人員希望 Beacon 鏈成為以太坊 2.0 生態系統的核心,成為所有其他分片鏈安全性和最終確認的根源。一旦部署,Beacon 鏈將使用實用的終極小工具 Casper(Casper the Friendly Finality Gadget,Casper FFG)這種權益證明機制。Beacon 鏈的早期迭代版本被設計的盡可能簡單,這就是第零階段不支持智能合約、賬戶、資產轉移以及不包括任何分片鏈的原因。Beacon 鏈上的以太幣不可在區塊鏈上轉移,這意味著用戶無法將其存入加密貨幣交易所。

  BETH:新的以太幣

  Beacon 以太幣(BETH)是一種僅供 Beacon 鏈上權益所有人(驗證者)持有的新的加密資產。它可以通過以下兩種方法生成:1)作為為 Beacon 鏈提供驗證服務的獎勵(以及第一階段完成后在分片鏈上提供驗證服務),以及2)任何以太坊 1.X 版本的用戶都可以通過以太坊 1.X 版本的智能合約用 1 個以太幣購買 1 個 BETH,這是一種被稱為“存款”的智能合約,仔細研究你可能會注意到這個智能合約沒有撤回交易功能。這是因為在第零階段中還無法從 Beacon 鏈中撤回 BETH,也就是說,一旦在以太坊 1.X 版本的驗證者注冊智能合約中進行存款操作,以太坊 1.X 版本中的以太幣就會被有效銷毀。Beacon 鏈中的驗證者看到這個智能合約執行后會向 Beacon 鏈提交存款信息,Beacon 鏈將向存款人發放新的 BETH。因此,你可以認為在將以太幣發送給驗證者注冊智能合約后不久就會在 Beacon 鏈上收到新的 BETH,同時你還可以對存款進行臨時審查,但根據 Casper 協議的規定,你不可能永久性地進行審查。

  等到第二階段Beacon 鏈上才會允許以太幣轉賬,我認為除非以太坊 1.X 版本已經被完整整合到以太坊 2.0 的分片鏈生態系統中,否則沒有任何方法可以將 BETH 轉回到以太坊 1.X 版本中。當下路線圖的第零階段還不完善,第一階段的規范也還不可靠,鑒于此我們似乎可以合理地認為在未來兩年內 BETH 將作為一種獨立且不可轉移的加密資產存在,不過只要第二階段順利完成,BETH 將可以在分片鏈和 Beacon 鏈之間自由地轉賬,但以太幣將不會。現階段交易的不便應該不會給加密經濟生態帶來什么不可解決的難題,因為在過去,像 BETH 這樣的預發布或者功能不全的通證已經有通過 IOU(類似于債券,區塊鏈上的個人或機構,小范圍的發行基于該區塊鏈的通證,它不同于 ICO 這樣的眾籌,只是代表對現實或者其他的通證一種鏈上映射權益)在交易所進行交易的先例。例如,在 Tezos 眾籌(crowdsale)期間就在 HitBit 和 BitMEX 兩家加密貨幣交易所推出了 XTZ 通證期貨。如果加密貨幣市場上有對BETH的需求,加密貨幣交易所會紛紛開始提供 BETH 交易和抵押的托管服務。然而,加密貨幣市場對 BETH 的需求誰也說不準,BETH 并不適合投資,因為從以太幣到 BETH 的單向掛鉤人為規定了其 1 以太幣的價格上限。也就是說,BETH 永遠不會比以太幣更值錢,只會價格更低。

  第 0 階段:抵押

  用戶可以在 Beacon 鏈上抵押 32 個 BETH 成為驗證者。在第零階段中,驗證者僅僅管理 Beacon 鏈,但從第一階段開始,驗證者還將管理 1024 個分片鏈。Beacon 鏈(以及每個分片鏈)將使用實用的終極小工具 Casper(Casper FFG)權益證明機制來生成區塊,這種機制將在區塊鏈停止或經審查等不良行為出現時削減驗證者的權益,聰明的讀者應該會注意到 Casper FFG 的表親 Casper CBC(建構修正 Casper)出現在了分片路線圖的“以太坊 3.0”部分中,雖然對實用的終極小工具 Casper、建構修正 Casper兩種協議的全面討論超出了本文的范圍,不過我強烈建議你閱讀 Vitalik 關于混合 PoW / FFG 的說明,以及他關于最小削減條件的帖子和FFG的論文。

  https://vitalik.ca/FILes/casper_note.html

  https://medium.com/@VitalikButerin/minimal-slashing-conditions-20f0b500fc6c

  https://arxiv.org/abs/1710.09437

  這些驗證者需要做什么?

  分片技術旨在跨節點分割(分片)區塊鏈狀態信息,從而不需要任何節點保存區塊鏈網絡的完整信息。因此,沒有哪個驗證者可以驗證所有的分片。相反,Beacon 鏈將協調所有其他分片鏈的驗證者執行驗證,并且所有驗證者都將驗證 Beacon 鏈。每個規定的時間段(64 個區塊時間,大約 6.4 分鐘),Beacon 鏈將對驗證者進行洗牌并將他們分配給分片鏈。分配給分片鏈的一組驗證者稱為該分片鏈的驗證者委員會。按照規定驗證者委員會需要 128 名成員。在第零階段中,這意味著每個 6 分鐘的時間段內 Beacon 鏈都需要選擇驗證者以組成接下來 6 分鐘的驗證者委員會。在第一階段中,Beacon 鏈將需要為所有 1024 個分片各自分配一個驗證者委員會。實際執行的分配算法十分復雜,它涉及多階段隨機數生成過程以及可驗證的延遲函數,以杜絕某些利益方操縱生成驗證者委員會的可能。

  由于工作的重要性,以太坊 2.0 隨機選擇驗證者委員會并經常輪換驗證者委員會。驗證者委員會負責保護其分片鏈的安全性,存活和完整性,以及向 Beacon 鏈上報分片的狀態,分片鏈驗證者委員會是 Beacon 鏈了解分片鏈狀態的唯一途徑,反之亦然。從所有驗證者庫中隨機選擇驗證者可以最大限度地減少驗證者委員會穿一條褲子作為一個整體撒謊或欺騙的可能性,經常輪換他們也是旨在減輕惡意的驗證者委員會可能造成的傷害。換句話說,有了這樣的機制惡意或旨在利潤最大化的驗證者很難拿驗證者委員會來攻擊區塊鏈網絡任何部分。此外,如果他們偶然地獲得了對驗證者委員會的控制權,他們控制的時間也不會超過 64 個區塊。

  開發人員眼中的權益證明

  比較以太坊 1.X 版本的工作量證明與以太坊 2.0 的權益證明之間的差異正在有條不紊地推進中,值得注意的是,一些工作量證明和權益證明之間的差異的的確確直接影響到了開發人員,就比如說,雖然工作量證明區塊鏈支持無狀態 SPV(Simplified Payment Verification,簡單支付驗證)證明和 NiPoPow(Non-interactive Proofs of Proof of Work,非交互式工作量證明)等等的遠程狀態跟蹤機制,但權益證明禁止任何低狀態通信,主觀性阻斷了輕狀態驗證的可能。換句話說,關于權益證明的遠程狀態證明將包括與工作量證明無狀態 SPV 證明大致相同數量的數據,但是需要事先驗證整個權益證明的歷史。相比之下,無狀態 SPV 證明不需要其他信息來驗證。這意味著跨分片或跨鏈應用程序在這種主觀的權益證明環境中功能大大減少但開銷大大增加。

  第一階段:分片

  第一階段旨在就分片鏈的內容達成共識,但不是關于它們的含義。換句話說,它是區塊鏈分片架構的一次試驗,而不是嘗試使用分片技術來擴容。Beacon 鏈將分片鏈上的區塊視為沒有結構或含義的簡單數據集合,因為分片鏈尚未擁有帳戶,資產以及智能合約,此時,在每個周期內由 Beacon 鏈為每個分片鏈隨機選擇的分片鏈驗證者委員會僅僅就每個分片的內容達成一致,也就是說只要所有驗證者委員會達成共識并定期更新分片鏈區塊數據即可,哪些信息出現在分片鏈區塊中并不重要。

  分片鏈驗證者委員會通過一項被稱為交聯(crosslinking)的操作證明分片鏈的內容和狀態。簡而言之,驗證者委員會必須在 Beacon 鏈中提交有關分片的可驗證信息(如默克爾樹根節點的哈希值)。在第二階段或以后,交聯操作將支持跨分片的通信。一旦 Beacon 鏈從多個驗證者委員會處收到給定交聯準確性的證據,Beacon 鏈就可以相信交聯是分片鏈的真實表示從而不再驗證整個分片鏈。如果驗證者委員會對交聯的有效性持不同意見,顯然至少有一個驗證者委員會是錯誤的,應該收到權益削減的懲罰。這是所有分片鏈安全性的根源:驗證者的不當行為最終會被 Beacon 鏈發現并受到懲罰。

  在第一階段中沒有什么特別有趣的內容。從根本上說,它是交聯以及分片鏈與 Beacon 鏈數據同步機制的開發測試。設計人員似乎對這些機制充滿信心。目前主要問題來自于規范和實施的策略。鑒于第零階段花費大約一年多的時間才能達到合理規范的水平,我認為第一階段至少需要花費相同的時間。有趣的是,第零階段實現與規范是同時推進的。即使在今天,距離測試網發布不到三個月,第零階段的規范也會定期更改。這意味著在未來開發期間,以太坊 2.0 可能會有很大的變化。雖然樂觀主義者告訴我開發大概需要六個月,但我認為不然,在第零階段開發完成進入測試階段之后,第一階段可能還需要 12-18 個月的開發時間。

  

  分片機制

  第二階段:智能合約

  到了第二階段,以太坊 2.0 就有點類似于我們熟悉的以太坊了。隨著第二階段成果的不斷發布,分片鏈將從簡單的數據容器逐漸轉變為結構化的區塊鏈狀態。這時 BETH 將可以自由地轉移,并且系統將重新引入智能合約。每個分片鏈都將通過基于 eWASM 的以太坊虛擬機(我們稱之為“EVM2”)進行管理。我們希望 EVM2 支持我們當下所熟悉的帳戶,智能合約,狀態以及其他 Solidity 中的抽象概念。然而,底層的大規模改動讓這種想法成為我們的一廂情愿,大多數現有的工具都不再適用于以太坊2.0。不過幸運的是,eWASM 團隊為以太坊智能合約命令行編譯工具 Solc、開發框架 TRUFFle 和測試環境 Ganache 做了一些底層的工作,所以在第二階段的測試網絡發布之前最遲發布期間,我們可以看到一些最常用的工具開始支持 EVM2 虛擬機。

  在第二階段中很可能會加入狀態租金,這對當下的 Solidity 開發人員提出了一些有趣的挑戰。狀態租金機制下區塊鏈并不會無限期地存儲代碼和數據,而是要求智能合約開發人員和用戶隨著時間的推移為 EVM2 虛擬機的存儲付費,這樣做是為了確保未使用的信息隨著時間的推移而逐漸脫離狀態,防止狀態規模膨脹,它的目標是讓用戶而不是完整節點支付狀態的費用。業界針對狀態租金已經提出了許多不同的模型,但最終花落誰家還未成定局。

  https://ethresear.ch/t/improving-the-ux-of-rent-with-a-sleeping-waking-mechanism/1480

  有趣的是,隨著一些以太坊升級計劃和著名的以太坊核心開發者推薦,狀態租金可能是不同路線圖中唯一的相同點。因此,我強烈建議在當前部署的智能合約中支付狀態租金,并設計模型來轉移狀態租金給未來的用戶。雖然我們不知道狀態租金機制的精確設計,但我們應該準備好支付狀態租金。

  除此之外,我覺得第二階段沒有什么值得期待的了,因為它仍處于早期研究的階段,還有幾個核心問題亟待解決。考慮到當下非正式的規范和開發流程,以及第二階段在第一階段上的升級范圍,2020 年之前啟動第二階段的建議似乎并不合理,也就是說,雖然以太坊 2.0 可能在今年推出,但是預計至少要到 2020 年以太坊 2.0 才能支持資產轉移和智能合約。

  第三階段:鏈下狀態存儲

  為了更多地討論大家關心的智能合約,我們將幾乎完全跳過第三階段。第三階段通過盡可能多地將狀態存儲到鏈下來最小化區塊鏈上的狀態。以太坊2.0的區塊鏈上將只存儲一些狀態信息和聚合器(aggregator,聚合器是表示長數據列表的短數據字節,默克爾樹就是一種聚合器),而不是像以太坊一樣存儲所有的狀態。用戶將負責在鏈下存儲完整的狀態信息,當用戶想要與狀態進行交互時,他們需要在交易中包含當前狀態的證明。這樣可以大大降低運行驗證節點的資源需求。目前已有幾種不同特性和性能的聚合器設計方案,但設計人員還沒有選擇任何方案。因為我們不能使用鏈上通信來協調各個用戶,我們必須通過其他系統同步狀態。這種設計下區塊鏈不再保證數據的可用性,這里的事件對開發人員來說并沒有太大的意義。在第三階段中,維護和檢索鏈下狀態將成為Dapp的關鍵設計要素。

  第四階段:分片智能合約

  做了這么多工作,目前還有一個無法克服的核心問題:以太坊 2.0 的智能合約,雖說它們將與以太坊智能合約一樣強大,但它們必然會綁定在一個分片鏈上,并且永遠無法與另一個分片鏈上的智能合約直接進行交互。這是分片技術帶來的直接后果。分片技術的目標是在分片鏈之間分割狀態,每個分片鏈都不需要直接了解其他分片,通過分割狀態和最小化驗證者的負載來實現區塊鏈的可拓展性提升。而不同分片鏈上智能合約的直接交互需要了解彼此的狀態。根據設計,分片鏈不存有其他分片鏈的狀態,它們僅通過與 Beacon 鏈的交聯來了解其他分片鏈。因此,每當我們想要跨分片訪問狀態時,我們就必須等待 Beacon 鏈提供服務。具體來說,這意味著如果在分片 A 上部署 SafeMath 庫函數,分片 B 上的用戶將不得不等待 Beacon 鏈提供服務來訪問 SafeMath 庫函數或在分片 B 上部署新的 SafeMath 庫函數。

  這意味著每個分片鏈上都需要部署像 SafeMath 庫函數這樣通用的底層庫函數,也就是說 1024 個分片鏈上會有 1024 個SafeMath庫函數,那么像 Maker 或者 Compound 這樣的市場該怎么辦呢?如何跨越分片的邊界已成為去中心化金融的一大考驗。在開放抵押債倉(CDP)到收到貸款(DAI)之間的長時間延遲可能會導致難以接受的經濟損失。如果市場大環境發生變化并且抵押債倉在用戶收到貸款之前被清算會怎么樣?在實踐中,這可能意味著用戶需要在每個包含必要的智能合約的分片鏈上開設帳戶,并且跨分片的組合將完全丟失。去中心化交易所中創建訂單的人(Maker)和用戶只有都被部署在同一個分片鏈上時才能進行交互,并且用戶在該分片鏈上的賬戶需要有資產。

  最根本的權衡:同步性或可拓展性

  即使以太坊 2.0 設計人員也不知道跨分片的通信系統會是怎樣的。通過閱讀許多提案,似乎在即時反饋和可預測性之間存在著根本性的權衡,但分片的本質不會隨之改變:無論哪種跨分片通信用戶都必須等待。只是我們可以選擇交易在本地和在每個分片鏈上遠程執行階段耦合的緊密程度。

  緊密耦合使得等待先行。在分片鏈之間通信之前,交易不執行任何操作,與此對應的是,我們可以通過現在執行部分,剩下的稍后執行來松散地耦合交易。交易先在本地分片鏈上執行,跨分片通信之后在遠程分片上執行。松散的耦合為用戶提供了更好的使用體驗,用戶將看到自己的交易立即在本地執行,并且知道在未來的某個時刻交易將繼續在遠程執行,但不幸的是,除非等待否則他們不能了解松散耦合中交易的遠程執行階段。緊密耦合的交易更具可預測性,其中用戶更清楚執行的結果,因為交易在本地和遠程執行階段之間遠程狀態并不會變化。但是,緊密耦合中用戶也需要等待才能看到結果。

  我們對于以太坊 2.0 通信模型的信息知之甚少。我們只知道它不能在不犧牲幾乎所有可擴展性優勢的情況下提供跨分片智能合約調用。而設計人員對于第四階段只給出了思維導圖和一些模棱兩可的鏈接。這種情況的一個非顯而易見的結果是,以太坊 2.0 在第四階段之前不會為復雜的智能合約系統提供顯著的可拓展性支持。在此之前,有與其他智能合約交互需求的智能合約必須與其存在于同一個分片鏈上,并且還會受到分片鏈速度和規模的限制,因此,我們預計引入分片技術后以太坊 2.0 與以太坊 1.X 版本相比速度也就只能快幾倍,而不會有翻天覆地的變化。這意味著在第四階段發布之前(可能在 21 世紀 20 年代中期),沒有必要將智能合約代碼以及用戶遷移到以太坊 2.0 中,因為遷移帶來的優勢很小。與此同時,為了更好地理解開發人員和 Dapp 用戶之間的權衡,我研究了一些模型,并給出了簡短的描述。我認為這些最終可能并不會被采納,但我相信它們有助于理解所涉及到的權衡。請注意:這里說的一切都是推測性的。

  基本模型:收據和證明

  所有形式的跨鏈通信都用到了 Beacon 鏈。因為 Beacon 鏈管理所有分片鏈的狀態,并且每個分片鏈都將狀態提交到 Beacon 鏈,所以我們可以將Beacon 鏈看作分片鏈生態系統的核心。從某種意義上來說,從某條分片鏈到另一條分片鏈的消息必須通過 Beacon 鏈傳輸。我們不希望發送完整的消息,因為如果需要 Beacon 鏈處理每筆交易,這樣分片技術還有什么意義。

  相反,每當分片 A 上的用戶或智能合約想要與分片 B 交互時,分片 A 生成帶有該消息的“收據”。分片A在其區塊頭中提交其所有的收據。Beacon 鏈等待 A 最終確認,然后提交到 A 的區塊頭部(包括對收據的承諾)。分片 B 必須等待 Beacon 鏈最終確認,然后提交到 Beacon 鏈的區塊頭部。這樣的流程完成之后,分片 A 就可以直接向分片 B 提交包含收據和證明的新交易。證明顯示收據包含在分片A中,分片 A 包含在 beacon 鏈中,并且 beacon 鏈包含在分片 B 中。這樣,分片 B 中的智能合約可以信任從分片 A 發送過來的消息,如果分片 B 中的智能合約想要回復信息(可能是返回值或是錯誤),我們需要反過來重復整個過程:分片 B 發出一個收據,最終傳到分片 A。

  不難看出這個過程很浪費時間。四個通信步驟中的每一個都需要等待幾分鐘才能最終確認!而且不幸的是,我們無法完全避免等待。如果我們想確定遠程的狀態,那么我們必須留意執行的每一步以獲得最終的結果。在最理想的情況下,兩方相互通信需要等待四個最終確認時間,也就是說,用戶在三個最終確認時間后就能確信交易成功,因為用戶可以在分片 A 正式收到之前看到分片 B 的收據,鑒于以太坊 2.0 的 6.4 分鐘時間周期,用戶必須等待 19 分鐘才能看到交易結果,并且需要 26 分鐘才能看到交易結果被加入到區塊鏈中。

  

  跨鏈通信

  具體的收據:分片鏈之間的通證轉移

  ERC-20 通證的強大功能使得它們在今天的以太坊生態系統中無處不在。但是,以太坊 2.0 給通證的運行邏輯帶來了一些問題。因為智能合約管理所有的通證余額,并且智能合約僅存在于單個分片鏈上,所以分片A中的通證并不存在于分片 B 中。不過,通過一些巧妙的跨分片通信機制,我們可以在幾個分片鏈上部署相同的通證從而允許在分片鏈之間轉移通證,即在通證智能合約之間建立有效的雙向錨定(two-way peg)。

  這個方案非常簡單:在部署我們的通證(讓我們稱之為“酷酷的跨分片通證”或“CCT”)時,我們在 ERC-20 中添加兩個小的附加函數:migrateSend(轉移發送功能)函數和 migrateReceive(轉移接收功能)函數,函數 migrateSend 用來銷毀通證并生成收據。收據中將包含已銷毀了的通證數以及接收信息的分片鏈。函數 migrateReceive 驗證收據并生成相同數量的通證,我們將在每個分片鏈上部署相同的通證智能合約,這樣我們就可以通過調用 migrateSend 函數在一個分片鏈上銷毀通證,然后在另一個分片鏈上調用 migrateReceive 函數來重新生成通證。雖說需要在每個分片上重新部署通證智能合約,但這看起來是十分值得的。這種轉移是單向的,至少需要兩個跨分片通信的最終確認周期。因此,在我們調用 migrateSend 函數之后,大約 10 分鐘之后就可以在接收分片上使用這些通證了。

  

  跨鏈通證轉移

  拖拽(Yanking)

  收據是跨分片轉移信息的一種通用方式。我們可以在收據中加入任何鏈上信息,甚至可以加入整個智能合約。拖拽是一項通過將智能合約的代碼和存儲包含在收據中從而跨分片轉移智能合約的提案。在拖拽機制中,智能合約將被加入到收據中并被分片 A 刪除(拖拽),在收據到達分片 B 之后在分片 B 上重新部署。一旦到達分片 B,它可以直接與分片 B 中的智能合約進行通信,并與分片 B 的狀態進行交互,甚至可以被拖拽回分片 A。

  https://ethresear.ch/t/cross-shard-cONTract-yanking/1450

  拖拽機制將允許智能合約與任何其他智能合約進行通信(在等待跨分片時間之后)。不幸的是,由于收據包括完整的智能合約及其所有的存儲,因此轉移大型智能合約的成本會很高。收據在轉移過程中,智能合約將無法使用,因為分片A已把它刪除,而它還尚未到達分片 B,這意味著在它到達分片 B 之前,所有相關用戶都被鎖定在該智能合約之中,而且只有已經在分片 B 上擁有賬戶的用戶才能與之交互。因此,拖拽最適合用戶很少的小型智能合約。它使緊密耦合的執行成為可能,但并非通用的解決方案。

  分片配對(Shard PAIrings)

  收據旨在使異步(松散耦合)通信成為可能。但在某些場合下,我們還可能需要同步通信。為此,我們必須加入一點創新。分片配對是一個簡單的設計,讓我們以最少的麻煩進行緊密耦合的狀態更新。

  分片配對是一個簡單的方案,其原理是,我們在每個高度將分片混合成同步對。每次分片與另一個分片配對時,任一分片的用戶都可以跨分片執行緊密耦合的狀態更新。這意味著如果分片 A 和分片 B 在高度 7 處配對,則分片 A 和分片 B 的所有驗證者都會知道分片 A 和分片 B 的所有狀態,并且分片必須一起執行或根本不執行。在這個模型中,如果你需要在分片 A 和分片 B 之間執行跨分片交易,你需要等待分片 A 和分片 B 隨機配對。Vitalik 分析了 100 個分片的案例,對于 1024 個分片,我們預計它需要經歷 512 個區塊,大約需要一個小時,但由于分片配對是隨機的,時間可能需要更長或更短。正如 Vitalik 所說,當你想要與多個分片交互時,這時可擴展性很差。

  

  四個分片的分片配對

  分片區域(Shard Zones)

  分片區域是更廣義版本的分片配對。其原理是,每個時間段內我們將分片分成幾個由多個分片組成的“區域”。區域必須同步執行,這意味著區域中的所有分片一起更新其本地狀態。通過同步執行,區域提供內部分片之間的自由轉移,并可與區域中的其他智能合約直接交互,但是這種機制在與區域外的其他分片進行通信時沒有任何優勢。此外,由于分片區域機制需要驗證者了解區域中所有分片的狀態,因此分片區域的存在大大降低了分片帶來的可拓展性優勢。如果一個區域由 16 個分片組成,那么這個區域犧牲了大約 15/16(= 94%)的可拓展性優勢,以換取總網絡 15 / 1024(= 1%)緊密耦合的執行。

  產權負擔(Encumbrances)

  跨分片(以及跨鏈)通信的一個不明顯的特性就是,用戶可以在區塊鏈正式接收之前更快地獲得交易的信息。就比如說,愛麗絲從分片 A 向分片 B 發送 5 BETH,知道它會在發送后立即到達分片 B。鮑勃看到了愛麗絲在發送,他知道一旦發送在分片 A 上最終確認,BETH 將到達分片 B。然而,分片 B 及其上的智能合約必須等待幾分鐘,等 Beacon 鏈最終確認分片 A 的最終確認。這意味著資金在分片 A 上花費之后,我們可以很快在分片 B 接收并花費這筆資金。換句話說,鮑勃將從分片 B 上愛麗絲的錢包中獲得可執行的 IOU(債券),因為鮑勃相信愛麗絲已經發送了足夠多的以太幣。如果分片 B 的大部分用戶都愿意留意分片 A 上的交易并接受標準化的 IOU,那么分片 A 上的以太幣可能在發送后很快在分片 B 上花費。然而,當應用于智能合約時,這種方案變得異常復雜,因為狀態是不可替代的,狀態的債券是不可能的,因此它不適用于一般的交互。這意味著我們應該將產權負擔視為松散耦合中的用戶體驗改進,它允許用松耦合模擬緊密耦合以快速執行某些交易。

  共識和狀態分離

  一個更復雜也更為燒腦的可能是共識過程將脫離狀態更新過程。當下,以太坊礦工和完整節點只有在執行了區塊中包含的所有狀態更新后才接受該區塊,其實沒有必要,因為在接受區塊之后再更新狀態也不遲,只是在這種情況下,礦工不會像當下在以太坊中那樣就區塊鏈系統狀態達成共識,而是會對所有分片鏈中所有交易的全部歷史(或“全部順序”)達成共識。這樣做意味著每個分片鏈都可以在無需知道其他分片鏈狀態的前提下快速添加區塊,這就是分片機制帶來可拓展性優勢的原因。但是,在所有分片最終確認之前,交易對分片鏈狀態和整個區塊鏈網絡的影響將不得而知。換句話說,在所有分片內容的最終確認之后才能完成狀態的最終確認。

  從用戶的角度來看:我們提交交易后就知道交易已被包含在區塊鏈中,但我們必須等待一段時間來確定該交易執行的結果。隨著分片的最終確定,我們逐漸獲得有關區塊鏈狀態的更多信息,但在所有分片鏈都最終確定之前還無法完全肯定。與產權負擔相似,在某些情況下,用戶可以在區塊鏈之前確定交易的結果并采取相應的行動。

  結論 & 開發人員的前進方向

  以太坊 2.0 將會是與以太坊完全不同的區塊鏈系統,在未來的幾年里,它們將本著不同的特征共同存在,不過在不久的將來,預計將會出現從以太幣到 BETH 的單向掛鉤。如果你經營加密貨幣交易所或托管服務,那么你就要思考如何在官方支持鏈上轉移之前為你的用戶提供 BETH 托管交易和抵押服務,從長遠來看,你還需要考慮智能合約如何在有和沒有跨分片通信的情況下適配分片技術。當然了,最重要的是你需要密切關注以太坊 2.0 項目的研究和開發進程。以太坊 2.0 是一個復雜且不斷發展的系統,為了更好地搶占先機,所有 Dapp 開發人員都需要清楚地了解以太坊 2.0 的計劃和進度。

  

  參考鏈接:

  https://hackernoon.com/what-to-expect-when-eths-expecting-80cb4951afcd

  https://www.reddit.com/r/ethereum/comments/agcrcb/what_to_expect_when_eths_expecting_hacker_noon/ee64r3n/

  https://www.reddit.com/r/ethereum/comments/ahqmmx/serenity_proofofstake_sharding_all_that_is/

  https://medium.com/rocket-pool/ethereum-2-0-whos-building-it-54a735442e

  https://medium.com/rocket-pool/ethereum-2-0-76d0c8a76605

  — END —

  

  推薦閱讀:

  一周要聞 | 石油幣購房將獲10%折扣;美國啟用區塊鏈結婚證書

  革微信的命,要靠“聊天即挖礦”?

  “對不起,你的離職是我的錯!”

  羅永浩、戴威的C位消亡史

  啥是佩奇,Python告訴你!

  特斯拉再裁員3000多人,馬斯克稱別無選擇

  云漫圈 | 有趣的海盜問題(完整版)

  心疼!能為程序員男友做些什么嗎?

  點擊“閱讀原文”,打開 APP 獲取更多干貨喲!

好文!點「好看」喲~

關鍵詞:比特幣新聞 幣牛牛

轉載自比特幣新聞網(www.dcpnox.live),提供比特幣行情走勢分析與數字貨幣投資炒幣最新消息。

原文標題:V神說,解釋以太坊2.0最好的文章就是這篇了

原文地址:http://www.dcpnox.live/ytf/xw/11758.html

本文來源:區塊鏈資訊編輯:btc268.com

本文僅代表作者個人觀點,與本網站立場無關。

本網站轉載信息目的在于傳遞更多信息。請讀者僅作參考,投資有風險,入市須謹慎!

'); })();
千斤顶或更好10手返水