Troubleshoot Errors
Diagnose and resolve common Algorand development errors.
Error Categories
| Category | Common Causes | Reference |
|---|---|---|
| Contract Errors | Assert failures, opcode budget, invalid operations | contract-errors.md |
| Transaction Errors | Overspend, invalid params, group issues | transaction-errors.md |
Quick Diagnosis Flow
- •Identify the error type from the message
- •Check the error code if present (e.g.,
pc=123) - •Find the root cause using the reference docs
- •Apply the fix from the common solutions
Common Error Patterns
Logic Eval Error (Contract Failure)
code
logic eval error: assert failed pc=123
Cause: An assert statement in the smart contract evaluated to false.
Debug steps:
- •The
pc=123indicates the program counter where failure occurred - •Use source maps to find the exact line in your code
- •Check the assertion condition and input values
Transaction Rejected
code
TransactionPool.Remember: transaction TXID: overspend
Cause: Sender account has insufficient balance for amount + fee.
Fix: Fund the sender account or reduce the transaction amount.
Opcode Budget Exceeded
code
logic eval error: dynamic cost budget exceeded
Cause: Contract exceeded the 700 opcode budget per app call.
Fix:
- •Add more app calls to the group for additional budget (pooled)
- •Optimize contract logic to reduce operations
- •Split complex operations across multiple calls
Asset Not Opted In
code
asset ASSET_ID missing from ACCOUNT_ADDRESS
Cause: The receiving account hasn't opted into the asset.
Fix: Have the receiver opt in before transferring:
python
algorand.send.asset_opt_in(AssetOptInParams(
sender=receiver_address,
asset_id=asset_id,
))
How to Proceed
- •Find your error in the category references below
- •Understand the cause from the explanation
- •Apply the solution from the code examples
References
- •Contract Errors - Smart contract and logic errors
- •Transaction Errors - Transaction and account errors
- •Debugging Guide
- •Error Handling in AlgoKit Utils