assert-violation

Detect assert() misuse in Solidity smart contracts for input validation.

1|1|Updated Feb 18, 2026
One-click install
npx skills add https://github.com/Apegurus/solidity-argus --skill assert-violation
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: assert-violation
Source: https://github.com/Apegurus/solidity-argus/tree/main/skills/vulnerability-patterns/assert-violation
Command: npx skills add https://github.com/Apegurus/solidity-argus --skill assert-violation

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill identifies instances where assert() statements are misused in Solidity smart contracts, which can lead to unexpected gas consumption or security vulnerabilities.

Core Features & Use Cases

  • Detects assert() misuse: Flags assert() used for input validation or external call checks instead of require().
  • Solidity Version Awareness: Considers the different gas behaviors of assert() in Solidity versions before and after 0.8.0.
  • Use Case: Ensure your smart contracts correctly handle validation and state checks, preventing potential denial-of-service or griefing attacks.

Quick Start

Analyze the attached contract 'MyContract.sol' for assert violations.

Frequently Asked Questions about assert-violation

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

FAQPage Schema
Why does using assert() for input validation cause security vulnerabilities in Solidity?

Using assert() for input validation causes vulnerabilities because it consumes all gas on failure and should only check invariants. This Skill detects assert() misuse in Solidity contracts, identifying when it improperly validates user input or external calls instead of require().

How do I detect improper assert() usage in my smart contracts?

You detect improper assert() usage by analyzing contract logic to differentiate true invariant checks from conditions triggered by external factors. This Skill examines attached Solidity files and flags assert() statements used for input validation or external call checking.

Does assert() behavior change between Solidity versions before and after 0.8.0?

Assert() behavior changes significantly across Solidity versions regarding gas consumption and error handling. This Skill analyzes assert violations with Solidity version awareness, considering the different gas behaviors before and after version 0.8.0.

When should I use require() instead of assert() in Solidity?

You should use require() instead of assert() when validating user input or checking external call results, reserving assert() strictly for testing internal invariants. This Skill audits smart contracts to enforce this distinction and prevent denial-of-service attacks.

Can improper assert() usage lead to denial-of-service or griefing attacks?

Improper assert() usage can lead to denial-of-service or griefing attacks by unexpectedly reverting transactions and consuming gas when triggered by user input. This Skill identifies these vulnerabilities to ensure contracts correctly handle validation and state checks.