Skip to content

Wake#

Wake is a Python-based Solidity development and testing framework with built-in vulnerability detectors.

Features#

  • testing framework based on pytest
  • property-based fuzzer
  • deployments & mainnet interactions
  • vulnerability and code quality detectors
  • printers for extracting useful information from Solidity code
  • static analysis framework for implementing custom detectors and printers
  • Github actions for setting up Wake and running detectors
  • language server (LSP)
  • VS Code extension (Tools for Solidity)
  • solc version manager

Resources#

Discovered vulnerabilities#

Wake is used by the Ackee team to perform smart contract audits - and it helped to discover a bunch of high and critical vulnerabilities.

Vulnerability Severity Project Method Resources
Profit & loss accounted twice Critical IPOR Fuzz test Report, Wake tests
Console permanent denial of service High Brahma Fuzz test Report
Swap unwinding formula error High IPOR Fuzz test Report, Wake tests
Swap unwinding fee accounted twice High IPOR Fuzz test Report, Wake tests
Incorrect event data High Solady Integration test Report, Wake tests
INTEREST_FROM_STRATEGY_BELOW_ZERO reverts DoS Medium IPOR Fuzz test Report, Wake tests
Inaccurate hypothetical interest formula Medium IPOR Fuzz test Report, Wake tests
Swap unwinding fee normalization error Medium IPOR Fuzz test Report, Wake tests
Liquidation deposits accounted into LP balance Medium IPOR Fuzz test Report, Wake tests
Missing receive function Medium Axelar Fuzz test Wake tests
SafeERC20 not used for approve Medium Lido Fuzz test Wake tests
Non-optimistic vetting & unbonded keys bad accounting Medium Lido Fuzz test Report, Wake tests