Solidity 源文件第一行通常是 pragma solidity ^0.8.20;。它不改变代码行为,而是声明这段代码要求的编译器版本范围,防止用不兼容的编译器编译出意外结果。
版本号遵循语义化版本 主版本.次版本.补丁: - ^0.8.20:最常见,表示「不低于 0.8.20,且不跨越到 0.9.0」,即允许 0.8.x 的新版本。 - ~0.8.20:只允许补丁升级(0.8.20 ~ 0.8.x 中更高版本,不进 0.9)。
>=0.8.0 <0.9.0:最显式的写法。 - 不写符号直接0.8.20:锁定唯一版本。
0.8.0 是一个关键分水岭:从 0.8.0 起编译器内置了整数溢出/下溢检查(之前需要 SafeMath 库),新项目应直接使用 0.8.x。

审计合约时先看 pragma:如果版本早于 0.8.0 且没用 SafeMath,就要立刻检查所有算术运算的溢出风险。








