{"name":"Wake: A Python Framework for Secure Solidity Development and Fuzz Testing","description":"Wake is a robust Python-based framework designed for secure Solidity development and comprehensive fuzz testing. It provides built-in vulnerability detectors, helping developers build more secure Ethereum dApps. With features like a VS Code extension and CI/CD integration, Wake streamlines the smart contract development workflow.","github":"https://github.com/Ackee-Blockchain/wake","url":"https://osrepos.com/repo/ackee-blockchain-wake","source":"osrepos.com","sourceDescription":"This repository profile is provided by osrepos.com, an open source repository discovery platform.","repositoryProfile":"https://osrepos.com/repo/ackee-blockchain-wake","generatedFor":"open source discovery and AI-assisted research","markdown":"https://osrepos.com/repo/ackee-blockchain-wake.md","json":"https://osrepos.com/repo/ackee-blockchain-wake.json","topics":["python","solidity","testing","fuzzing","static-analysis","blockchain","ethereum","smart-contracts"],"keywords":["python","solidity","testing","fuzzing","static-analysis","blockchain","ethereum","smart-contracts"],"stars":null,"summary":"Wake is a robust Python-based framework designed for secure Solidity development and comprehensive fuzz testing. It provides built-in vulnerability detectors, helping developers build more secure Ethereum dApps. With features like a VS Code extension and CI/CD integration, Wake streamlines the smart contract development workflow.","content":"## Introduction\n\nWake is a powerful Python-based framework for Solidity development and fuzz testing, created by Ackee Blockchain Security. Trusted auditors of major projects like Lido, Safe, and Axelar, Ackee Blockchain built Wake to help developers write safer smart contracts faster. It offers a comprehensive suite of tools for testing, analysis, and deployment of Ethereum dApps.\n\n## Installation\n\nTo get started with Wake, ensure you have Python 3.8 or higher installed. For Apple Silicon Macs, Rosetta must be enabled.\n\nInstall Wake via `pip`:\n\nbash\npip3 install eth-wake\n\n\n## Examples\n\nWake offers powerful features for testing and development.\n\n**Fuzzer Example**\n\nWake's fuzzer is built on its testing framework, enabling efficient fuzz testing of Solidity smart contracts. Here's an example of a fuzz test for a simple counter contract:\n\npython\nfrom wake.testing import *\nfrom wake.testing.fuzzing import *\nfrom pytypes.contracts.Counter import Counter\n\nclass CounterTest(FuzzTest):\n    def pre_sequence(self) -> None:\n        self.counter = Counter.deploy()\n        self.count = 0\n\n    @flow()\n    def increment(self) -> None:\n        self.counter.increment()\n        self.count += 1\n\n    @flow()\n    def decrement(self) -> 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) -> 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 and Printers**\n\nWake includes built-in vulnerability and code quality detectors. You can run all detectors with:\n\nbash\nwake detect all\n\n\nTo run a specific detector, use:\n\nbash\nwake detect <detector-name>\n\n\nPrinters can extract useful information from Solidity code:\n\nbash\nwake print <printer-name>\n\n\nFor custom detectors and printers, refer to the [getting started guide](https://ackee.xyz/wake/docs/latest/static-analysis/getting-started/ \"Wake Static Analysis Getting Started Guide\" target=\"_blank\").\n\n**LSP Server**\n\nWake implements a Language Server Protocol (LSP) server for Solidity, providing features like autocompletion and hints in your IDE. Run it with:\n\nbash\nwake lsp\n\n\nYou can also specify a port (default is 65432):\n\nbash\nwake lsp --port 1234\n\n\n## Why Use Wake\n\nWake stands out as a comprehensive framework for Solidity development due to its unique combination of features:\n\n*   **Built-in Fuzzing:** Automatically generates diverse inputs and edge cases to uncover hidden vulnerabilities, including manually-guided and property-based fuzzing.\n*   **Vulnerability Detectors:** Catches common issues like reentrancy, overflows, and logic flaws early in the development cycle.\n*   **Seamless Developer Experience:** Offers a VS Code extension, GitHub Actions for CI/CD integration, and a `solc` manager for consistent builds.\n*   **Cross-chain Testing:** Compatible with popular environments such as Anvil, Hardhat, and Ganache.\n*   **Pytest Integration:** Leverages the familiar `pytest` framework for writing clean and simple tests.\n*   **Static Analysis Framework:** Provides a robust framework for custom detectors and printers, allowing for project-specific rules and insights.\n*   **Language Server Protocol (LSP):** Delivers autocompletion, hints, and references directly within your IDE, enhancing productivity.\n\nWake's ability to combine advanced fuzzing, static analysis with detectors, and a full-featured LSP server in a Python environment makes it a powerful tool for ensuring the security and quality of smart contracts.\n\n## Links\n\nFor more detailed information, contributions, and community engagement, explore the following resources:\n\n*   [Wake Documentation](https://ackee.xyz/wake/docs/latest \"Wake Documentation\" target=\"_blank\")\n*   [Contributing Guide](https://ackee.xyz/wake/docs/latest/contributing/ \"Wake Contributing Guide\" target=\"_blank\")\n*   [Follow Wake on X/Twitter](https://x.com/WakeFramework \"Wake Framework on X/Twitter\" target=\"_blank\")\n*   [Wake GitHub Repository](https://github.com/Ackee-Blockchain/wake \"Wake GitHub Repository\" target=\"_blank\")","metrics":{"detailViews":9,"githubClicks":13},"dates":{"published":null,"modified":"2026-01-21T08:01:27.000Z"}}