Skip to main content


The error module defines the LidoError enum for the available error types in the Solido program along with some small conversion implementations to and from the Solana ProgramError struct.


The LidoError enum, at time of writing, defines the following errors:

AlreadyInUseThe Lido address passed to the program is in use; i.e. the Solido program has already been initialised.
InvalidOwnerThe address of the owner of the Solido program is different to the passed program id.
InvalidAmountThe amount being staked is below the minimum stake amount.
SignatureMissingA required signature is missing
InvalidReserveAuthorityThe authority for the reserve account, where SOL gets deposited, is invalid
CalculationFailureCalculation failed due to division by zero or overflow
WrongStakeStateStake account is in an invalid state or does not exist when processing a stake deposit
MaximumNumberOfAccountsExceededThe maximum number of entries in the account map is already at maximum capacity as defined by maximum entries
UnexpectedMaxValidatorsThe size of the account for the Solido state does not match max_validators
InvalidManagerWrong manager trying to alter the state of the Solido program
InvalidMaintainerWrong maintainer trying to alter the state of the Solido program
InvalidAccountInfoThe provided account is mismatched in is_writable or is_signer to what was expected for that type of account
TooManyAccountKeysMore accounts were provided than Solido expects
InvalidValidatorCreditAccountThe account provided when claiming validator fees is incorrect
InvalidFeeRecipientThe provided fee recipient account is incorrect
DuplicatedEntryThe entry trying to be added to the account_map already exists
ValidatorHasUnclaimedCreditThe validator trying to be removed has unclaimed credit, the credit should be minted before the validator is removed
ReserveIsNotRentExemptThe reserve account value is not above the minimum value for rent exemption
AmountExceedsReserveThe requested amount for reserve withdrawal exceeds the maximum held in the reserve account when considering rent exemption
InvalidAccountMemberAn entry in the account map is not present
InvalidLidoSizeLido has an invalid size, calculated with the Lido's constant size plus required to hold variable structures
NoActiveValidatorsThere are no validators with an active stake account to delegate to
InvalidStakeAccountWhen staking part of the reserve to a new stake account, the next program-derived address for the stake account associated with the given validator, does not match the provided stake account
InvalidStSolAccountWe expected an SPL token account that holds stSOL, but this was not an SPL token account, or its mint did not match