Skip to main content

Contract errors DALP-4000 to DALP-4049

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

This page lists the 49 errors in the contract error reference with a code from DALP-4000 to DALP-4049. Match the error's id, or its dalpCode on a contract error or a failed deployment step, for example DALP-4001, 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-4001
Authority address has no deployed contract code.
The setAuthority function checks that the new authority address contains deployed contract bytecode. The address supplied has no contract code, so the contract rejected the update.
Supply an address where an authority contract is already deployed. Passing a wallet address or an address with no contract at it will always revert.
error
No
AccessManagedInvalidAuthority(address)
DALP-4002
Access managed required delay.
The OpenZeppelin AccessManager enforces a mandatory delay before certain restricted calls can execute. The caller ({{caller}}) triggered a function that requires waiting {{delay}} seconds after scheduling before it may proceed.
Schedule the operation first, wait for the required delay of {{delay}} seconds, then execute it. Use the AccessManager's schedule function and check the operation's execution window before calling.
error
No
AccessManagedRequiredDelay(address,uint32)
DALP-4003
Access manager already deployed.
The factory deploys each token's access manager with CREATE2 at an address derived from the caller, the token name, symbol and decimals, and for custom assets the asset type name. An access manager already exists at that address.
Change the token name or symbol. The existing access manager stays at the address in the error.
error
No
AccessManagerAlreadyDeployed(address)
DALP-4004
Access manager already scheduled.
The OpenZeppelin AccessManager's schedule function rejected this call because an operation with the same id is already scheduled and its scheduled timepoint has not expired. The operation id is derived from the caller and target pair together with the calldata. The contract blocks duplicate scheduling of the same pending operation.
Wait for the existing scheduled operation to either execute or expire before scheduling it again. You can check the current schedule timepoint by calling getSchedule with the operation id, or cancel the existing schedule first.
error
No
AccessManagerAlreadyScheduled(bytes32)
DALP-4005
Access manager bad confirmation.
The OpenZeppelin AccessManager's renounceRole function requires the caller to pass their own address as the callerConfirmation argument. The address supplied does not match the address of the account that sent the transaction.
Call renounceRole again and pass your own wallet address as the callerConfirmation argument. The value must exactly match the address that signs and sends the transaction.
error
No
AccessManagerBadConfirmation()
DALP-4006
Scheduled operation deadline expired.
You submitted the scheduled operation ({{operationId}}) to the AccessManager after its execution window had already closed. Scheduled operations must execute within the allowed time window.
Re-schedule the operation to obtain a fresh execution window, then execute it before the window expires.
error
No
AccessManagerExpired(bytes32)
DALP-4007
AccessManager deployed with a zero initial admin address.
The AccessManager constructor requires a non-zero address for the initial admin. The address supplied was the zero address (0x000...000), so the contract cannot grant the ADMIN_ROLE to any account.
Provide a valid, non-zero wallet or contract address as the initial admin when deploying the AccessManager. The address must be a real account that will hold the ADMIN_ROLE.
error
No
AccessManagerInvalidInitialAdmin(address)
DALP-4008
Access manager locked role.
Role {{roleId}} is a locked administrative role in the AccessManager. The AccessManager protects this role from configuration changes.
Choose a different role ID that the AccessManager allows to be modified, or contact the system administrator if you believe this restriction needs to change at the governance level.
error
No
AccessManagerLockedRole(uint64)
DALP-4009
Access manager not configured.
The token sale contract requires an AccessManager on the subject token before role checks can run. The token's access manager address is zero, meaning no one has set an access manager for it.
Ensure the subject token has an access manager deployed and configured before creating or interacting with a token sale for that token.
error
No
AccessManagerNotConfigured()
DALP-4010
Access manager not ready.
The scheduled operation ({{operationId}}) exists in the AccessManager, but its delay period has not elapsed. The AccessManager blocks execution until the scheduled time arrives.
Wait until the scheduled execution window opens for operation {{operationId}}, then retry. Check the AccessManager for the exact scheduled timestamp.
error
No
AccessManagerNotReady(bytes32)
DALP-4011
Access manager not scheduled.
The operation ({{operationId}}) has not been scheduled in the AccessManager. Executing or cancelling a delayed operation requires scheduling it first.
Call schedule on the AccessManager for this operation before attempting to execute or cancel it.
error
No
AccessManagerNotScheduled(bytes32)
DALP-4012
Access manager unauthorized account.
The account ({{msgsender}}) does not hold role {{roleId}} in the AccessManager and is therefore not permitted to call the restricted function.
Request that an AccessManager admin grant role {{roleId}} to your address, or use an address that already holds the required role.
error
No
AccessManagerUnauthorizedAccount(address,uint64)
DALP-4013
Access manager unauthorized call.
The caller ({{caller}}) attempted to call a function on target contract ({{target}}) with selector {{selector}}, but the AccessManager has no permission granting access to that call.
Ensure the AccessManager has a permission configured that allows your address (or role) to call the target function. Contact the system administrator to grant the necessary permission.
error
No
AccessManagerUnauthorizedCall(address,address,bytes4)
DALP-4014
Access manager unauthorized cancel.
The OpenZeppelin AccessManager contract received a cancel request from an account that is not permitted to cancel this scheduled operation. Only the original caller or an account with the appropriate admin role may cancel a pending operation.
Retry the cancel from the account that originally scheduled the operation, or from an account holding the admin role that governs the target function.
error
No
AccessManagerUnauthorizedCancel(address,address,address,bytes4)
DALP-4015
Access manager unauthorized consume.
The OpenZeppelin AccessManager blocked an attempt to consume a scheduled operation because the consuming target does not match the target the operation recorded at scheduling time.
Ensure the contract consuming the scheduled operation is the same target address that the operation recorded when scheduled.
error
No
AccessManagerUnauthorizedConsume(address)
DALP-4016
Account implementation not set.
The directory does not have an account implementation address registered. The account proxy resolves its logic contract from the directory at call time, and found a zero address for the ACCOUNT key.
Register a valid account implementation address in the directory before deploying or calling through an account proxy.
error
No
AccountImplementationNotSet()
DALP-4017
Account unauthorized.
The call reached the account contract from an address that is neither the configured EntryPoint nor the resolved canonical EntryPoint. The account only accepts UserOperation calls from its bound EntryPoint.
Submit this operation through the EntryPoint that is bound to this account. Direct calls to restricted account functions are not permitted.
error
No
AccountUnauthorized(address)
DALP-4018
Accrual already closed.
Yield accrual for this holder address is already in a closed state. The fixed treasury yield feature records a closed flag per holder and blocks a second close on the same holder.
Check the holder's accrual status before calling closeAccrual. Nothing further is required if accrual is already closed.
error
No
AccrualAlreadyClosed(address)
DALP-4019
Addon registry implementation not set.
The system cannot create or operate an addon registry because no logic contract address has been set for it. The system checked the addon registry implementation slot and found a zero address. An update that sets the address to zero is refused with the same error.
Configure a non-zero addon registry implementation address in the system before attempting to bootstrap or use the addon registry.
error
No
AddonRegistryImplementationNotSet()
DALP-4020
Address already deployed.
A system addon factory or a token factory already deployed a contract at this CREATE2 address.
Change the inputs the address derives from. For a token, these are its name, symbol and decimals.
error
No
AddressAlreadyDeployed(address)
DALP-4021
Address already on bypass list.
A call to the compliance contract named an address that is already on the compliance bypass list. DALP's factories check the list before they add an address, so the call came from a Compliance manager or from a custom token factory or add-on that a System manager registered or pointed at new code.
The list did not change and the address is already on it. Retrying changes nothing. To find out who made the call, read which account called the compliance contract in the transaction's call trace.
error
No
AddressAlreadyOnBypassList(address)
DALP-4022
Address not in trusted issuer list.
The trusted issuer address you are trying to remove was not found in the registry list. The contract scans the list and reverts when no matching entry exists.
Confirm that the trusted issuer registry currently holds this address before you attempt to remove it.
error
No
AddressNotFoundInList(address)
DALP-4023
Address not on bypass list.
A call to the compliance contract tried to remove an address that is not on the compliance bypass list. DALP's own factories never remove an address from the list, so the call came from a Compliance manager or from a custom token factory or add-on that a System manager registered or pointed at new code.
The list did not change and the address is not on it. Retrying changes nothing. To find out who made the call, read which account called the compliance contract in the transaction's call trace.
error
No
AddressNotOnBypassList(address)
DALP-4024
Already archived.
The registration under this key is already archived, and a second archive call is blocked.
Confirm the current state of the registration before calling archive. No further step is required if the entry already carries the archived state.
error
No
AlreadyArchived(bytes32)
DALP-4025
Already distributed.
The push airdrop contract already recorded a non-zero claimed amount for this index, which means the contract already distributed tokens for it. The contract blocks a second distribution for the same index.
Each airdrop index supports one distribution. Verify the contract has not already processed this index before you submit the distribution request.
error
No
AlreadyDistributed()
DALP-4026
Already initialized.
The contract or feature already completed initialization. This guard prevents a second initialization call from overwriting the configured state.
The contract supports one initialization per deployment. Check whether the contract already ran initialization before calling the initialize function.
error
No
AlreadyInitialized()
DALP-4027
Already matured.
The token is already matured. mature() and matureEarly() run once. The treasury cannot change after maturity.
Read isMatured() first. To fund redemptions after maturity, send the denomination asset to the current treasury address.
error
No
AlreadyMatured()
DALP-4028
Key already registered.
The directory already has an entry under this key. Token types, compliance modules, addons, implementation keys and instance keys are each registered once.
Use a unique registration key. Retrieve the existing entry if you need to reference the already-registered resource.
error
No
AlreadyRegistered(bytes32)
DALP-4029
Ambiguous interest provider.
During conversion, the contract resolved {{providerCount}} interest providers and could not determine which one to use. Configure the conversion feature with an explicit interest provider so that resolution selects exactly one.
Configure the conversion feature with an explicit interest provider so that resolution is unambiguous before triggering conversion.
error
No
AmbiguousInterestProvider(uint256)
DALP-4030
Amount exceeds int256 max.
One of the settlement flow amounts exceeds the maximum value representable as a signed 256-bit integer. The XvP settlement uses signed integers to compute net positions, so all flow amounts must fit within that range.
Reduce the flow amount so that it does not exceed 2^255 - 1 before submitting the settlement.
error
No
AmountExceedsInt256Max()
DALP-4031
Identity verification module AND or OR node needs two operands.
The identity verification compliance expression contains an AND or OR node that does not have at least two operands on the evaluation stack at that point. The expression has a structural problem at that node.
Correct the expression so that every AND or OR node follows at least two TOPIC or sub-expression nodes. Validate the expression structure before submitting it.
error
No
AndOrOperationRequiresTwoOperands()
DALP-4032
Identity verification library AND or OR node needs two operands.
The identity verification expression passed to IdentityVerificationLib contains an AND or OR operation node that does not have at least two operands on the evaluation stack at that position.
Ensure that at least two TOPIC or sub-expression result nodes appear before each AND or OR node in the expression. Review the expression structure and resubmit.
error
No
AndOrOperationsRequireTwoOperands()
DALP-4033
Approval already exists.
An active, unexpired approval for this exact token, sender identity, recipient identity, and amount already exists; a different approver created it. The contract prevents duplicate approvals from separate approvers for the same transfer parameters.
Check for an existing active approval for these transfer parameters. Either use the existing approval or wait for it to expire before creating a new one from a different approver.
error
No
ApprovalAlreadyExists()
DALP-4034
Approval already used.
A previous transfer already consumed the transfer approval record for this sender-to-recipient pair. Each approval is single-use: once a transfer succeeds, the contract records the approval as used and blocks any further transfer against it.
Request a new transfer approval for this sender-to-recipient pair and token amount, then resubmit the transfer.
error
No
ApprovalAlreadyUsed()
DALP-4035
Transfer approval expired.
The transfer approval record for this sender-to-recipient pair has passed its expiry timestamp. The contract enforces that you consume approvals before their deadline.
Request a fresh transfer approval with a suitable expiry, then resubmit the transfer before that expiry passes.
error
No
ApprovalExpired()
DALP-4036
Approval required.
No transfer approval record exists for this sender-to-recipient pair and token amount. The token's transfer compliance module requires an explicit approval to be on-chain before the transfer can proceed.
Create a transfer approval for the sender identity, recipient identity, and exact token amount, then resubmit the transfer.
error
No
ApprovalRequired()
DALP-4037
Archive not registered.
The registration key you supplied does not correspond to any registered system addon. The contract requires the addon to exist in the registry before you can archive it.
Verify the registration key against the addon registry and resubmit with a key that matches an existing registered addon.
error
No
ArchiveNotRegistered(bytes32)
DALP-4038
Array length mismatch.
Two input arrays passed to this call have different lengths. The contract requires all array parameters to be the same length so each element maps to a corresponding element in the other arrays.
Ensure all array arguments have equal length and resubmit the call.
error
No
ArrayLengthMismatch()
DALP-4039
Array length mismatch.
Two arrays in a batch call have different lengths. Batch registrations of topic schemes, system addons and token factories pair each entry with the entry at the same position.
Send arrays of equal length. This call sent {{namesLength}} and {{signaturesLength}} entries.
error
No
ArrayLengthMismatch(uint256,uint256)
DALP-4040
Associated contract not set.
The on-chain identity contract has no associated contract address configured. The issueClaimTo path requires a non-zero associated contract address before you can issue claims on behalf of a contract.
Configure the associated contract address on this identity contract before calling claim issuance operations.
error
No
AssociatedContractNotSet()
DALP-4041
Authorization contract already registered.
The claim authorization contract at the supplied address is already present in the registry. The registry accepts each authorization contract only once.
Remove the existing registration for this contract before re-registering it, or supply a different authorization contract address.
error
No
AuthorizationContractAlreadyRegistered(address)
DALP-4042
Authorization contract not registered.
The claim authorization contract at the supplied address is not present in the registry. The contract requires a registration to exist before you can remove it.
Register the authorization contract before attempting to remove it, or verify the correct contract address.
error
No
AuthorizationContractNotRegistered(address)
DALP-4043
Batch size exceeds limit.
The number of entries in the batch exceeds the airdrop contract's maximum of 100.
Split the batch into segments of 100 entries or fewer and submit each segment separately.
error
No
BatchSizeExceedsLimit()
DALP-4044
Below min conversion amount.
The conversion amount you submitted is below the token's minimum conversion threshold. The contract checks that the amount you want to convert meets or exceeds the configured minimum before proceeding.
Increase the conversion amount to at least the minimum required. The current minimum is {{minimum}} and your amount was {{amount}}.
error
No
BelowMinConversionAmount(uint256,uint256)
DALP-4045
Buyer not eligible.
The buyer's wallet does not pass the token's compliance check. The token sale delegates eligibility to the token's on-chain compliance module, which returned false for this buyer and amount.
Verify that the buyer's identity has the required compliance claims and that the purchase amount is within the allowed limits for this buyer, then retry.
error
No
BuyerNotEligible()
DALP-4046
Caller not factory.
Only the factory contract that deployed this XvP settlement or trading venue may call this function. The caller's address does not match the stored factory address.
Route this call through the factory contract that created this settlement, or verify you are calling the correct settlement address.
error
No
CallerNotFactory()
DALP-4047
Cancel not allowed.
The settlement cannot be cancelled in its current state. Cancellation is blocked either because the contract has already recorded a revealed HTLC secret, or because the settlement holds external flows with full approval but has not collected unanimous cancel votes.
If the secret remains unrevealed and the settlement has external flows, use proposeCancel to submit a cancel vote. Each local participant must vote before the contract cancels the settlement.
error
No
CancelNotAllowed()
DALP-4048
Cancel vote already cast.
This participant has already submitted a cancel vote for this settlement. The contract records one cancel vote per participant and rejects duplicate votes.
Withdraw the existing cancel vote with withdrawCancelProposal before casting a new one, or proceed without re-voting.
error
No
CancelVoteAlreadyCast(address)
DALP-4049
Cancel vote not cast.
The contract holds no cancel vote from this participant for this settlement. Withdrawing a cancel vote requires that you previously submitted one via proposeCancel.
Submit a cancel vote with proposeCancel before attempting to withdraw it.
error
No
CancelVoteNotCast(address)

The previous page is DALP-3000 to DALP-3999. The next page is DALP-4050 to DALP-4099.

Was this page helpful?