6月29日,Vitalik Buterin在以太坊技術及應用大會上演講。


以下是演講實錄:


現在我們要把它進化到2.0版本,有更多分片。現在在研究信標鏈相關話題,這方面有很多努力要做。這可能對區塊鏈交易非常有用,增加它的可擴展性,這樣區塊鏈的理念從1秒鐘10個交易,以後可能是每秒1萬個交易都能夠處理,它會增加信息吞吐量的速度,也能夠有更多區塊鏈的應用。


但是對於開發者也會面臨一些挑戰,區塊鏈現在的運作方式是每個計算機要驗證所有交易,每個節點都要進行驗證,這樣安全性是好了,但是它難以進行擴展,因為我們交易的數量非常多,因為交易速度是由一個計算機決定的,所以我們想要去改善這個過程,我們要提高它的拓展性。這樣每個計算機只需要驗證一小部分的交易,這樣並不是所有節點都要進行驗證了,每個計算機只需要去處理1000個當中的千分之一的交易。


當前我們要處理的問題是因為,如果我們看到現在的應用運作的方式就會發現,在這個理論上建立其他的東西是很容易的,比如智能合約和其他進行交流時,可能需要5個應用的參與,所有的帳戶、智能合約都儲存在一台計算機上,所以它們相互交流非常方便。但是如果我們在更短的一個區塊鏈中就做不到了,因為這個區塊鏈中智能合約、帳戶、交流速率非常高,我們很難讓一個應用都能夠進行對話,難以進行立即的對話和交流。


所以以太坊2.0的設計並不是讓每個節點都去處理所有的交易和信息,我們有1024個分片,每個分片都相當於是一個短的鏈,每個分片都有自己共識的算法,不同分片中交流進行管理,每個分片會跟其他分片進行交流,有合約進行交流,每6分鐘會發生一次,所以每6分鐘每個分片都有機會了解hash值以及最近發生的事情等等。


另外,之前這個鏈可擴展性受到了限制的,所以我們可以選擇,要么這個鏈的交流速度變慢,要么拓展性受到限制,我們還是要二選一。另外,這些基礎層主要關注數據和計算力等等,不同的分片交流和溝通的能力、它們是否受限,我們可以創建一個機制讓它們的性能更好、使用效率非常高,這樣用戶不同的智能合約能夠相互交流,而且速度非常快。


首先,我們是異步交流的流程,這是我之前設計的,已經有了幾年的設計過程,如果讀相關文章,比如2016年就有文章談到異步交易。它的理念是,如果我們有幾個分片的話,如何去促進這個分片之間的交易。比如說我有5個硬幣,然後我想要把這5個硬幣轉移給Bob,Bob有一個帳戶,它的帳戶在底端,我的硬幣在頂端,首先我要在頂端做一個交易的請求,這個交易會進行第一個分片處理,然後它會有一個hash值產生,當然,它並不會立即完成,但是之後我們就能夠把它放到底部的分片當中,它能夠在底部的分片進行驗證。驗證之後交易就能夠進行處理了。


所以有一個信息,是5個硬幣去進到Bob,底部的Bob就能夠得到5個硬幣,它不會立即發生,原因是我們要驗證,不僅僅接收方需要進行驗證,還有其他的hash值、數據、信標鍊等等都需要進行驗證。我們發現接收方也是分片的一部分,不同的分片交流需要5分鐘的時間,所以第一步我們就需要發送這個交易,第二步是等幾分鐘,第三步是要進一步去處理這個交易,然後才能夠讓底部的Bob接收到這個硬幣,這樣Bob帳戶就增加了。


現在有各種加密貨幣,包括比特幣等等,對於這些數字資產有不同的平台,我們發現這樣一個交易,它其實非常強大的,有很多有趣的理論、複雜的理論都可以來驗證這個交易,不管是開發者還是爪窪腳板的處理等等。我們發現,我們理解這些機制,跟客戶交流是非常難的,我們還是有很多可以做的,但是會有相關溝通方面的限制。


另外一個是“火車票和酒店”的問題,比如你在數據庫工作,就會了解相應的問題,它跟我們畢的交易非常相似,我們有不同的方式可以解決相關的問題。你想要去一個地方旅遊,我們要買火車票,同時也要訂酒店,如果訂一個不行,要兩個一起訂,所以我們要確保:有沒有都不訂,要么酒店和火車票一起訂。如果僅僅有火車票而沒有酒店,或僅僅酒店而沒有火車票,這對我來說沒有任何意義,是浪費錢。


所以我們想像兩個智能合約,一個合約是用來訂火車票的,另外一個是用來訂酒店的。當前體系解決這個非常簡單,首先,這個交易給火車票的地方打電話,比如我們在火車票上訂了一個座位,這個合約會回复你成功或失敗,然後我們再給訂酒店的地方打電話,這個地方也回复你成功或失敗,如果其中一個失敗了,那在我們交易過程中就無法讓這個交易進行下去,整個交易會被撤回。今天我們也是這樣做的,不管是訂火車票還是訂酒店,其中一項失敗了,我們就可以把交易撤回。但是在更短的鏈中,訂酒店和訂火車票是不同的分鏈中,確保一致性更難,原因是因為發現在一致的環境中已經訂了火車票了,我們就不能再撤消了。


其中的一個解決方案是我們有一個新的機制叫“猛拉”,它看起來是全新的想法,但是有很多類似之處,跟我們之前的數據庫很像。所以我們會有非常多樣化的做法,並不是用一個合約訂酒店,一個合約火車票,現在我們把它分開,每個火車座位都有一個合約,每個房間都有一個合約,這樣每個合約都能夠代表我們訂座位或者訂房間的能力。


現在我們能做什麼?在“猛拉”中發一個合約,它的功能是一次用一個合約,我們拿掉這個合約之後就獲得一個座位,然後我們再把合約放到另外一個位置上。


解決“酒店和火車票”的問題怎麼辦?第一步,猛拉,從酒店分片拉一個合約,從火車票再拉一個合約兩個分片同時預定,現在酒店合約和票合約在一個地方,跟之前的交易一樣,就可以一起訂了,但其中任何一個操作失敗,那我們就什麼都不訂。或者其他人想要訂火車或訂酒店,去之前你去的那個分片,可以用這個合約進行“猛拉”的操作,不會有任何阻礙,兩個一起訂,它是自動的過程,就是要么兩個都訂,要么兩個都不訂。所以在區塊鏈的運用當中有很多都是類似的,包括去中心化資產的交流等例子,對我們來說非常有用,能夠提高用戶操作性以及區塊鏈應用程度。

 

這是另外一個例子,也是我們可以做的一個應用。現在我們想像一下,我們用一個更短的區塊鏈,比如它需要5分鐘時間讓一個分片知道另外一個分片的數據或者hash值,但是我們希望這個應用變得更加快捷,所以我們的做法是在上面分片有一個硬幣,然後我們想把這個硬幣移到下面,我希望它的方式是硬幣可以在底部立馬進行應用,那我們就不用等了。


具體怎麼操作呢?看起來是挺難的,我們是這樣做的。比如說,就像我們之前的程序一樣,首先,我想給Bob發5個幣,就必須在上面的分片進行交易,然後上面就會給我個這樣的證明,它還包含一個區域性的分片,然後我再把它放到下面的分片中,下面的分片就會記錄這個交易。而且它已經了解上面分片當中的根值了,所以下面的分片根本不知道上面的末克(音譯)跟它是否合法,但是不管怎樣,它把相關數據融到自己的數據包中了。如果這個末克(音譯)記錄另外一個信息,也可能沒辦法讓下面的分片知道。


我們這裡想陳述的是,最開始Alice有10個,Bob有20個,charlie有52個,我們把這些進行壓縮之後進行存儲。有兩種情況,一種情況是bob有20個幣,還有一種情況是Bob之後有25個幣。如果我們的錢包上面看到上面的根是R,下面的分片就可以做個推測,就是Bob有25他幣,就可以取25個幣給其他人,所以Bob的錢包就向Bo飽學之士Bob有25個幣了。


即使在這樣的狀態下,我們的計算也並沒有最終化,看起來這個交易已經完成了,那麼你可能會問:看起來好像Bob有了這些幣,但是他還沒有花這些幣。我們假設Bob要把25個幣發給Charlie,他會做什麼?把22個幣發給Charlie會是什麼?現在這種情況下,你只能把兩個情況進行評估和對比,這種情況下Alice還是有10個幣,如果合法的話,Bob之前有25個幣,現在25-22,它只剩3個幣了,如果不算根是不夠的,所以Bob還是有200個。 C如果根是對的,就會從30多上升到52。


這個交易結束後,上面的分片和下面的分片信息可以連接,下面的分片可以記錄上面分片的信息了,我們就不用去思考到底R是真實的還是假的,我們知道R一定是真實的Charlie現在有52個幣了。這個邏輯是在後台進行的,邏輯效應是通過Bob、Charlie的錢包分析,我們至少先知道發生了這樣的交易。非常有意思的一點是,對於這個技術,你可以用通信的方式在跨區塊鏈中進行交易,還可以讓它創造應用程序,讓不同的區塊鏈進行跨鏈的交易。


比如我們假想有這樣一種應用,上面的分片是以太坊區塊鏈,下面的分片是另外一種區塊鏈,它們兩個如果是相碰撞、相衝突的話,我們會用同樣的機制保證它們交易,讓它們進行及時的通訊、及時的去中心化的交易。這在以太坊和跨以太坊的區塊鏈交易中是非常重要的,可以讓跨鏈的通訊變得更加方便。

 

我們還可以實現其他的目標,比如我們目前已經做了一些工作,比如通過Plasma方法做同步的交易,我們的目的是首先Plasma已經建立了,希望data把這些數據公佈到分片上,所有這些數據並不一定都能夠公佈到區塊鏈上,但是最終發生的一件事情是,我們還是會用類似Plasma的方法去實現同樣的目的,我們不會馬上去數狀態的總數是多少。我們至少要知道現在以太幣的所有者的目的是什麼,是在任何分片發交易,還是要等一段時間才能出資產。所以如果發生衝突的話,他有可能想上傳證據,還有所有者可以對硬幣進行再構造。


通過這個方法可以保證如果我們收到了幣,從來沒有進行非法支付的話,我們的交易就會同步到整個區塊鏈上進行廣播。這些交易出現了,我們有兩個資產,X和Y,另外一個交易是X,是ac,我們的分片有自己的輕重緩急,可能先進行某一次交易再進行下一次交易,還有bg、fM等等交易。之後還有很多交易,有些是合法的,有些是不合法的,mm是不合法的,因為時間上它是不能實現的。


如果我們參加交易過程當中,自己有了資產的話,而且你也希望發送交易信息,就可以把它公佈到任何分片上。如果你是某個資產所有者,你可以僅僅分析這些分片,就可以評估這些交易的歷史記錄是怎樣的,某些資產並不屬於這樣交易過程的,我們也可以做類似的結論總結。


在區塊鏈中,我們做的工作量還會少一些,比如用戶錢包可以做更多事情,而且它還可以幫助我們考慮什麼樣的交易方式是合理的,就是誰更關注每一個分片,然後每一個分片對應的資產又是怎樣的,這是特別棒的一個想法。


為了減少複雜性,讓更多用戶用錢包,我們就把區塊鏈便捷性、性能、應用效率大大提升,希望通過用這個方式把中心化更複雜的交易變得便捷和簡單,這個基本的戰略可以讓我們進行更快的交易。不需要之前去中心化的共識層,我們希望通過這些用戶錢包了解目前我們的錢包裡是有多少幣的。


這樣一種設計最近被我們叫“積極虛擬機(OVM)”它的結論是你所有權的資產並沒有立即轉移,我們開始一個流程,不需要把這個錢取出來,可能一整週時間才可以真正到帳,但是如果你是用戶,你可以知道為什麼不能馬上取出某個資產,而且你有一種感覺,就是這個交易是可以真正到帳的。


我們需要做什麼? 10秒鐘才可以進行跨分片交易,比如有20個分片參與交易,提高交易速度會不會提高區塊速度?我們需要去研究區塊時間,比如最上面分片可能需要10秒,那麼下面的分片再往右移,就是0.5,然後10.25,然後11.1,然後21.5等等,逐漸的向右移。


這個基本原則是在某個時間點上一定有某個分片去到某個固定的位置,首先我們首先要知道需要在哪個區塊中公開這個分片。這樣做的好處是,如果我們這麼做,就會獲得一種公開交易的能力,而且還可以得到及時確認,可能0.5秒的時間就可以立即確認,得到區塊,然後可以進行證明。如果做得很成功的話,用戶體驗會非常好,類似之前中心化服務器提供的這種體驗一樣,如果我們用第二層方法,從不同的分片進行數據的公佈,邏輯會非常複雜,智能合約也會變得很複雜,用戶錢包會進行很高速、很大量的計算,有多少幣到哪個用戶手上就需要更長時間進行計算,這是我們更需要研究的一點了。


這裡我得出的結論是什麼?如果我們想要做出一個通用型的區塊鏈,就首先要有一個比較通用的基礎設施,能夠讓我們把數據放在這個鏈上,還可以在這個鏈上做更快的計算。我們利用工具進行應用的過程比較複雜,不同的用戶有不同的實施方式。所以區塊鏈要求我們有一個全球的共識,就是怎樣進行儲存、怎樣對於某個用戶具體所有的幣的數量進行準確了解,這些都需要我們通過更進一步的應用來實現的;而且我們需要保證整個流程的簡便性,防止這個流程變得複雜;需要對於共識機制進行不斷的提升,創造出有不同應用的底層協議。


這已經成為一個非常活躍的研究,我們正在研究怎樣設計剛才所說的這些機制,讓我們創造出擴展區塊鏈以上的不同應用,它擁有很強的性能,可以進行非常快速的交易,甚至是異步的、同步的交易都可以實現,而且還可以實現跨分片的交易,當然,還有其他很多很好的性能,比如其他的加密方式進行進一步擴展。


因此,二層的這個機制是和以太坊2.0密切相關的,它可以把區塊鏈更上一層樓。