相信很多智能合約初級開發者,在使用以太坊生態平臺進行區塊鏈專案開發的程序中,當遇到以太坊智能合約升級了,那么對于原有的編輯過得代碼,在新的編譯器版本中,并不能完美兼容,經常報錯,那么下面信位元技術人員,分析具體原因,對于以太坊升級后,智能合約兼容性問題進行拆解,
以太坊智能合約編譯器知識點分析:
(1)關于solidity語法升級,功能不停更新完善的補充!部署智能合約實際上是部署的16進制編碼(bytecode),使用不同的編譯器版本編碼智能合約,虛擬機認可的還是16進制編碼,不同的編譯器影響的是編碼語法的寫法,
(2)問題分析:
那么,以太坊升級了,是不是之前的智能合約還能兼容?
有沒有向下兼容智能合約版本?
例如:4.0或5.0寫的合約,6.0編譯不通過,為什么?
答:編碼語法和編譯器版本是一套的,實際上和鏈上的虛擬機版本不是一回事兒,用4.0語法寫的智能合約,用4.0的編譯器去編譯,編譯好后,當時以太坊鏈上的虛擬機版本也是低版本,肯定認可,如果虛擬機版本升級了,但是仍然可以運行之前版本編譯的bytecode,以太坊虛擬機升級,和編譯器、編碼語法是沒有關系的,這一點就得到證明(不然,鏈上的智能合約都沒法用了,這不扯淡了嗎,)
關于以太坊智能合約兼容性問題得出結論:
我們逮住一個開發檔案,最好是0.6.x以上的版本進行學習就可以了,但是,如果學習的是0.4.x的也沒有關系,因為,你用配套的編譯器編譯就可以了,最后呈現給虛擬機的也是bytecode,虛擬機是向下兼容的,而編譯版本是不會向下兼容的,因為有增刪改功能組件的影響,
當然更高的編譯器版本代表著新的、完善的功能使用,
文章參考資料:http://www.bitpoa.com/BlockchainCollege/114.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/243632.html
標籤:區塊鏈
上一篇:資訊安全(一)之橢圓曲線方程
