一、 pragma关键字
合约定义文件的第一行是pragma(pragmatic information)编译版本说明。 solidity语法在快速修订和变化中,这里通过pragma来说明当前文件所使用的solidity标准的版本,这样编译器就能够知道是否可以处理。
pragma solidity ^0.4.0;
版本号是三个数字的。注意到这里有一个^符号,意味着版本号规则为大于或者等于0.4.0,并且小于0.5.0的才可以。 这种做法的考虑是,编译器在 0.5.0 版本之前不会有重大变更,所以可确保源代码始终按预期被编译。 上面例子中不固定编译器的具体版本号,因此编译器的补丁版也可以使用。 可以使用更复杂的规则来指定编译器的版本,表达式遵循 npm版本语义
当前的sol文件使用 ^0.4.0即可。
二、版本号语义
有兴趣的同学可以进一步了解。
简单比较符
版本范围语义可以使用 <, <=, >, >=, =等比较符号来约定,比如 >=1.2.7,指最低版本必须是1.2.7。1.2.6、1.1.0等都不行。
范围连接符
也可以使用-来表示范围, 比如1.2.3-2.3.4,指版本 >=1.2.3 且 <=2.3.4 的范围。
X通配符
使用x或者*来通配,比如:
-
- : 任何版本
- 1.x : >=1.0.0 且 <2.0.0的版本
- 1.2.x : >=1.2.0 且 <1.3.0的版本
~范围适配符
按照次低版本号的上一个版本来比较。
- ~1.2.3 即 >=1.2.3 且 <1.(2+1).0 即 >=1.2.3 且 <1.3.0
- ~1.2 即 >=1.2.0 且 <1.(2+1).0 即 >=1.2.0 且 <1.3.0 (等同于1.2.x)
- ~1 即 >=1.0.0 且 <(1+1).0.0 即 >=1.0.0 且 <2.0.0 (等同于1.x)
- ~0.2.3 即 >=0.2.3 且 <0.(2+1).0 即 >=0.2.3 且 <0.3.0
- ~0.2 即 >=0.2.0 且 <0.(2+1).0 即 >=0.2.0 且 <0.3.0 (等同于0.2.x)
- ~0 即 >=0.0.0 且 <(0+1).0.0 即 >=0.0.0 且 <1.0.0 (等同于0.x)
^范围适配符
按照 0 出现的最高版本号来比较:
- ^1.2.3 即 >=1.2.3 且 <2.0.0
- ^0.2.3 即 >=0.2.3 且 <0.3.0
- ^0.0.3 即 >=0.0.3 且 <0.0.4
感谢您对本文的关注,如果您对区块链技术有兴趣,可以加入我们一起探讨, 请扫码关注“可可链”的微信公众号,并留言“加入可可链”。
本文欢迎转载,转载时请注明本文来自 微信公众号“可可链”。