Reference
Errors
What each program error means when a transaction fails, and what to do about it.
When the Lull program rejects a transaction, nothing changes on chain except the network fee. Your wallet or the app shows the error's code or message. The tables below map each one to what it means for you.
Sealing#
| Code | Message | What it means | What to do |
|---|---|---|---|
CommitClosed | Commit window is closed | The lull's reveal window has started, so it no longer accepts sealed orders. | Seal the order in the next lull once it is published. |
BadLullStatus | Lull is not in the expected status | The lull no longer accepts orders, for example because it was cancelled. | Check the lull page. |
Revealing#
| Code | Message | What it means | What to do |
|---|---|---|---|
NotInRevealWindow | Reveal window is not open | It is too early or too late to reveal. | Before the window, wait until "Reveal" is enabled. After it, the order can no longer be revealed and its bond is forfeited. |
CommitmentMismatch | Commitment does not match the revealed order | The stored order and salt do not produce this ticket's commitment. | Import the export you made when you sealed this order, then reveal again. |
InsufficientBalance | Insufficient free balance | Free balance is below the order amount. For an LP quote, it is below max base or max quote. | Deposit the difference and reveal again before the window ends. |
AccountNotInitialized | The program expected this account to be already initialized | You have no balance account in this market yet. | Make a deposit, then reveal again. |
OrderTooSmall | Order is below the market minimum | The amount is below the market's minimum (1 USDC for a buy and 0.001 AAPLx before the multiplier for a sell, by default). The minimum is checked at reveal, so this happens when the market raised it after you sealed. | The sealed amount cannot change, so the order cannot be revealed and its bond is forfeited. Seal a new order at or above the minimum. |
SpreadTooWide | LP spread exceeds the market maximum | The quote's spread is above the market's maximum (200 bps by default). | The quote cannot be revealed, and its bond is forfeited. |
QuoteSlotsFull | All LP quote slots for this lull are taken | 8 quotes have already been revealed in this lull. | The quote cannot join this lull, and its bond is forfeited. |
EmptyQuote | Quote must offer base or quote liquidity | Both max base and max quote are zero. | The quote cannot be revealed, and its bond is forfeited. |
BadTicketState | Ticket is not in the expected state | The ticket was already revealed or settled. | Refresh the "Account" page. |
BadLullStatus | Lull is not in the expected status | The lull was cancelled, so it accepts no reveals. | Nothing trades. Unrevealed tickets are forfeited. |
Claiming#
| Code | Message | What it means | What to do |
|---|---|---|---|
BadLullStatus | Lull is not in the expected status | The lull has not crossed or been cancelled yet. | Wait until the lull page shows it settled or cancelled. |
BadTicketState | Ticket is not in the expected state | The ticket was never revealed, so there is nothing to claim. It is forfeited instead. | None. |
Deposits and withdrawals#
| Code | Message | What it means | What to do |
|---|---|---|---|
InsufficientBalance | Insufficient free balance | The withdrawal is larger than Free. | Lower the amount. Locked amounts become Free when their tickets are claimed. |
ZeroAmount | Amount must be positive | The amount is zero. | Enter an amount above zero. |
Errors from crank steps#
TooEarly, PriceBeforeOpen, PriceTooLate, StaleSample, NonPositivePrice, PriceNotFullyVerified, WrongFeed, BadPriceAccount, TallyIncomplete, DeadlineNotReached and RevealNotEnded come from the permissionless steps after the reveal window. They mean a step was sent too early, too late or with an unusable price. The lull is unaffected, and the next valid step goes through. See Popen.
Failures outside the program#
- Transaction expired. A transaction is valid for a short time after it is built. The app builds it right before you sign. If the wallet prompt stayed open too long, try again.
- No token account. A deposit needs a token account for that asset in your wallet. For AAPLx it is a Token-2022 account.
- Paused or frozen token. The AAPLx issuer can pause transfers or freeze an account. AAPLx deposits and withdrawals fail until it lifts that. See Risks.
- Not enough SOL. Sealing needs the bond, the ticket rent and the fee. Every other action needs the fee, plus rent when it creates an account.