ETH、EOS與BCH智慧合約框架的比較
要點速覽:
1.POS共識演算法需要解決的問題太多,太多的狀態需要在協議考慮到,這也是Casper協議被推遲的原因。
2.不建議自己開發一種新的語言或者使用自己開發虛擬機器技術,區塊鏈行業的研發實力並沒有那麼強大。
3.公鏈進展還是屬於比較早期,我們需要解決的問題也會比較多,比如隱私性的問題,包括一些資料型別的使用。
今天要分享的是 ETH、EOS與BCH智慧合約框架的比較 。BCH的智慧合約主要介紹下Wormhole的開發和想法。
比特幣的腳本系統其實也是一種程式語言,早期的時候也用來實現一些簡單的合約https://ivy.copernet.io/。我們也改了一個基於指令碼的程式設計,但是這個腳本系統很不好用,而且也不適合寫我們現在理解的智慧合約。
這是因為UTXO和賬戶模型的不同,一個大的問題就是比特幣裡面只有私鑰能夠控制幣,程式碼無法控制幣。
用合約語言的方式寫程式碼,會被翻譯成BCH的指令碼。上面的合約會被翻譯成下面的指令碼。
下面我要聊的BCH智慧合約不是這個,是指我們在設計和開發的Wormhole的智慧合約。
三個做對比的話,首先是共識的不同:POW 、POS、DPOS。
工作量證明(Proof Of Work,簡稱POW),簡單理解就是一份證明,用來確認你做過一定量的工作,PoW模型是目前最去中心化的區塊鏈系統,是不需要許可的系統,任何人都可以通過獲取算力加入POW中,但是它也有自己的問題,POW的幣種進化速度會很慢,各種新特性的發展速度會很慢。
POW達成共識的時間會很慢,ETH通過GHOST協議才只能做到15秒一個出塊時間,這會嚴重影響POW上的智慧合約的確認時間。
至於POS協議,目前並沒有看到一個好的安全的POS協議在執行。眾所周知,ETH未來的協議演進方向是Casper協議,POS共識演算法需要解決的問題太多,太多的狀態需要在協議考慮到,這也是Casper協議被推遲的原因,目前來看對於Casper協議的未來,我個人並不是那麼樂觀。
DPOS是犧牲了去中心化,但它又不是完全的中心化,是一種弱中心化的架構。犧牲去中心化的原因是它想提升效能,這個方向是會能給我帶來很多的思考,在整個區塊鏈執行上,如果我們說能把BTC、BCH,現在的ETH這種POW模型認為是最去中心化的話,到中心化之間還有很多中間狀態的,是不是能選一個方式來滿足需求?
這是一個很值得思考的問題,基於一個弱中心化的信任網路,能給我們帶來多少價值,EOS是值得觀察和學習的。
DPOS的治理模型已經和之前的區塊鏈的治理模型發生了很大的變化,它現在的模型已經在形成比較穩定的結構了,它的開發者很少直接面對普通使用者了,中間有一個超級節點的角色,超級節點直接對自己的選民負責,這在很多的政治結構裡都出現過。全民投票的政治模型裡,每個人都需要投票。還有一種是選出一個代表,這個代表幫選民做決定,這種方式更加的專業。好的治理模型是未來公鏈發展的一個重要特性。
出塊速度上不同
EOS上的出塊時間可以做到0.5的出塊,這樣一個智慧合約可以秒級的時間被確認。
共識的不同
這造成了出塊的不同,DPOS可以做0.5秒的出塊時間,這也是目前很多菠菜應用選擇EOS的原因,而ETH上是15秒,確認時間會給應用帶來很多的問題,人們更傾向於確定性,而不是非確定性,目前BCH上的確認時間是10分鐘,長的確認時間也會嚴重的限制應用的使用,希望未來BCH能在這些方向上做更多的改進。
從15秒的確定時間到0.5秒,EOS上的確讓以前在ETH不是那麼火爆的應用重新煥發了生命力。
Gas費用的不同
EOS採用了抵押模型,導致了很多應用沒有辦法獲取到資源,在EOS上開一個賬戶都需要有人提供專門的服務,而記憶體和CPU價格被爆炒也反映了這種模型存在的問題。
ETH採用Gas模型,這是目前執行比較合理的一種方式,但是也有另外的問題就是資源是動態變化的,CPU、記憶體的價格一直在變化,所以ETH的Gas也在不斷的調整,而使用智慧合約的價格不穩定也是ETH一直在嘗試解決的問題。
在Wormhole開發智慧合約的時候我們一直比較重視Gas的使用,最好的方式有可能是Gas只用在收取需要高消耗資源的情況,對於真實的使用者想辦法讓他們以更低的成本使用整個網路,這是一個非常有挑戰的事情,目前我們團隊也在一直優化這部分的演算法,也會在Gas的定價上採取更多的靈活性。
TPS的不同
EOS目前能夠處理2000-3000TPS(非智慧合約執行資料),隨著程式碼的優化以及超級節點處理能力的提高,這個資料還會上升。
ETH目前是15-20TPS,這是ETH目前面對的一個最好的問題,從加密貓到現在ETH在TPS上沒有什麼進步,目前市場也對於ETH出現了一些偏悲觀的判斷就是技術上沒有太多的進步。
BCH: 目前的TPS是100左右,Wormhole上的智慧合約執行並不需要BCH的節點執行智慧合約,所以Wormhole的智慧合約的TPS只依賴於BCH的網路處理能力。藉助與分片、UTXO證明等技術未來BCH能夠處理更大的交易,但這樣也是隻有Wormhole的節點需要執行智慧合約,這樣的好處就是智慧合約的執行和交易執行分離開,能夠處理更多的交易。
DOS攻擊的問題
交易需要支付收費自然就能解決DOS的問題,在ETH上智慧合約的執行在消耗完Gas之後自然停止執行,這樣就可以避免一個合約在節點中一直執行。
EOS上因為不向使用者收取手續費,只需要應用提供商抵押EOS即可,EOS的智慧合約的限制,每個合約必須在30ms內執行完成,不然就認為執行失敗。這樣雖然解決了停機問題,但是還是沒有解決使用者通過抵押EOS發垃圾交易的問題,EOS上面有一些賬戶就在不斷的傳送垃圾交易,目前EOS需要不斷的去解決這些垃圾交易的賬戶。
Wormhole的合約,傾向於提供給智慧合約更長的執行時間,會更加的選擇使用Gas模型,也需要有一個合理的演算法機制讓真實的使用者可以方便的簡單便宜的使用Wormhole合約。Gas模型+演算法選擇的方式是我們未來重點考慮的一個方向,同時也要避免對於系統的攻擊,這是一個需要不斷摸索和不斷調整的問題,讓真實使用者使用,但是也要讓攻擊者的成本不斷提高,另外發送BCH交易需要支付BCH的礦工費用。
主要資料結構的不同
ETH中的MPT樹是其最重要的一個數據結構。
使用字首樹來進行查詢擁有共同字首key的資料時十分高效,例如在字典中查詢字首為pre的單詞, 對於雜湊表來說,需要遍歷整個表,時間效率為O(n);然而對於字首樹來說,只需要在樹中找到字首為pre的節點, 且遍歷以這個節點為根節點的子樹即可。 但是對於最差的情況(字首為空串),時間效率為O(n),仍然需要遍歷整棵樹,此時效率與雜湊表相同。 相比於雜湊表,在字首樹不會存在雜湊衝突的問題。
這個不是太好理解,大家明白他很複雜就好了。這棵樹有很多的劣勢:
直接查詢效率低下,且一次查詢會有m次IO開銷,相比於直接查詢,無論是速率、還是對磁碟的壓力都比較大。
可能會造成空間浪費,當存在一個節點,當樹中沒有與他相同字首的分支時,為了儲存該節 點,需要建立許多非葉子節點來構建根節點到該節點間的路徑,造成了儲存空間的浪費。
MPT樹會導致ETH中一個資料庫操作放大7次以上,這是ETH慢的最重要原因,不改進MPT樹ETH的TPS很難有很大的進展,鄧草原老師的專案就是在嘗試減少這棵的訪問時間。
POW的優勢並沒有被釋放。不可能三角也是一個神話,ETH慢的原因是因為這個樹的拖累,造成了大量的IO操作。
優化這棵樹,ETH提高1-2個數量級的TPS不是太大的問題。
MPT一個很大的好處是SPV錢包能夠更好的好處,但是目前來看ETH生態上基本上沒有SPV錢包的應用。
Wormhole上在設計主要資料結構的時候會選擇和EOS一樣的簡單資料結構,比如merkle tree 可以用來快速算hash,以及做merkle proof即可,完成存在性證明和不存在性證明。
儲存方式不同
ETH使用的是LevelDB,需要儲存MPT中的每一個節點。EOS使用的是MongoDB,很多資料都使用了JSON,網際網路裡面比較常用的一種格式。
Wormhole上的智慧合約未來是使用我們自己設計的針對區塊鏈儲存的儲存引擎,目前還在開發中,完成的時候會一起開源。
合約語言的不同
ETH :Solidity語言, Solidity 是一個面向合約的高階語言,其語法類似於JavaScript ,是執行在以太坊虛擬機器中的程式碼。
EOS: WebAssembly,目前支援最好的是C++未來會支援主流的程式語言,WebAssembly 是一種新的位元組碼格式,主流瀏覽器都已經支援 WebAssembly,包括微軟、Google、蘋果都已經在支援WebAssembly。
Wormhole:我們也使用WebAssembly,我個人並不建議自己開發一種新的語言或者使用自己開發虛擬機器技術,區塊鏈行業的研發實力並沒有那麼強大。WebAssembly的研發基本上聚集了主要大的網際網路公司研發力量。
應用場景不同
ETH: 無許可的智慧合約應用,受限與TPS,上面的運行了很多的偏金融類的智慧合約。
EOS: 較高的TPS,但是因為對於超級許可權的顧慮,上面執行的大多都是菠菜和遊戲相關的智慧合約應用,高價值的智慧合約對於EOS平臺會有所顧慮,比如穩定幣。
Wormhole: 因為有POW做了安全保證,也保證了無許可特性,再有就是BCH社群在努力的提高TPS,我們覺得在Wormhole上能夠執行一些價值轉移的智慧合約以及一些無許可的智慧合約。
整體來說,ETH還需要在工程上能夠看到巨大的進步,不然被其他公鏈超越基本上是很快的事情。
EOS上的超級許可權的確會讓人顧忌,對於上面執行一個專案主要資產的時候,會有讓人會擔心超級許可權的控制,這個是EOS上需要解決的問題。
公鏈進展還是屬於比較早期,我們需要解決的問題也會比較多,比如隱私性的問題,包括一些資料型別的使用。
公鏈創新者的荊棘之處在於勇於創新的永遠是少部分人,在很長時間內都有可能不會被認可,但這也是區塊鏈給的自由,不用妥協,要自由就做好承擔代價的準備。
我個人非常看好區塊鏈未來的發展,因為,從本質上來講,區塊鏈是一個分散式的公共賬本,所有人對這個賬本都有查詢的權利,沒有一個單一的使用者可以對它進行控制。那整個區塊鏈系統的參與者就會維護整個賬本的更新,它需要按照嚴格的規則共識來進行修改。
其次,不可篡改性從根本上改變了中心化信任的創造方式,它是依賴於數學以及機器去建立的信任而不是人去建立的,信任的建立是非常難的。在整個人類的發展過程中,人類之所以發展到現在其實是通過一些語言或者說和陌生人交流來達到大規模協作的目的,如果沒有這種方式協作的話,很難去高效地組建團隊,整個過程其實是信任的基礎。
網際網路其實是一個大的合作網路,它所帶來的信任其實是一種領袖的信任值,比如說我們信馬雲、馬化騰等,是因為理解他們的背後是淘寶和騰訊,這種信任的積累是長時間打造的。
現在社會更多的是一種制度化信任,比如說我們對議會制這種制度是認可和鼓勵的。當然到了區塊鏈的時代,整個信任的建立是由機器達到的,就是出現程式碼,整個程式碼在區塊鏈上會被執行,然後會達到讓大家更好的去協作,更低成本的構建一個大型的網路。人類歷史上有可能第一次達到零成本去建立信任。因為區塊鏈上的的資料是可以直接相信的。
這個變革會非常巨大,還有就是價值的傳遞,區塊鏈本身是一個地址到另外一個地址的轉移,這就是價值的傳遞。之前的網際網路沒有公眾號的出現,也沒有打賞這種工具出現,其實意味著網際網路上沒有一個萬億級的市場,現在因為打賞的出現,價值可以高速流通,所以出現了一種知識創新的模式。
現在我們都知道跨國轉賬是非常困難的,大概要三到五天的時間才能做到,而且手續費還不固定,即使我們坐飛機坐到北美那邊也頂多二十多個小時,這樣你人都到了你匯的錢還不一定到,這本身是非常不合理的,區塊鏈是能夠改變這些的。
智慧合約其實是一個智慧的合同,未來也很可能會出現可程式設計的經濟、經濟學等,改變經濟領域的一些方面以及互動方式,這些都對於未來的發展是非常重要的。
網際網路及制度帶來的發展是資訊的高速流轉,但是網際網路沒有解決的問題是價值的傳遞及價值的高速流動,那這個問題是區塊鏈能夠解決的。如果說區塊鏈能做到這一步的話,整個人類會發生比網際網路所帶來的影響力更大的一次變革。那這個變革所釋放出來的自由、所能達到的透明度,能營造一個更加公平的環境,這在人類歷史上是從來沒有過的。價值轉移、信任建立以及智慧合約會給整個人類帶來不一樣的世界。