MCD mainnet and testnet contract addresses
View Changelog
Home>Security>Formal Verification

Formal Verification

Overall, the MCD system's core contracts have been fully formally verified, and the verification of peripheral and helper contracts is ongoing. We are now currently working on the formal verification of the tokens that may be voted in as new collateral types, focusing on formally verifying the secondary contracts as well as the governance contracts in the system, and have incorporated formal verification into our continuous testing and release processes. In terms of our in-house efforts, we are leveraging klab, KEVM, and the K Framework for our Formal verification processes.

Small-step semantics:

  • DSS Core - executable specification
  • Exhaustive reachability claims
  • EVM bytecode performs as we expect
  • Function-level correctness
  • Transaction-level correctness

Big-step semantics:

  • Maker DSL / State Machine
  • High-level system model (K)
  • System-level invariants
  • Exhaustive behaviour checking
  • Executable system documentation

Update - Formal Verification that has been completed thus far:

  • Core system
  • Dai token contract
  • Auction contracts
  • Dai Savings Rate (DSR)
  • Emergency shutdown module (ESM)
  • The Oracle security module (OSM) has been largely completed.

Overall, the plan is to continue our formal verification efforts on the road to launching MCD, which includes updating past proofs based on the findings of our audits and bug findings.

Was this document helpful?

Edit this page

Make the community proud with your contributions

Expert on this topic? If you want to contribute, you can edit this page using Tina CMS or directly on Github.
Edit on Github
You'll be credited and you'll be helping the Maker community.
Last Edit:Wed Jan 13 2021