Solidity compiler 內建一些 formal verification 的設定 (參考文件為 v0.8.25),簡介如下:
config §
contracts
§
- 指定哪些合約需要被 model checker 分析
- 給定合約的路徑,以及合約名稱
engine
§
- 指定使用哪個 model checker engine
- 選項有:
all
, bmc
, chc
, none
solvers
§
- 指定使用哪個 model checker solver
- 選項有:
cvc4
, eld
, smtlib2
, z3
- 建議選擇 z3,z3 可以同時支援 bmc 和 chc engine
invariants
§
- 內建的 invariants,目前只能檢查兩個 invariants
- contract invariant
- reentrancy invariant
targets
§
- SMTCheck 建立的 target
- 選項有
assert
針對 assert()
的 condition 做驗證
underflow
overflow
divByZero
constantCondition
popEmptyArray
outOfBounds
example §
Log 如下:
reference §