Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add SMTChecker to nightly build #547

Open
elenadimitrova opened this issue Feb 18, 2019 · 0 comments
Open

Add SMTChecker to nightly build #547

elenadimitrova opened this issue Feb 18, 2019 · 0 comments

Comments

@elenadimitrova
Copy link
Contributor

elenadimitrova commented Feb 18, 2019

SMT Checker is an experimental verification tool we can enable directly in contracts via pragma experimental SMTChecker statement.

Similarly to how we run mythril in the nightly build we need to compile our contracts with the Solidity SMTChecker pragma enabled. We have an experimental branch where this is tested. Below are the steps and changes done so far:

  1. Build custom solc with Z3 support
    Note that installing Z3 for me wasn't exactly straight forward, so leaving notes here in case anyone faces the same problems:
python scripts/mk_make.py
cd build
make
sudo make install
  1. Switch the truffle compiler to use this 👆
compilers: {
    solc: {
      version: "native",
    }
  }
  1. Script the addition of SMTChecker experimental pragma in CI
  2. Run solc contracts/PatriciaTree/Data.sol --allow-paths lib/dappsys/*.sol as an example, which results in Segmentation fault: 11 potentially meaning a bad solc build.

Note the ongoing work to better integrate the SMTChecker capabilities in the dev experience, e.g. ethereum/solc-js#316

Related materials
Presentation by Chris Reitwiessner from EF
DevCon4 talk by EF's Leonardo Alt on using SMTChecker

@kronosapiens kronosapiens changed the title Compile contracts with enabled Solidity SMTChecker in nightly build Add SMTChecker to nightly build Sep 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant