Skip to main content
When an Aura transaction fails on-chain, Alephium reports it as a numeric assertion failure rather than a message. This page turns that number back into the thing that actually went wrong.
These are contract error codes, returned by transactions. If you are getting an error back from the REST API instead, you want API errors, which use string codes like INVALID_ARGUMENT.

Reading a failed transaction

A reverted Aura transaction reports:
1

Identify the contract

Match the address against Contracts. If it is not one of the singletons, it is an individual market, so use the MarketContract table.
2

Look up the code in that contract's table

The same number means different things in different contracts. Code 4 is ALREADY_RESOLVED in a market and Unauthorized in the factory. You have to know which contract threw it.
Codes are stable and are never reused. Gaps in the numbering are intentional, so a decoder that maps by position stays correct across releases.

MarketContract

Thrown by an individual market: order placement, settlement, claims, and teardown. Codes 2 and 5 are reserved and not thrown.

MarketFactory

Thrown when proposing markets, linking related proposals, or executing governance changes. Codes 0 through 3, 5, 10, 11, and 17 are reserved and not thrown.

OptimisticOracle

Thrown during outcome submission, disputes, commit and reveal voting, and penalty processing. Codes 5, 6, and 18 are reserved and not thrown.

VaultContract

Thrown when staking, unstaking, or withdrawing $AURA.

Voting

Thrown when voting on market proposals or finalizing the vote.

The ones people actually hit

Four codes account for most real failures:
You are trying to sell shares that are already committed to a resting sell order. Free balance is what you hold minus what is locked in open orders. Cancel the resting order first, or sell a smaller amount.
Prices are integer ticks from 1 to 999, where 500 means 50%. Both 0 and 1000 are rejected, because a market at absolute certainty has nothing to trade.
Usually a quantity that is not a whole multiple of the lot size. Order quantities must be multiples of 10000000 base units.
The transaction came from a contract address. Aura requires trades to come from a real account so that penalties and payouts have somewhere to land. Sign from a normal wallet.
Last modified on July 29, 2026