Skip to content

Errors

Web SDK (@vrand.io/web)

Every non-outcome is a typed VrandWebError with a code — never a silent default:

CodeMeaningWhat to do
WalletNotFoundno injected wallet, none configuredinstall Phantom/Solflare or pass { wallet }
WalletNotConnectedconnection refused / no public keyuser action
TermsDeclinedthe user closed the Terms without agreeingnothing was signed
TermsUnavailablethe chain has no published termswrong cluster or uninitialized network
TermsOutOfDatebundled terms ≠ on-chain hashupdate the package — the SDK never acknowledges unseen text
InsufficientBalancewallet cannot cover fee + rentdetails carries the exact numbers
NoProverno default prover for this clusterpass { prover }
RequestTimeoutno outcome within timeoutMsretry for a fresh draw; reclaim() recovers this one's rent
RequestSlashedthe prover missed its window and was slashedwith coverage: you were paid; either way, retry
VerificationFailedthe served outcome failed local proof verificationnever use the value — the record is not your request's genuine result
SendFailedthe wallet or the chain rejected the transactionmessage carries the cause
BadInputinvalid helper argumentsfix the call

Consumer-program helpers (vrand-cpi)

Custom error codes (ProgramError::Custom):

CodeConstantMeaning
0x76524e01ERR_WRONG_PROVERthe prover account isn't the one you pinned
0x76524e02ERR_WRONG_PROGRAMthe vrand_program slot isn't the VRAND program — without this check a caller could route your CPI (and the payer's signature) anywhere
0x76524e03ERR_WRONG_OWNERa read helper was handed an account VRAND doesn't own
0x76524e04ERR_REQUEST_PENDINGfulfilled_beta on a request with no outcome yet
0x76524e05ERR_REQUEST_SLASHEDfulfilled_beta on a request that will never have one — your comp_dest was compensated; take your backstop path

Program errors (most relevant to consumers)

ErrorWhen
TermsNotAcceptedthe payer's acknowledgment is missing or stale — send acknowledge_terms first
TermsHashMismatchacknowledge_terms echoed a hash that isn't the current terms
Pausednew requests are paused (resolution paths never are)
ProverNotActivethe pinned prover is unbonding or revoked
ProverKeyChangedThisSlotthe prover rotated its key in the request's slot — retry next slot
AtRiskExceedsSingleCapone request may reserve at most max_single_at_risk_bps of a bond
InsufficientBondthe prover's free bond can't cover your at-risk amount
RequestNotPendingfulfill/slash on an already-terminal request
SameSlotFulfilla proof may never land in the request's own slot
InvalidProof / MalformedProof / BadVrfKeythe verifier rejected the submission
RequestStillPendingclose attempted before a terminal state
Unauthorized / WrongAccountsigner/account constraints violated

Apache-2.0. Live on Solana devnet.