Skip to main content
The Error Suggestion Engine is a heuristic-based system that analyzes Soroban transaction failures and provides actionable suggestions to help developers fix common errors. This feature is particularly valuable for developers transitioning to Stellar development.

Features

  • Heuristic analysis: Pattern matching against common error scenarios
  • Confidence levels: Each suggestion includes a confidence rating (high, medium, low)
    • Call tree analysis: Analyzes entire execution traces including nested contract calls
  • Clear marking: All suggestions are clearly marked as β€œPotential Fixes”
Suggestions are heuristic-based and may not always be accurate. Always verify before applying fixes.

How it works

The suggestion engine automatically integrates with the erst debug command:
Example output:

Built-in error patterns

The engine includes seven built-in rules that detect common Soroban errors:

1. Uninitialized contract

string
default:"high"
High confidence rule
Triggers when:
  • Events contain keywords: empty, not found, missing, null
  • Storage-related events indicate empty state
Suggestion:

2. Missing authorization

string
default:"high"
High confidence rule
Triggers when:
  • Events contain keywords: auth, unauthorized, permission, signature
  • Authorization-related failures detected
Suggestion:

3. Insufficient balance

string
default:"high"
High confidence rule
Triggers when:
  • Events contain keywords: balance, insufficient, underfunded, funds
  • Balance-related errors detected
Suggestion:

4. Invalid parameters

string
default:"medium"
Medium confidence rule
Triggers when:
  • Events contain keywords: invalid, malformed, bad, parameter
  • Parameter validation failures detected
Suggestion:

5. Contract not found

string
default:"high"
High confidence rule
Triggers when:
  • Contract ID is empty or all zeros
  • Events indicate missing contract
Suggestion:

6. Resource limit exceeded

string
default:"medium"
Medium confidence rule
Triggers when:
  • Events contain keywords: limit, exceeded, quota, budget
  • Resource exhaustion detected
Suggestion:

7. Reentrancy detected

string
default:"medium"
Medium confidence rule
Triggers when:
  • Events contain keywords: reentrant, recursive, loop
  • Reentrancy patterns detected
Suggestion:

Confidence levels

Each suggestion includes a confidence indicator:

πŸ”΄ High confidence

  • Strong pattern match with well-known error scenarios
  • Multiple indicators point to the same issue
  • Solution is straightforward and commonly applicable

🟑 Medium confidence

  • Partial pattern match or ambiguous indicators
  • Multiple possible causes
  • Solution may require additional investigation

🟒 Low confidence

  • Weak pattern match or speculative
  • Limited evidence
  • Suggestion is exploratory

Programmatic usage

Basic usage

Analyzing call trees

For comprehensive analysis of nested contract calls:

Adding custom rules

Extend the engine with project-specific error patterns:

Architecture

The suggestion engine follows a clean, extensible architecture:

Processing flow

  1. Event collection: Gather all diagnostic events from transaction
  2. Pattern matching: Check each event against rule keywords and conditions
  3. Deduplication: Ensure each rule triggers only once
  4. Formatting: Present suggestions with confidence indicators
  5. Display: Show suggestions before security analysis

Best practices

For users

Suggestions are heuristic-based and may not always be accurate. Review each suggestion in the context of your specific contract logic.
Prioritize high-confidence suggestions first. Medium and low confidence suggestions may require more investigation.
Suggestions are general-purpose. Consider your specific contract logic and use case when applying fixes.
Use suggestions alongside trace analysis and security findings for a complete picture of the issue.

For developers

Each rule should target a specific error pattern. Avoid overly broad matching.
Test rules against various scenarios to minimize false positive suggestions.
Clearly document what triggers each rule and why it suggests a particular fix.
Add new rules as common error patterns emerge from the community.

Testing

Run the suggestion engine test suite:
Test coverage includes:
  • All built-in rules
  • Custom rule addition
  • Call tree analysis
  • Deduplication logic
  • Formatting output
  • Edge cases (empty events, no matches, etc.)

Example scenarios

Scenario 1: Uninitialized contract

Output:
Resolution: Call the contract’s initialize() function before other operations.

Scenario 2: Multiple issues detected

Output:
Resolution: Address authorization first (high confidence), then optimize resources if needed.

Scenario 3: No suggestions

If no patterns match, the engine provides no suggestions, allowing you to focus on manual debugging.

Contributing

To add new error detection rules:
  1. Identify a common error pattern from community issues
  2. Define keywords and event checks
  3. Write a clear, actionable suggestion
  4. Add comprehensive test cases
  5. Document the rule in this guide
  6. Submit a PR with real-world examples
Contributions of new error patterns are welcome! Help make Erst smarter for the entire community.

Future enhancements

  • Machine learning-based pattern detection
  • Integration with contract source code for context-aware suggestions
  • Suggestion ranking based on historical accuracy
  • Community-contributed rule database
  • Multi-language support for suggestions
  • Interactive suggestion refinement
  • Link suggestions directly to relevant documentation

Next steps

Configuration overview

Learn about all configuration methods

Environment variables

Configure using environment variables