以太坊虛擬機器EVM 和EOS 虛擬機器的劣勢!
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完成智慧合約開發,對開發者的個人能力要求極高。