Skip to content

[RULE] Detect Unset State Variables Candidate for Immutable/Constant #593

Description

@mijinummi

Labels: good-first-issue, solidity, rule
Difficulty: Easy
Module: packages/rules/solidity/


🧠 Concept

Detect state variables in Solidity that are only assigned in the constructor or at declaration, recommending constant or immutable modifiers.

⚠️ Problem

Reading standard state variables costs SLOAD gas (2100+ gas for cold reads), whereas constant and immutable variables are stored directly in contract bytecode (PUSH opcodes), saving significant execution gas.

📁 Implementation Scope

  • packages/rules/solidity/src/rules/immutable-check.ts
  • packages/rules/solidity/tests/immutable-check.spec.ts

🛠️ Requirements

  1. Track state variable assignments across all contract methods.
  2. Flag variables that are declared without constant/immutable and are never written to outside the constructor.
  3. Suggest adding immutable (for constructor-assigned variables) or constant (for inline-assigned variables).

🎯 Acceptance Criteria

  • Correctly identifies candidate state variables.
  • Ignores variables modified in public/external/internal functions.

Metadata

Metadata

Labels

Stellar WaveIssues in the Stellar wave program

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions