halmos

Perform symbolic testing on EVM smart contracts using Halmos and SMT solvers.

4|1|Updated Jan 30, 2026
One-click install
npx skills add https://github.com/hairyf/blockchain-skills --skill halmos
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: halmos
Source: https://github.com/hairyf/blockchain-skills/tree/main/skills/halmos
Command: npx skills add https://github.com/hairyf/blockchain-skills --skill halmos

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill automates the rigorous verification of EVM smart contracts by employing symbolic execution and SMT solvers, ensuring contract correctness beyond typical fuzzing.

Core Features & Use Cases

  • Symbolic Testing: Verifies contract properties against all possible inputs, not just random samples.
  • Invariant Verification: Ensures critical contract states remain consistent across operations.
  • Use Case: Automatically test a newly deployed ERC20 token contract to guarantee that its transfer function adheres to all expected invariants, even with symbolic sender, receiver, and amount values.

Quick Start

Use the halmos skill to symbolically test the 'MyToken' contract for invariant violations.

Frequently Asked Questions about halmos

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I verify EVM smart contract invariants beyond standard fuzzing?

To verify EVM smart contract invariants beyond fuzzing, symbolic testing uses SMT solvers to check contract properties against all possible inputs rather than random samples, ensuring exhaustive correctness for critical state operations.

Can I run symbolic testing on Foundry-style tests for my smart contracts?

Yes, symbolic testing supports Foundry-style tests natively, allowing you to execute symbolic verification on existing Foundry test suites using SMT solvers like cvc5, Yices, or Bitwuzla.

What is the difference between symbolic testing and invariant testing for smart contracts?

Symbolic testing uses SMT solvers to mathematically verify properties against all possible input values, while invariant testing focuses on ensuring specific contract states remain consistent across operations; symbolic testing can encompass invariant verification.

Do I need an SMT solver to run symbolic tests on EVM contracts?

Yes, symbolic testing requires integration with an SMT solver like Yices, cvc5, or Bitwuzla to perform the exhaustive mathematical verification needed for EVM smart contract security and correctness checks.

How do I test ERC20 transfer functions with symbolic arguments?

You can test ERC20 transfer functions by providing symbolic sender, receiver, and amount values to your test suite, allowing the SMT solver to automatically verify that the function adheres to all expected invariants.