Skip to main content

Contract errors DALP-4050 to DALP-4099

Cause, fix and retry flag for every on-chain contract error with a code from DALP-4050 to DALP-4099.

This page lists the 50 errors in the contract error reference with a code from DALP-4050 to DALP-4099. Match the error's id, or its dalpCode on a contract error or a failed deployment step, for example DALP-4050, to the DALP Code column, then read Retryable and Suggested Fix. The contract error reference explains each column, including Severity, and the DALP error index lists the page for every code range.

DALP Code
Message
Why
Suggested Fix
Severity
Retryable
Solidity Error
DALP-4050
Cannot execute to zero address.
The ERC-734 key manager does not permit on-chain executions targeting the zero address. The target address provided in the execution call is the zero address.
Provide a valid non-zero target address for the execution call.
error
No
CannotExecuteToZeroAddress()
DALP-4051
Cannot initialize logic contract.
You called the initialize function directly on a logic (implementation) contract that the constructor already configured. Only proxy instances may be initialized; the logic contract itself must remain uninitialized.
Call initialize only on the proxy contract, not on the implementation contract directly.
error
No
CannotInitializeLogicContract()
DALP-4052
Cannot recover self.
The recovery named the token contract itself, either as the lost wallet or as the ERC-20 token to recover. A token cannot recover its own balance or its own units.
Name the holder's lost wallet, or a token other than this one for an ERC-20 recovery.
error
No
CannotRecoverSelf()
DALP-4053
Cannot remove default validator.
The module at the supplied address is the account factory's currently configured default validator. The contract does not permit you to remove the default validator while it holds that designation.
Assign a different default validator before removing this module, or remove a different module that is not the default validator.
error
No
CannotRemoveDefaultValidator(address)
DALP-4054
Contract already linked.
The identity factory already links an identity to this contract address. Each contract address links to one identity.
Use the existing identity. The factory has no call that removes the link.
error
No
ContractAlreadyLinked(address)
DALP-4055
Conversion id already used.
The conversion identifier computed for this request was already recorded as used. The contract enforces replay protection by rejecting any conversion that produces a previously seen identifier.
Do not resubmit an identical conversion request. Each conversion produces a unique identifier based on token, target, holder, trigger, and an incrementing nonce. Submitting a new conversion with fresh parameters will generate a distinct identifier.
error
No
ConversionIdAlreadyUsed(bytes32)
DALP-4056
Conversion minter missing.
The conversion configuration names no minter, and the target token has no conversion minter feature installed.
Ensure the target token has a conversion minter installed and configured. Check the token's feature set and register the minter if it is absent.
error
No
ConversionMinterMissing()
DALP-4057
Conversion window closed.
The token's configured conversion window has ended. The current block timestamp is past the window's end time, so the contract no longer accepts conversion requests.
Check the token's conversion window end time. The contract processes conversions only within the configured window. Contact the token issuer if you believe the window should be extended.
error
No
ConversionWindowClosed()
DALP-4058
Conversion window not open.
The token's conversion window has not started yet. The current block timestamp is before the window's start time, so the contract rejects conversion requests until the window opens.
Check the token's conversion window start time and resubmit after the window opens. You can read the configured start timestamp from the token's conversion configuration.
error
No
ConversionWindowNotOpen()
DALP-4059
Create2 empty bytecode.
The deployment bytecode supplied to the CREATE2 factory was empty. The factory requires non-empty bytecode to deploy a contract at a deterministic address.
Verify that the bytecode you pass to the deployment call is complete and non-empty. The contract always rejects an empty bytes value at the deployment step.
error
No
Create2EmptyBytecode()
DALP-4060
Feed update deadline expired.
The signed feed update carries a non-zero deadline that has already passed. The contract rejects updates whose deadline falls before the current block timestamp to prevent replay of stale price data.
Have the issuer sign the update again with a future deadline, then resubmit.
error
No
DeadlineExpired()
DALP-4061
Decimal mismatch.
The replacement feed reports a different decimal precision than the feed it is replacing. The directory enforces that scalar feed upgrades preserve the same decimal count to prevent precision mismatches in downstream consumers.
Supply a replacement feed whose decimals() return value matches the existing feed's decimals. Verify both feeds report the same value before submitting the replacement.
error
No
DecimalMismatch(uint8,uint8)
DALP-4062
Default validator not set.
The account factory has no default validator configured. The simple account creation path requires a directory administrator to set a default validator before you can create wallets without an explicit validator parameter.
Ensure the account factory's default validator is set before creating accounts via the default path. Alternatively, supply an explicit validator address in the account creation parameters.
error
No
DefaultValidatorNotSet()
DALP-4063
Delegate and revert.
The ERC-4337 EntryPoint's delegateAndRevert function always reverts with this error after performing a delegatecall. The function is a diagnostic tool that returns the delegatecall result inside the revert data rather than propagating a real failure.
Decode the success and ret fields from the revert data to inspect the outcome of the delegatecall. The delegateAndRevert diagnostic endpoint intentionally produces this error and it does not represent an on-chain state problem.
error
No
DelegateAndRevert(bool,bytes)
DALP-4064
Denomination mismatch.
The denomination asset recorded in the conversion configuration does not match the denomination asset provided by the trigger or interest rate provider. The conversion feature requires all parties to reference the same denomination currency.
Ensure the trigger or provider you are using carries the same denomination asset as the token's conversion configuration. Check the expected denomination address from the error arguments and compare it with your trigger's denomination.
error
No
DenominationMismatch(address,address)
DALP-4065
Deployment address mismatch.
The identity contract deployed by the factory landed at a different address than the one computed by CREATE2 before deployment. This indicates a mismatch in the salt, constructor arguments, or bytecode used for the address prediction.
Contact support with the requestId from the error.
error
No
DeploymentAddressMismatch()
DALP-4066
Deposit withdrawal failed.
The ERC-4337 stake manager attempted to transfer the deposited ETH to the specified withdrawal address, but the ETH transfer call failed. The error arguments carry the revert reason the failed call returned.
Check that the withdrawal address is able to receive ETH (not a contract that rejects ETH or has an insufficient gas stipend). Inspect the revertReason field in the error for more detail, then retry with a valid withdrawal address.
error
No
DepositWithdrawalFailed(address,address,uint256,bytes)
DALP-4067
Directory already set.
The system contract's directory reference already points to a non-zero address. The contract accepts only one directory assignment and rejects any attempt to overwrite it.
The directory is a one-time configuration. If the current directory address is wrong, the system must undergo redeployment or migration rather than an overwrite via setDirectory.
error
No
DirectoryAlreadySet()
DALP-4068
Directory not set.
The system contract requires a non-zero directory address, but no one has set one yet. Directory-dependent operations will revert until a valid directory address is in place.
Set the directory address on the system contract before calling directory-dependent operations. Use setDirectory or initializeWithDirectory with a valid address.
error
No
DirectoryNotSet()
DALP-4069
Duplicate feature.
The list of features passed to the token configuration contains the same feature contract address more than once. Each feature address must appear at most once in an ordered feature set.
Remove duplicate entries from the features list before resubmitting. Each feature address must be unique within the ordered list supplied to the token configuration call.
error
No
DuplicateFeature(address)
DALP-4070
Duplicate module.
The same compliance module address appears more than once in the initial compliance module set supplied to the token. The contract rejects duplicate modules to prevent redundant or conflicting compliance checks.
Remove the duplicate module address from the compliance module list before resubmitting. Each module address must appear only once in the initial module set.
error
No
DuplicateModule(address)
DALP-4071
Duplicate signature.
You supplied a signature from the same address more than once in a multi-signature verification context. The contract rejects duplicate signers to prevent a single key from counting multiple times toward a threshold.
Ensure that each signer address contributes exactly one signature to the set. Remove the duplicate signature before resubmitting.
error
No
DuplicateSignature(address)
DALP-4072
Duplicate type id.
Two features in the list you submitted share the same type identifier. Each feature type may be installed at most once per token; the contract rejects a second feature that reports the same typeId.
Remove one of the conflicting features from the list so that each typeId appears only once. Check each feature's typeId before assembling the feature list.
error
No
DuplicateTypeId(bytes32)
DALP-4073
ETH not accepted.
The proxy contract does not accept direct ETH transfers. Its receive function exists solely to block accidental ETH sends, which the contract would trap with no way to recover.
Do not send ETH directly to this contract address. If you intend to interact with a payable function, call that function explicitly rather than sending a plain ETH transfer.
error
No
ETHNotAccepted()
DALP-4074
ETH transfers not allowed.
The contract proxy does not accept ETH deposits. Its receive() function reverts unconditionally because the proxy has no withdrawal mechanism, and any ETH sent would be permanently locked inside it.
Do not send ETH directly to this contract address. If your request includes a value field, set it to zero before resubmitting.
error
No
ETHTransfersNotAllowed()
DALP-4075
Eip7702 sender not delegate.
The sender address has deployed code, but its bytecode does not start with the EIP-7702 delegation prefix (0xef0100). The EntryPoint requires the sender to be a valid EIP-7702 delegated account when an EIP-7702 initCode marker is present in the UserOperation.
Authorize the sender account as an EIP-7702 delegate before submitting this UserOperation. Verify the EIP-7702 authorization transaction landed on-chain for the sender address.
error
No
Eip7702SenderNotDelegate(address)
DALP-4076
Eip7702 sender without code.
The sender address has no deployed bytecode. When the UserOperation includes an EIP-7702 initCode marker, the EntryPoint requires code at the sender address before reading its delegation target.
Submit the EIP-7702 authorization to establish the sender's delegation on-chain before sending this UserOperation. The sender must have bytecode present at the time the EntryPoint processes the operation.
error
No
Eip7702SenderWithoutCode(address)
DALP-4077
Empty arrays provided.
A batch registration of topic schemes, system addons, compliance modules or token factories arrived with no entries.
Include at least one entry in the batch.
error
No
EmptyArraysProvided()
DALP-4078
Empty expression not allowed.
The module configuration received an empty expression array. This module requires at least one claim-topic node to define its verification logic.
Supply a non-empty array of ExpressionNode entries when configuring this compliance module's scope.
error
No
EmptyExpressionNotAllowed()
DALP-4079
Empty id.
The ID is zero, either as supplied or as returned by the implementation's typeId(). The directory needs a non-zero ID for every token type, compliance module and addon.
Supply a non-zero ID, or deploy an implementation whose typeId() returns one.
error
No
EmptyId()
DALP-4080
Empty name.
You submitted a topic scheme registration or update with an empty name string. The registry requires every topic scheme to have a non-empty name, because the name computes the topic identifier.
Provide a non-empty string for the name parameter when registering or updating a topic scheme.
error
No
EmptyName()
DALP-4081
Empty signature.
You submitted a topic scheme registration or update with an empty signature string. The registry requires every topic scheme to carry a non-empty ABI signature that describes the claim data type.
Provide a non-empty ABI type signature string for the signature parameter when registering or updating a topic scheme.
error
No
EmptySignature()
DALP-4082
Exceeded cap.
Minting the requested amount would push the token's total supply above its configured cap. The error returns the would-be supply (newSupply) and the maximum allowed supply (cap).
Reduce the mint amount so that the resulting total supply stays at or below the cap value returned in the error.
error
No
ExceededCap(uint256,uint256)
DALP-4083
Execution already performed.
The contract already carried out the execution request identified by executionId. An ERC-734 execution can only run once; the contract marks it as executed on success and rejects any further approval attempts.
Check the execution state before calling approve. If you need to perform the same call again, create a new execution request with execute() to receive a fresh executionId.
error
No
ExecutionAlreadyPerformed(uint256)
DALP-4084
Execution failed.
A low-level call that the contract expected to succeed returned a failure indicator. The calling contract reverts to surface this failure rather than silently continuing.
Check the target contract address and calldata for correctness. Simulate the call to inspect any revert data before retrying.
error
No
ExecutionFailed()
DALP-4085
Execution request not found.
The executionId you supplied to approve() is greater than or equal to the current execution nonce, so no execution request with that identifier exists on this identity contract.
Retrieve the correct executionId from the ExecutionRequested event that execute() emitted when the execution was first created, then retry with that value.
error
No
ExecutionIdDoesNotExist(uint256)
DALP-4086
Expression stack overflow.
The compliance expression evaluator's internal boolean stack overflowed during postfix evaluation. This occurs when the expression pushes more intermediate results than the stack can hold at once, typically from deeply nested or unbalanced operator sequences.
Reduce the nesting depth of AND, OR and NOT operators, and keep the postfix expression balanced.
error
No
ExpressionStackOverflow()
DALP-4087
Expression too complex.
The compliance expression contains more than 32 nodes (MAX_EXPRESSION_NODES). The contract enforces this limit to bound gas consumption during expression evaluation.
Reduce the expression to 32 nodes or fewer. Combine related claim topics before you encode the expression.
error
No
ExpressionTooComplex()
DALP-4088
Failed deployment.
The CREATE2 or clone deployment returned no contract. Its constructor reverted without a reason, or a contract already exists at that address.
Send the request with an unused deployment address and valid constructor arguments.
error
No
FailedDeployment()
DALP-4089
Failed op.
The ERC-4337 EntryPoint rejected the UserOperation at index opIndex during handleOps. The reason string identifies the failing component: AA1x means factory, AA2x means account, AA3x means paymaster.
Read the reason string to identify which component failed (factory, account, or paymaster) and the specific error code. Run simulateValidation to diagnose the rejection before resubmitting.
error
No
FailedOp(uint256,string)
DALP-4090
Failed op with revert.
The ERC-4337 EntryPoint rejected the UserOperation at index opIndex, and the sub-call provided additional revert data in inner. The reason string identifies the failing component (factory, account, or paymaster) as in FailedOp.
Decode the inner bytes to read the nested revert reason from the sub-call. Use simulateValidation to reproduce the failure and identify the root cause before resubmitting.
error
No
FailedOpWithRevert(uint256,string,bytes)
DALP-4091
Failed send to beneficiary.
After processing UserOperations, the EntryPoint attempted to transfer collected fees to the beneficiary address but the ETH transfer failed. The revertData field contains the inner revert from the beneficiary contract.
Ensure the beneficiary address can accept ETH (it must not revert on receive). Inspect the revertData to diagnose why the beneficiary rejected the transfer.
error
No
FailedSendToBeneficiary(address,uint256,bytes)
DALP-4092
Feature already exists.
A feature of this type is already deployed for the given token address. The token feature factory stores one feature per (token, feature-type) pair and rejects a second creation for the same token.
Query the factory to retrieve the existing feature address for this token before creating a new one. Use replaceFeature instead of createFeature if you need to swap the existing feature.
error
No
FeatureAlreadyExists()
DALP-4093
Feature creation failed.
Deploying the permit feature with CREATE2 returned no contract: the address is already taken or the constructor reverted.
Check whether the token already has a permit feature. If it has none, contact support with the requestId from the error.
error
No
FeatureCreationFailed()
DALP-4094
Feature factory not registered.
The asset factory looks up the addon <featureType>-feature-factory in the system addon registry and finds none.
Register a feature factory for this feature type in the addon registry before creating an asset that uses it. Use the feature type name exactly as registered, for example historical-balances.
error
No
FeatureFactoryNotFound(bytes32)
DALP-4095
Future lookup.
The requested timepoint is ahead of the contract's current clock value. Historical balance and supply queries only accept timepoints at or before the current block, so the contract blocks the call to prevent reads of data that does not exist yet.
Pass a timepoint at or before the current block when querying historical balances or total supply. The error returns both the requested timepoint and the current timepoint so you can correct the value.
error
No
FutureLookup(uint256,uint48)
DALP-4096
Global module already added.
The compliance module at the provided address is already registered as a global module. The registry tracks modules by address and rejects duplicate additions to prevent the same rules from applying twice.
Check the current list of global compliance modules before calling addGlobalComplianceModule. If the module is already present, no further registration is needed.
error
No
GlobalModuleAlreadyAdded(address)
DALP-4097
Global compliance module not found.
The compliance module at the provided address is not currently registered as a global module. The operation (remove or update parameters) requires the module to exist in the global registry.
Verify the module address is correct and confirm it has been added as a global compliance module before attempting to remove or update it.
error
No
GlobalModuleNotFound(address)
DALP-4098
Governor already cast vote.
The voter address has already submitted a vote for this proposal. The Governor contract records each vote by address per proposal and rejects a second vote from the same address.
Each address may vote only once per proposal. Check whether the address has already voted before submitting a castVote call.
error
No
GovernorAlreadyCastVote(address)
DALP-4099
Governor already queued proposal.
The Governor has already queued this proposal in the timelock. A proposal can only be queued once, and the Governor rejects a second queue request for the same proposalId.
Check the proposal state before calling queue. If the proposal is already in the Queued state, wait for the timelock delay to expire and then execute it directly.
error
No
GovernorAlreadyQueuedProposal(uint256)

The previous page is DALP-4000 to DALP-4049. The next page is DALP-4100 to DALP-4149.

Was this page helpful?