1. 程式人生 > >以太坊虛擬機EVM 和EOS 虛擬機的劣勢!

以太坊虛擬機EVM 和EOS 虛擬機的劣勢!

明顯 字符串拼接 價值 spa 更多 例如 個人能力 現象 sse

EVM:

01 智能合約設計層面

  • 缺乏標準庫支持:EVM缺少完善的標準庫支持,甚至最基本的string類型支持,在EVM中都很雞肋,例如字符串拼接、切割、查找等等都需要開發者自己實現。帶來的後果就是開發者需要關註更多非本身業務的零碎細節,不能專註本身業務開發。同時自行實現的類庫可能會因為時間、空間復雜度太高,消耗大量無謂的gas,又或者開發者從開源項目中借鑒相關類庫代碼,但也會引入更多安全性方面的問題,加重合約代碼審計的復雜度,亦是得不償失。

  • 難以調試和測試:EVM難以調試和測試,EVM除了能拋出OutOfGas異常之外,不會給開發者返回任何信息,無法打印日誌、要做到斷點、單步調試更是完全不可能。雖然event機制可以部分改善這個問題,但event機制的本身設計就決定了他不是一個優雅好用的調試工具。

  • 不支持浮點數:EVM不支持浮點數,以太坊以Wei為最小單位,只有整數,不支持其他粒度的計量,這種設計避免了引入浮點數導致的精度問題,但開發者在實際開發中,為了表示一個eth變量,就會在變量後面跟很多0,導致代碼維護極度復雜。同時不可否認,浮點數在特定的場景下,還是有很大的利用價值的,不能一刀切直接放棄引入。

  • 合約不能升級:EVM不支持合約升級,合約升級是智能合約開發中的一個強需求,也是每一個合約開發者必須要考慮的問題,合約升級可以實現給現有合約打安全補丁、擴展現有合約功能等等。EVM完全不支持升級,開發者只能通過發布新合約來解決這個問題,費時費力。

EOS VM:

EOS是繼以太坊之後,又一現象級的公鏈應用,有自己獨立的一套基於WebAssembly的智能合約引擎,但目前EOS合約開發有如下幾個明顯問題:

  • 賬戶系統不友好:創建賬戶操作難度大,創建賬戶後才能發布合約,EOS需要使用已有賬戶去創建新賬戶,尋找一個擁有EOS賬戶的朋友或第三方,對任何人來說都不是一件很容易的事。創建賬號需要購買RAM,就是需要花錢建賬號,如果找第三方幫忙創建賬號存在資金風險。創建賬號後,還需要抵押EOS換取CPU使用時間和net帶寬,才能在EOS網絡做操作。這些操作對於開發者來說過於繁瑣。

  • RAM價格:RAM價格昂貴,合約運行必須用到RAM,EOS開通了RAM市場,用於交易內存,雖然說RAM可以買賣,但依然存在很多人炒作,導致RAM價格昂貴。

  • 開發難度大:使用C++作為合約開發語言,極大的提高了合約開發門檻,C++本身就極為復雜,在其上還要去調用EOS.IO C++ API完成智能合約開發,對開發者的個人能力要求極高。

以太坊虛擬機EVM 和EOS 虛擬機的劣勢!