关于以太坊智能合约升级,编译器版本兼容性问题的介绍

相信很多智能合约初级开发者,在使用以太坊生态平台进行区块链项目开发的过程中,当遇到以太坊智能合约升级了,那么对于原有的编辑过得代码,在新的编译器版本中,并不能完美兼容,经常报错,那么下面信比特技术人员,分析具体原因,对于以太坊升级后,智能合约兼容性问题进行拆解。

以太坊智能合约编译器知识点分析:

(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

你可能感兴趣的:(以太坊,区块链,智能合约)