> ## Documentation Index
> Fetch the complete documentation index at: https://cyphers-3138df4b.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Common issues

> What to do when something doesn't work - from wallet errors to missing positions.

If something on Cyphers isn't behaving like you expect, look here first. Each issue is grouped by where it shows up: wallet, betting, claiming, and visibility.

If your problem isn't here, check the [FAQ](/troubleshooting/faq).

## Wallet won't connect

You click **Connect Wallet** and nothing happens, or the wallet says it's connecting forever.

* **Make sure your wallet is unlocked.** Open the extension; if it's asking for a password, enter it first.
* **Check the network.** Cyphers runs on Solana devnet during beta. Your wallet needs to be set to Devnet.
* **Try a different wallet.** Phantom, Solflare, and Backpack all work. Some wallets sometimes get into a weird state - switching extensions clears it.
* **Reload the page.** Browser extensions occasionally lose their connection on slow networks. A reload usually fixes it.

If it still won't connect, check the browser console for an error message and look it up in the [FAQ](/troubleshooting/faq#about-betting).

## Transaction rejected

You click Bet (or Claim, or Create Market), the wallet pops up, you sign - and the transaction fails with an error.

Common causes:

* **Insufficient SOL for transaction fees.** Solana charges a small fee in SOL for every action. If your wallet is empty of SOL, transactions fail. Top up with `0.05 SOL` (about `$0.50` worth) - that's enough for hundreds of transactions.
* **Insufficient USDC.** If you're betting `$10` but your wallet only has `$5`, the transaction fails. Check your balance before betting.
* **Market is no longer accepting bets.** The market closed between when you opened the bet panel and when you clicked Bet. Refresh the page to see the current status.
* **Stale market data.** The app may have an outdated view of the market. Refresh and try again.

If the wallet shows a "Transaction simulation failed" error with a specific code, the [SDK error codes](/troubleshooting/common-errors#sdk-error-codes) section at the bottom of this page maps it back to a human-readable cause.

## My bet is "stuck" - it's been minutes

A bet involves two parts: the Solana transaction (about `1 second`) and the off-chain settlement (about `10 seconds`).

If you're seeing the bet sit in "Awaiting MPC" for more than a couple of minutes:

* **Wait a bit longer.** Devnet can be slow. Up to `5 minutes` is unusual but possible.
* **Don't double-bet.** Refreshing the page or hitting the button again doesn't help. The bet is already submitted on chain; the app is just waiting for the off-chain confirmation.
* **Check your Positions tab.** Sometimes the bet completes but the loader doesn't update. If the position is showing in Positions, the bet went through.

If the bet really did get stuck and never landed in your Positions, it's a network issue on the off-chain network. Try placing a fresh bet on the same market - it'll work normally.

## Position not showing in Positions tab

You placed a bet, the transaction confirmed, but the Positions tab is empty or missing the bet.

* **Refresh the page.** The Positions tab caches data; a refresh usually shows the new bet.
* **Make sure you're on the right wallet.** The Positions tab shows positions for the *currently connected* wallet. If you switched wallets, you'll see a different list.
* **Check the network.** If your wallet is on Mainnet but Cyphers is on Devnet (or vice versa), nothing will show.
* **Try a private RPC.** The default public Solana RPC is sometimes rate-limited. If you control the app's RPC settings, switching to Helius/QuickNode/Triton makes everything faster.

If you're certain you bet but the position isn't showing, file an issue with your wallet address and the transaction signature - see [Where to report bugs](#where-to-report-bugs).

## My position shows "Encrypted" for the side

You're seeing your stake and odds, but the side displays as "Encrypted" instead of "YES" or "NO."

This means your browser doesn't have the decryption key for that position. It happens when:

* **You cleared your browser data.** Clearing local storage removes the secret keys.
* **You're using a different browser or device** than the one you placed the bet from.
* **You're in private/incognito mode** - keys placed there go away when the window closes.

**Your money is safe.** The Claim button still works. The protocol pays out based on the side the off-chain network decrypted at settlement, not based on what your local key says.

See the [FAQ](/troubleshooting/faq#i-cleared-my-browser-data-can-i-still-claim) for the full explanation of why this is fine.

## Can't claim - the button is greyed out

The Claim button is only enabled when the market is in the **Claimable** phase. If it's grey:

* **Check the market's status badge.** If it says **Pending resolution**, the challenge window hasn't closed yet. Wait it out.
* **If it says Disputed**, someone flagged the result. Wait for the admin to resolve the dispute.
* **If it says Refundable**, you can claim a refund (not a payout) - there should be a separate Refund button.
* **If it says Claimed**, you already claimed.

The phase the market is in is shown on the market's page and on the position card. If you're unsure what each phase means, see [Market lifecycle](/how-it-works/lifecycle).

## SDK error codes

If you're using the SDK directly, on-chain errors come back as numeric codes. The most common ones:

<details>
  <summary>Error code reference (6000-6044)</summary>

  | Code | Name                            | What it means                                                                         |
  | ---- | ------------------------------- | ------------------------------------------------------------------------------------- |
  | 6000 | `MarketNotActive`               | Tried to bet on a closed/resolved market. Refetch the market and check `marketPhase`. |
  | 6003 | `AlreadyResolved`               | The market was resolved between your action and the transaction landing.              |
  | 6005 | `UnauthorizedResolver`          | Only the resolver wallet can call `resolveMarket`.                                    |
  | 6007 | `AlreadyClaimed`                | This position was already claimed.                                                    |
  | 6009 | `BetTooSmall`                   | Amount is below the market's `minBet`.                                                |
  | 6023 | `ResolutionDeadlinePassed`      | Resolver missed their deadline. Offer Refund instead.                                 |
  | 6026 | `ClaimPeriodExpired`            | Past the claim deadline. The position is forfeited.                                   |
  | 6027 | `RefundPeriodExpired`           | Past the refund deadline. The position is forfeited.                                  |
  | 6029 | `ComputationVerificationFailed` | Off-chain network couldn't verify. Not recoverable; report the tx sig.                |
  | 6033 | `WrongMint`                     | The USDC mint on the position is wrong. Read mint from `globalState.acceptedMint`.    |
  | 6036 | `InvalidChallengePeriod`        | Challenge period outside the 24-48h range.                                            |
  | 6037 | `BondTooSmall`                  | Bond is below the `$20` minimum.                                                      |
  | 6038 | `NotPendingResolution`          | Called flag/finalize/override on a market in the wrong phase.                         |
  | 6039 | `ChallengePeriodNotElapsed`     | Called `finalizeResolution` too early.                                                |
  | 6040 | `ChallengePeriodElapsed`        | Called `flagResolution` after the window closed.                                      |
  | 6041 | `MarketDisputed`                | Called `finalizeResolution` on a disputed market - needs admin override first.        |
  | 6042 | `MarketNotDisputed`             | Called admin override on a non-disputed market.                                       |
  | 6044 | `UnauthorizedUser`              | Wallet doesn't match the position owner.                                              |
</details>

## Where to report bugs

For app or SDK bugs, open an issue at [github.com/cypher-zk](https://github.com/cypher-zk). Include:

* Your wallet address (just the public key - never the secret).
* The transaction signature, if there is one.
* The market id, if it's relevant.
* A short description of what you did and what happened.

For **security issues**, email the team directly rather than filing a public issue.

## What's next

* [FAQ](/troubleshooting/faq) - quick answers to the questions people ask most.
* [Market lifecycle](/how-it-works/lifecycle) - understand which phase your market is in.
* [How privacy works](/how-it-works/privacy-model) - for the encryption questions.
