Skip to Content
ReferenceError Codes

Error Codes

All error codes from both the ncn-snapshot and svmgov programs.

ncn-snapshot Program

ErrorDescription
OperatorNotWhitelistedSigner is not in the BallotBox voter list
OperatorHasVotedOperator already cast a vote on this BallotBox
OperatorHasNotVotedTried to remove a vote that does not exist
VotingExpiredVoting window has closed (past vote_expiry_timestamp)
VotingNotExpiredTie-breaker action requires voting to be expired first
ConsensusReachedAction not allowed after consensus (e.g., remove_vote)
ConsensusNotReachedfinalize_ballot called before consensus
InvalidBallotBallot has all-zero meta_merkle_root
InvalidMerkleInputsStake proof args must both be provided or both absent
InvalidMerkleProofProof verification failed against ConsensusResult.meta_merkle_root
VecFullAll 64 ballot tally slots are occupied
OverlappingWhitelistEntriesSame pubkey appears in both add and remove lists
InvalidBallotIndexInternal ballot index inconsistency
InvalidSnapshotSlotSnapshot slot must be strictly greater than current slot
BallotTalliesNotMaxLengthreset_ballot_box requires all tally slots to be full
InvalidProposalCPI caller is not a valid svmgov proposal PDA

svmgov Program

ErrorDescription
NotEnoughStakeInsufficient stake to create proposal or vote
TitleEmptyProposal title is empty
TitleTooLongTitle exceeds max_title_length (measured in bytes)
DescriptionEmptyDescription is empty
DescriptionTooLongDescription exceeds max_description_length (measured in bytes)
DescriptionInvalidDescription must be a https://github.com URL
InvalidProposalIdInvalid proposal ID
VotingNotStartedProposal has not entered voting phase yet
ProposalClosedVoting period has ended
ProposalFinalizedProposal already finalized
InvalidVoteDistributionFor + Against + Abstain ≠ 10,000 bps
VotingPeriodNotEndedCannot finalize before end_epoch
InvalidVoteAccountVote account does not match expected
FailedDeserializeNodePubkeyCould not parse node_pubkey from vote account data
VoteNodePubkeyMismatchSigner does not match vote account’s node_pubkey
NotEnoughAccountsMissing required accounts
InvalidClusterStakeCluster total stake is zero
InvalidStartEpochStart epoch is in the past
InvalidVotingLengthVoting length must be > 0
InvalidVoteAccountVersionUnsupported vote account version
InvalidVoteAccountSizeVote account has unexpected byte size
InvalidStakeAccountStake account is invalid
InvalidStakeStateStake account is in unexpected state (not Stake)
InvalidStakeAccountSizeStake account has unexpected byte size
InvalidSnapshotProgramProvided program ID is not the ncn-snapshot program
UnauthorizedAdminOnly the program admin (global_config.admin) can call flush_merkle_root
MerkleRootAlreadySetflush_merkle_root called when root is already set
InvalidMerkleRootMerkle root cannot be all zeros
InvalidSnapshotSlotSnapshot slot must be past or current slot
MustBeOwnedBySnapshotProgramAccount must be owned by ncn-snapshot program
InvalidConsensusResultPDADerived ConsensusResult PDA does not match provided account
CannotDeserializeMetaMerkleProofPDAMetaMerkleProof account failed Borsh deserialization
CannotDeserializeConsensusResultConsensusResult account failed Borsh deserialization
CannotModifyAfterStartCannot modify proposal metadata after voting starts
VotingLengthTooLongVoting length exceeds max_support_epochs
ArithmeticOverflowOverflow in stake weight calculations
SnapshotProgramUpgradedProgram upgrade protection triggered — snapshot program upgrade detected
MerkleRootNotSetTried to vote before ConsensusResult is available
SupportPeriodExpiredSupport period (max_support_epochs) has elapsed
UnauthorizedAdminSigner is not the configured GlobalConfig.admin
InvalidProgramprogram/program_data do not belong to this program (init upgrade-authority gate)
InvalidClusterSupportPctMincluster_support_pct_min_bps must be between 0 and 10,000
InvalidMaxTitleLengthmax_title_length must be between 1 and 200 (bytes)
InvalidMaxDescriptionLengthmax_description_length must be between 1 and 500 (bytes)
InvalidAdminNominated admin cannot be the default (all-zero) pubkey
NoPendingAdminaccept_admin called with no pending nomination
NotPendingAdminSigner is not the pending admin nominee
Last updated on