{"id":14855159,"url":"https://github.com/Ackee-Blockchain/wake","last_synced_at":"2025-09-18T11:32:25.391Z","repository":{"id":37074916,"uuid":"447302234","full_name":"Ackee-Blockchain/wake","owner":"Ackee-Blockchain","description":"Wake is a Python-based Solidity development and testing framework with built-in vulnerability detectors","archived":false,"fork":false,"pushed_at":"2025-09-08T17:08:01.000Z","size":113775,"stargazers_count":319,"open_issues_count":31,"forks_count":44,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-09-08T19:06:38.594Z","etag":null,"topics":["deployment","lsp-server","python","solidity","static-analysis","testing","testing-framework"],"latest_commit_sha":null,"homepage":"https://ackee.xyz/wake/docs/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ackee-Blockchain.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-01-12T17:03:42.000Z","updated_at":"2025-09-08T16:17:39.000Z","dependencies_parsed_at":"2023-11-25T11:22:10.462Z","dependency_job_id":"3f96b5a8-0357-4a56-8da9-117870668d12","html_url":"https://github.com/Ackee-Blockchain/wake","commit_stats":{"total_commits":2124,"total_committers":13,"mean_commits":163.3846153846154,"dds":"0.10357815442561202","last_synced_commit":"932dacbf0613f064bd1f273c5033aff035ea4bb3"},"previous_names":["ackee-blockchain/wake","ackee-blockchain/woke"],"tags_count":61,"template":false,"template_full_name":null,"purl":"pkg:github/Ackee-Blockchain/wake","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ackee-Blockchain%2Fwake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ackee-Blockchain%2Fwake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ackee-Blockchain%2Fwake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ackee-Blockchain%2Fwake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ackee-Blockchain","download_url":"https://codeload.github.com/Ackee-Blockchain/wake/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ackee-Blockchain%2Fwake/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275757793,"owners_count":25523098,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-18T02:00:09.552Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deployment","lsp-server","python","solidity","static-analysis","testing","testing-framework"],"created_at":"2024-09-19T18:00:48.114Z","updated_at":"2025-09-18T11:32:25.330Z","avatar_url":"https://github.com/Ackee-Blockchain.png","language":"Python","readme":"# Wake, a Python-based Solidity development and testing framework with built-in vulnerability detectors\n\n![Wake cover](https://github.com/Ackee-Blockchain/wake/blob/main/images/wake_cover.png?raw=true)\n\nFeatures:\n\n- testing framework based on [pytest](https://docs.pytest.org/en)\n- property-based fuzzer\n- deployments \u0026 mainnet interactions\n- vulnerability and code quality detectors\n- printers for extracting useful information from Solidity code\n- static analysis framework for implementing custom detectors and printers\n- Github actions for [setting up Wake](https://github.com/marketplace/actions/wake-setup) and [running detectors](https://github.com/marketplace/actions/wake-detect)\n- language server ([LSP](https://microsoft.github.io/language-server-protocol/))\n- VS Code extension ([Tools for Solidity](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity))\n- solc version manager\n\n## Dependencies\n\n- Python (version 3.8 or higher)\n- Rosetta must be enabled on Apple Silicon Macs\n\n## Installation\n\nvia `pip`\n\n```shell\npip3 install eth-wake\n```\n\n## Documentation \u0026 Contribution\n\nWake documentation can be found [here](https://ackee.xyz/wake/docs/latest).\n\nThere you can also find a section on [contributing](https://ackee.xyz/wake/docs/latest/contributing/).\n\n## Discovered vulnerabilities\n\n| Vulnerability                                   | Severity | Project | Method           | Discovered by    | Resources                                                                                                                                                                                                                       |\n|-------------------------------------------------|----------|---------|------------------|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Profit \u0026 loss accounted twice                   | Critical | IPOR    | Fuzz test        | Ackee Blockchain | [Report](https://github.com/Ackee-Blockchain/public-audit-reports/blob/master/2023/ackee-blockchain-ipor-protocol-report.pdf), [Wake tests](https://github.com/Ackee-Blockchain/tests-ipor/blob/main/tests/test_fuzz.py)        |\n| Loan refinancing reentrancy                     | Critical | PWN     | Detector         | Ackee Blockchain | [Report](https://github.com/PWNDAO/pwn_audits/blob/main/protocol/pwn-v1.3-ackee.pdf)                                                                                                                                            |\n| Incorrect optimization in loan refinancing      | Critical | PWN     | Fuzz test        | Ackee Blockchain | [Report](https://github.com/PWNDAO/pwn_audits/blob/main/protocol/pwn-v1.3-ackee.pdf), [Wake tests](https://github.com/Ackee-Blockchain/tests-pwn-protocol/blob/main/tests/test_refinance_comm_transfer_missing_found_fuzz.py)   |\n| Console permanent denial of service             | High     | Brahma  | Fuzz test        | Ackee Blockchain | [Report](https://github.com/Ackee-Blockchain/public-audit-reports/blob/master/2023/ackee-blockchain-brahma-console-v2-report.pdf)                                                                                               |\n| Swap unwinding formula error                    | High     | IPOR    | Fuzz test        | Ackee Blockchain | [Report](https://github.com/Ackee-Blockchain/public-audit-reports/blob/master/2023/ackee-blockchain-ipor-protocol-report.pdf), [Wake tests](https://github.com/Ackee-Blockchain/tests-ipor/blob/main/tests/test_fuzz.py)        |\n| Swap unwinding fee accounted twice              | High     | IPOR    | Fuzz test        | Ackee Blockchain | [Report](https://github.com/Ackee-Blockchain/public-audit-reports/blob/master/2023/ackee-blockchain-ipor-protocol-report.pdf), [Wake tests](https://github.com/Ackee-Blockchain/tests-ipor/blob/main/tests/test_fuzz.py)        |\n| Incorrect event data                            | High     | Solady  | Integration test | Ackee Blockchain | [Report](https://github.com/Ackee-Blockchain/public-audit-reports/blob/master/2023/ackee-blockchain-solady-report.pdf), [Wake tests](https://github.com/Ackee-Blockchain/tests-solady/blob/main/tests/test_erc1155.py)          |\n| `INTEREST_FROM_STRATEGY_BELOW_ZERO` reverts DoS | Medium   | IPOR    | Fuzz test        | Ackee Blockchain | [Report](https://github.com/Ackee-Blockchain/public-audit-reports/blob/master/2023/ackee-blockchain-ipor-protocol-report.pdf), [Wake tests](https://github.com/Ackee-Blockchain/tests-ipor/blob/main/tests/test_fuzz.py)        |\n| Inaccurate hypothetical interest formula        | Medium   | IPOR    | Fuzz test        | Ackee Blockchain | [Report](https://github.com/Ackee-Blockchain/public-audit-reports/blob/master/2023/ackee-blockchain-ipor-protocol-report.pdf), [Wake tests](https://github.com/Ackee-Blockchain/tests-ipor/blob/main/tests/test_fuzz.py)        |\n| Swap unwinding fee normalization error          | Medium   | IPOR    | Fuzz test        | Ackee Blockchain | [Report](https://github.com/Ackee-Blockchain/public-audit-reports/blob/master/2023/ackee-blockchain-ipor-protocol-report.pdf), [Wake tests](https://github.com/Ackee-Blockchain/tests-ipor/blob/main/tests/test_fuzz.py)        |\n| Liquidation deposits accounted into LP balance  | Medium   | IPOR    | Fuzz test        | Ackee Blockchain | [Report](https://github.com/Ackee-Blockchain/public-audit-reports/blob/master/2023/ackee-blockchain-ipor-protocol-report.pdf), [Wake tests](https://github.com/Ackee-Blockchain/tests-ipor/blob/main/tests/test_st_eth_fuzz.py) |\n| Missing receive function                        | Medium   | Axelar  | Fuzz test        | Ackee Blockchain | [Wake tests](https://github.com/Ackee-Blockchain/tests-axelar-interchain-governance-executor/blob/main/tests/test_fuzz.py)                                                                                                      |\n| `SafeERC20` not used for `approve`              | Medium   | Lido    | Fuzz test        | Ackee Blockchain | [Wake tests](https://github.com/Ackee-Blockchain/tests-lido-stonks/blob/main/tests/test_fuzz.py)                                                                                                                                |\n| Non-optimistic vetting \u0026 unbonded keys bad accounting | Medium   | Lido    | Fuzz test        | Ackee Blockchain | [Report](https://github.com/lidofinance/audits/blob/main/Ackee%20Blockchain%20Lido%20Community%20Staking%20Module%20Report%2010-24.pdf), [Wake tests](https://github.com/Ackee-Blockchain/tests-lido-csm/blob/main/tests/test_csm_fuzz.py) |\n| Chainlink common denominator bad logic          | Medium   | PWN     | Fuzz test        | Ackee Blockchain | [Report](https://github.com/PWNDAO/pwn_audits/blob/main/protocol/pwn-v1.3-ackee.pdf), [Wake tests](https://github.com/Ackee-Blockchain/tests-pwn-protocol/blob/main/tests/test_fuzz.py)                                         |\n| Outdated/reverting Chainlink feed causes DoS    | Medium   | PWN     | Fuzz test        | Ackee Blockchain | [Report](https://github.com/PWNDAO/pwn_audits/blob/main/protocol/pwn-v1.3-ackee.pdf), [Wake tests](https://github.com/Ackee-Blockchain/tests-pwn-protocol/blob/main/tests/test_fuzz.py)                                         |\n| Incorrect EIP-712 typehash                      | Medium   | PWN     | Detector         | Ackee Blockchain | [Report](https://github.com/PWNDAO/pwn_audits/blob/main/protocol/pwn-v1.3-ackee.pdf)                                                                                                                                            |\n| Incorrect EIP-712 data encoding                 | Medium   | PWN     | Fuzz test        | Ackee Blockchain | [Report](https://github.com/PWNDAO/pwn_audits/blob/main/protocol/pwn-v1.3-ackee.pdf), [Wake tests](https://github.com/Ackee-Blockchain/tests-pwn-protocol/blob/revision-2.0/tests/test_fuzz.py)                                 |\n\n## Features\n\n### Testing framework\n\nSee [examples](https://github.com/Ackee-Blockchain/wake/tree/main/examples) and [documentation](https://ackee.xyz/wake/docs/latest/testing-framework/overview) for more information.\n\nWriting tests is as simple as:\n\n```python\nfrom wake.testing import *\nfrom pytypes.contracts.Counter import Counter\n\n@chain.connect()\ndef test_counter():\n    counter = Counter.deploy()\n    assert counter.count() == 0\n\n    counter.increment()\n    assert counter.count() == 1\n```\n\n### Fuzzer\n\nFuzzer builds on top of the testing framework and allows efficient fuzz testing of Solidity smart contracts.\n\n```python\nfrom wake.testing import *\nfrom wake.testing.fuzzing import *\nfrom pytypes.contracts.Counter import Counter\n\nclass CounterTest(FuzzTest):\n    def pre_sequence(self) -\u003e None:\n        self.counter = Counter.deploy()\n        self.count = 0\n\n    @flow()\n    def increment(self) -\u003e None:\n        self.counter.increment()\n        self.count += 1\n\n    @flow()\n    def decrement(self) -\u003e None:\n        with may_revert(PanicCodeEnum.UNDERFLOW_OVERFLOW) as e:\n            self.counter.decrement()\n\n        if e.value is not None:\n            assert self.count == 0\n        else:\n            self.count -= 1\n\n    @invariant(period=10)\n    def count(self) -\u003e None:\n        assert self.counter.count() == self.count\n\n@chain.connect()\ndef test_counter():\n    CounterTest().run(sequences_count=30, flows_count=100)\n```\n\n### Detectors\n\nAll vulnerability \u0026 code quality detectors can be run using:\n```shell\nwake detect all\n```\n\nA specific detector can be run using:\n```shell\nwake detect \u003cdetector-name\u003e\n```\n\nSee the [documentation](https://ackee.xyz/wake/docs/latest/static-analysis/using-detectors/) for a list of all detectors.\n\n### Printers\n\nA specific printer can be run using:\n```shell\nwake print \u003cprinter-name\u003e\n```\n\nSee the [documentation](https://ackee.xyz/wake/docs/latest/static-analysis/using-printers/) for a list of all printers.\n\n### Custom detectors \u0026 printers\n\nRefer to the [getting started](https://ackee.xyz/wake/docs/latest/static-analysis/getting-started/) guide for more information.\nAlso check out [wake_detectors](https://github.com/Ackee-Blockchain/wake/tree/main/wake_detectors) and [wake_printers](https://github.com/Ackee-Blockchain/wake/tree/main/wake_printers) for the implementation of built-in detectors and printers.\n\n### LSP server\n\nWake implements an [LSP](https://microsoft.github.io/language-server-protocol/) server for Solidity. The only currently supported communication channel is TCP.\n\nWake LSP server can be run using:\n\n```shell\nwake lsp\n```\n\nOr with an optional --port argument (default 65432):\n\n```shell\nwake lsp --port 1234\n```\n\nAll LSP server features can be found in the [documentation](https://ackee.xyz/wake/docs/latest/language-server/).\n\n## License\n\nThis project is licensed under the [ISC license](https://github.com/Ackee-Blockchain/wake/blob/main/LICENSE).\n\n## Partners\n\nRockawayX             |  Coinbase\n:-------------------------:|:-------------------------:\n[![](https://github.com/Ackee-Blockchain/wake/blob/main/images/rockawayx.jpg?raw=true)](https://rockawayx.com/)  |  [![](https://github.com/Ackee-Blockchain/wake/blob/main/images/coinbase.png?raw=true)](https://www.coinbase.com/)\n\n\n\n\n\n\n","funding_links":[],"categories":["Python","Fuzzing Software"],"sub_categories":["Emerging/Specialized Fuzzers"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAckee-Blockchain%2Fwake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAckee-Blockchain%2Fwake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAckee-Blockchain%2Fwake/lists"}