For the complete documentation index, see llms.txt. This page is also available as Markdown.

Errors of the identity suite

Every custom error of ONCHAINID, grouped by the contract that raises it. Most are declared in the library Errors (contracts/libraries/Errors.sol). The key registry declares seven of its own in ERC734Validator. The errors of the recovery module are OpenZeppelin's and are listed in RecoveryModule.

Common

Error
Raised when

ZeroAddress()

A required address is zero

EmptyString()

A salt is empty

InvalidSignature()

A signature does not verify

InvalidSignerData()

Signer data is missing, too short, or does not hash to the key given

Keys

Error
Raised when

SenderDoesNotHaveManagementKey()

A function reserved to MANAGEMENT is called by another key

SenderDoesNotHaveActionKey()

An approval needs ACTION and the caller lacks it

SenderDoesNotHaveClaimSignerKey()

A claim is added or removed by a caller without a claim key

KeyDoesNotHavePurpose(bytes32 key, uint256 purpose)

A purpose is removed from a key that does not hold it

KeyAlreadyRegistered(bytes32 keyHash)

A key receives a purpose it already holds

KeyNotRegistered(bytes32 keyHash)

A key is unknown to the registry

KeyTypeMismatch(bytes32 keyHash)

A registered key is given a purpose with another key type than the one recorded

InvalidPurpose(uint256 purpose)

A purpose outside 1 to 6

InvalidSignerLength()

Signer data shorter than an address

CannotRemoveLastManagementKey()

The last MANAGEMENT key that can sign is removed

ModuleCannotBeKey()

The key registry itself is given as a key

ClientDataTooLong()

The client data of a key exceeds its limit

Claims

Error
Raised when

InvalidClaim()

The issuer does not answer Valid for the claim

InvalidClaimTopic()

The topic is 0

ClaimMetadataMismatch(uint256 scheme, string uri)

The scheme and the URI do not match the metadataHash that was signed

ClaimSignatureTooLong(), ClaimPayloadTooLong(), ClaimUriTooLong()

A field of the claim exceeds 2,048 bytes

ClaimNotRegistered(bytes32 claimId)

A claim to remove does not exist

ClaimAlreadyRevoked()

A digest is revoked twice

IdentityNotClaimIssuerType(address identity)

An issuer with no claim key on the identity is not of type CLAIM_ISSUER

ReputationBelowClaimAddThreshold(address identity, uint256 score, uint256 threshold)

That issuer's reputation is below the threshold

EASNotSupported()

A function the EAS adapter does not serve is called on it

Execution

Error
Raised when

SenderCannotPropose(address sender)

execute is called by an address that holds no key allowed to propose

InvalidRequestId()

An approval names a request that does not exist

RequestAlreadyExecuted()

The request is already closed

RequestInvalidated()

The request was queued before the module was last uninstalled

ProposerNoLongerAuthorized(address proposer)

The key that queued the request lost its authority

ReturnToAccountFailed()

The value sent with execute cannot be returned to the identity

UnsupportedExecutionMode(bytes32 mode)

The identity is asked to execute in a mode it does not accept, such as a delegate call

OwnModuleTargetBlocked(address target)

A dispatched call targets one of the identity's own modules

ExecutorPurposeNotAuthorized()

A module dispatches a call that the purpose registered for it does not cover

IdentityNoValidatorOrExecutor()

An identity is initialized with neither a validator nor an executor

Creating identities

Error
Raised when

UnknownIdentityType(uint256 identityType)

The type has no policy

ZeroIdentityType()

A policy is set for type 0

IdentityTypeNotSelfDeployable(uint256 identityType)

createIdentity for a type that is not self-deployable

NotAuthorizedForIdentityType(address caller, uint256 identityType, uint64 requiredRole)

createIdentityFor by a caller without the role of the type

DelayedRoleNotSupported(address caller, uint64 requiredRole, uint32 executionDelay)

The caller holds that role with an execution delay

SingleBindingTypeCannotBePublic(uint256 identityType)

A type bound to one contract is opened to the public role

EmptyListOfKeys(), NoManagementKeyInKeys()

No key, or no MANAGEMENT key, is supplied

KeyNotForAccount(bytes32 keyHash), AccountNotSoleManagementKey(address account)

createIdentityFor: a key is not a key of the account, or the account is not the only MANAGEMENT key

CallerKeyCannotBeModule(bytes32 keyHash)

A key of type MODULE is supplied at creation

Linking wallets

Error
Raised when

NotFactoryIdentity(address caller)

linkAccount is called by a contract the factory did not deploy

NonCanonicalAccount(bytes account)

A wallet is not in the canonical ERC-7930 form

NonEvmAccount(bytes account), AccountNotOnLocalChain(bytes account)

A signature link for a wallet that is not an EVM wallet of this chain

ExpiredSignature(uint256 expiry)

The link signature is expired, or carries no expiry

UntrustedVerifier(address verifier)

The signer names a verifier the factory does not trust

WalletAlreadyLinkedToIdentity(bytes wallet)

The wallet is already linked to the calling identity

WalletBoundToAnotherIdentity(bytes wallet, address boundIdentity)

The wallet is linked to another identity

WalletAlreadyRevoked(bytes wallet)

The wallet was revoked: a revocation is final

WalletNotLinkedToIdentity(bytes wallet), WalletNotActive(bytes wallet)

A revocation names a wallet that is not linked to the identity, or not active

CannotLinkToAssetIdentity(address identity)

A wallet is linked to an ASSET identity

CannotLinkFactoryIdentity(address identity)

An identity is given as a wallet to link

CannotRevokeFromNonSigningIdentity(address identity)

A revocation on an identity bound to one contract

CrossChainSenderWalletMismatch(bytes sender, bytes wallet)

The sender of a link proposal is not the wallet it names

CrossChainLinkForLocalWallet(bytes wallet)

A proposal names a wallet of this chain

WalletAlreadyHasEntry(bytes wallet)

A proposal names a wallet that is already linked or revoked

PendingCrossChainLinkExpired(uint256 expiry)

A proposal is delivered or settled after its expiry

PendingCrossChainLinkIdentityMismatch(bytes wallet, address caller, address recorded)

A proposal is settled by another identity than the one it names

The beacon of the identities

Error
Raised when

BeaconNotInitialized(), BeaconAlreadyInitialized()

An identity is created before the beacon exists. The beacon is initialized twice

BeaconAddressMismatch(address expected, address actual)

The beacon is not deployed at the address the factory committed to

ImplementationNotAContract(address implementation)

The candidate implementation has no code

ImplementationFactoryMismatch(address implementation)

It does not name this factory

ImplementationRegistryMismatch(address expected, address actual)

It names another key registry than the one identities use

ImplementationInitializersNotDisabled(address implementation)

Its initializers are not locked

ImplementationVersionMismatch(string expected, string actual)

Its version is not the one the upgrade announced

Last updated