Skip to main content

Contract errors DALP-4200 to DALP-4249

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

This page lists the 48 errors in the contract error reference with a code from DALP-4200 to DALP-4249. Match the error's id, or its dalpCode on a contract error or a failed deployment step, for example DALP-4200, 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-4200
Airdrop start time is in the past.
The start time is before the current block timestamp. The claim window cannot open in the past.
Set the start time to the current time or later.
error
No
InvalidStartTime()
DALP-4201
Identity registry storage address is zero.
The identity registry contract requires a non-zero address for its storage contract. A zero address was provided.
Supply the address of a deployed identity registry storage contract.
error
No
InvalidStorageAddress()
DALP-4202
Subject address does not match the token's on-chain identity.
The trusted issuers registry on this token only accepts queries where the subject address equals the token's own onchainID(). The provided subject address differs from that value.
Pass the token's on-chain identity address as the subject parameter.
error
No
InvalidSubjectAddress()
DALP-4203
System contract address is zero or missing the required interface.
The proxy requires a non-zero system address that supports the IDALPSystem interface. The provided address is either zero or does not pass the interface check.
Provide the address of a deployed system contract that correctly implements IDALPSystem.
error
No
InvalidSystemAddress()
DALP-4204
Airdrop start and end times do not form a usable claim window.
The combination of start time and end time supplied for this airdrop does not form a valid claim window. The end time must be at least one second after the start time, and the start time must be in the future.
Set a future start time and an end time that is strictly after the start time before submitting.
error
No
InvalidTimeWindow()
DALP-4205
Sale or vesting timestamp conflicts with required time ordering.
The contract enforces that sale start, vesting start, presale end, and sale end times form a valid, non-overlapping sequence. One of the supplied timestamps violates this ordering.
Ensure the sale start is in the future, the vesting start is after the sale end, and the presale end falls within the sale window.
error
No
InvalidTiming()
DALP-4206
Topic ID zero is not allowed in compliance expressions.
The compliance module's expression evaluator requires each topic node to carry a non-zero topic ID. A topic node with value zero was found in the supplied expression.
Replace any topic node with value zero with a valid, non-zero topic ID before submitting the expression.
error
No
InvalidTopicIdZeroNotAllowed()
DALP-4207
Topic scheme registry address is zero.
The feed or feeds directory requires a non-zero address for the topic scheme registry contract. A zero address was supplied during initialization.
Provide the address of a deployed topic scheme registry contract.
error
No
InvalidTopicSchemeRegistry()
DALP-4208
Identity registry topic scheme registry address is zero.
The identity registry contract requires a non-zero address for the topic scheme registry when initializing or updating that reference. A zero address was provided.
Provide the address of a deployed topic scheme registry contract.
error
No
InvalidTopicSchemeRegistryAddress()
DALP-4209
Treasury address is zero.
The maturity redemption, fixed treasury yield, dividend yield and interest yield features need a non-zero treasury address, at setup and on a treasury change.
Provide the non-zero address that funds the payouts.
error
No
InvalidTreasury()
DALP-4210
Trusted issuers registry address is zero.
The issuer-signed scalar feed and the document anchor registry each need a trusted issuers registry at creation. The feed received the zero address, or the system the anchor registry reads from has no trusted issuers registry.
Pass a deployed trusted issuers registry to the feed. For an anchor registry, set up the system's trusted issuers registry first.
error
No
InvalidTrustedIssuersRegistry()
DALP-4211
Unstake delay is zero or less than the current delay.
The ERC-4337 stake manager requires the new unstake delay to be greater than zero and at least as large as the previously set delay. The provided value violates one of these constraints.
Supply an unstake delay value that is greater than zero and greater than or equal to the current unstakeDelaySec recorded for this account.
error
No
InvalidUnstakeDelay(uint256,uint256)
DALP-4212
User wallet address is zero.
The identity registry requires a non-zero wallet address when registering, recovering, or updating an identity. A zero address was supplied for the user wallet.
Supply the actual wallet address of the user whose identity is being registered or recovered.
error
No
InvalidUserAddress()
DALP-4213
Withdrawal destination address is zero.
The airdrop contract requires a non-zero address as the destination when executing a token withdrawal. A zero address was passed as the recipient.
Provide a valid non-zero wallet or contract address as the withdrawal destination.
error
No
InvalidWithdrawalAddress()
DALP-4214
Issuer already exists.
The trusted issuers registry already contains an entry for the supplied issuer address. The registry allows each issuer address to appear only once.
Check the current registry contents before adding an issuer. If the issuer's claim topics need updating, use the update function rather than adding a duplicate entry.
error
No
IssuerAlreadyExists(address)
DALP-4215
Issuer cannot be zero address.
You supplied the zero address as the claim issuer when registering a claim. A trusted issuer must be a deployed contract capable of signing claims, and the zero address does not satisfy that requirement.
Supply the address of a deployed claim issuer contract instead of the zero address.
error
No
IssuerCannotBeZeroAddress()
DALP-4216
Issuer is not in the trusted issuers registry.
Reading, updating or removing an issuer needs an existing registry entry. The supplied issuer address has none.
Confirm the issuer address is correct. If the issuer was never registered, add it before attempting to update or remove it.
error
No
IssuerDoesNotExist(address)
DALP-4217
Issuer is not trusted for this feed's topic and subject.
The issuer identity address submitted with the feed update is not listed as a trusted issuer for this feed's topic and subject in the trusted issuers registry. The feed only accepts updates from pre-authorized issuers.
Register the issuer in the trusted issuers registry for this feed's topic and subject before submitting updates, or use a different issuer that is already authorized.
error
No
IssuerNotAuthorized()
DALP-4218
Issuer is not trusted for this claim topic.
The contract attempted to remove the issuer at the given address from the trusted-issuers list for a specific claim topic, but that issuer was never added to that topic's list. The registry tracks which issuers each claim topic authorises, and this combination has no entry.
Verify that you previously added the issuer address to the claim topic's trusted-issuers list before attempting removal. Retrieve the current list for the claim topic and confirm the address is present.
error
No
IssuerNotFoundInTopicList(address,uint256)
DALP-4219
Key already has this purpose.
The on-chain identity key you are adding already holds the requested purpose. The ERC-734 key registry records each purpose only once per key.
Check the key's current purposes with getKey() before calling addKey(). If the purpose is already present, no further step is needed.
error
No
KeyAlreadyHasThisPurpose(bytes32,uint256)
DALP-4220
Key cannot be zero.
addKey refuses a zero key hash, bytes32(0).
Supply a non-zero key hash. For an address key, use keccak256(abi.encode(address)).
error
No
KeyCannotBeZero()
DALP-4221
Key hash is not in the identity key registry.
The key hash you referenced does not exist in the ERC-734 key registry. The registry only holds keys that a prior addKey() call explicitly added.
Confirm the key hash is registered by calling keyHasPurpose() or getKey() before attempting removal. If the key is missing, add it first with addKey().
error
No
KeyDoesNotExist(bytes32)
DALP-4222
Key does not have this purpose.
The key exists in the ERC-734 registry, but it does not hold the purpose you are trying to remove. The contract requires you to assign a purpose to a key before you can revoke it.
Call getKey() to inspect the key's current purposes before calling removeKey(). Only attempt to remove a purpose that appears in the key's purposes array.
error
No
KeyDoesNotHaveThisPurpose(bytes32,uint256)
DALP-4223
Kind mismatch.
A replaceFeed() call specified a feed kind that differs from the kind of the feed already registered at that subject-and-topic slot. The registry enforces that a replacement feed must be the same kind as the one it replaces.
Check the existing feed's kind with getFeed() and supply a replacement feed of the same kind. To change the kind, remove the existing feed first, then register a new one.
error
No
KindMismatch(uint8,uint8)
DALP-4224
Length mismatch.
A batch operation received two arrays (recipients and amounts) whose lengths differ. The contract requires one-to-one correspondence between each recipient address and its corresponding amount.
Ensure the toList and amounts arrays you pass to the batch call contain the same number of elements before submitting.
error
No
LengthMismatch()
DALP-4225
Locked amount mismatch.
During XvP settlement execution, the contract tried to release more tokens from escrow than the participant had locked. The escrowed balance for that asset and account is less than the amount the settlement leg requires.
Confirm that the participant's locked balance for the asset covers the full settlement amount before submitting. If the escrow is short, the participant must top up the locked amount first.
error
No
LockedAmountMismatch(address,address,uint256,uint256)
DALP-4226
Max features reached.
The ordered feature list has more than 32 entries.
Reduce the number of features in the ordered list to 32 or fewer. Remove features that are no longer needed before registering new ones.
error
No
MaxFeaturesReached()
DALP-4227
Maximum allocation exceeded.
The buyer's cumulative token purchase would exceed a limit the sale enforces: the sale's per-address maximum, the presale per-address cap, or the per-investor allocation cap the issuer set for the buyer's investor identity. The sale contract tracks each buyer's total across all purchases, and the allocation cap counts every wallet registered to the same identity together.
Check the buyer's purchase total against the sale's maxPurchase and presale.maxPerAddress limits and the investor's remaining allocation in the sale's investor-allocations read. Reduce the token amount so the total stays within every limit.
error
No
MaximumAllocationExceeded()
DALP-4228
Meta registry cannot provide complete answer.
The trusted-issuers meta-registry received a call to an aggregation operation that it cannot satisfy on its own. The meta-registry is a registry-of-registries and certain operations require a direct registry, not the aggregating proxy.
Call the operation directly on the specific subject registry or system registry rather than on the meta-registry. Retrieve the target registry address from getRegistryForSubject() or getSystemRegistry() first.
error
No
MetaRegistryCannotProvideCompleteAnswer()
DALP-4229
Metadata immutable.
The contract marked this metadata key as immutable when it first stored the value. The contract permanently blocks any subsequent update or removal of metadata stored under an immutable key.
Metadata stored under an immutable key cannot change. Store the updated value under a different key.
error
No
MetadataImmutable()
DALP-4230
Missing type identifier.
The implementation has no typeId(), or the call reverted. The directory, the addon registry and the token factory registry key every implementation by its type identifier.
Ensure the implementation contract implements IWithTypeIdentifier and returns a non-reverting typeId(). Deploy or supply a corrected implementation before retrying registration.
error
No
MissingTypeIdentifier(address)
DALP-4231
Module already added.
The compliance module at the given address is already registered on this token. The token contract allows each module to appear only once in its active compliance list.
Check the token's current compliance modules before calling addComplianceModule(). If the module is already present, no step is needed.
error
No
ModuleAlreadyAdded()
DALP-4233
Module type already registered.
A module with the same type identifier is already registered in the account factory's module registry. The factory allows only one module per type identifier.
Check the registered modules list and confirm no module with the same typeId is already present before calling registerModule(). To replace an existing module, remove it first with removeModule().
error
No
ModuleAlreadyRegistered(bytes32,address)
DALP-4234
Compliance module not found.
The compliance module at the given address is not present in this token's active compliance list. The token cannot update parameters or remove a module that was never added.
Call the token's module-listing function to verify which modules are active before attempting to update or remove one. If you need the module, add it with addComplianceModule() first.
error
No
ModuleNotFound()
DALP-4236
Module not registered.
The module address does not appear in the account factory's module registry. Operations such as removing a module or setting it as the default validator require prior registration.
Register the module with registerModule() before referencing it in removeModule() or setDefaultValidator(). Confirm the address matches the one originally registered.
error
No
ModuleNotRegistered(address)
DALP-4237
No approval to revoke.
The revokeApproval() call found no active, unconsumed transfer approval for the specified token, sender identity, recipient identity, and amount combination. The approval either never existed, already expired, or was already consumed by a transfer.
Confirm an active approval exists for the exact token, sender identity, recipient identity, and amount before calling revokeApproval(). Use getApproval() or getExactApproval() to check the current state.
error
No
NoApprovalToRevoke()
DALP-4238
No bytecode.
The address has no deployed code. Account modules, imported accounts and proxy implementations must be deployed contracts.
Confirm the module contract deployed successfully to the target address before registering it. Check deployment transaction receipts and confirm the address is correct for the target network.
error
No
NoBytecode(address)
DALP-4239
No checkpoint at timepoint.
The requested timepoint is earlier than the first recorded checkpoint for the account or total supply in the historical-balances extension. When strict mode is on, the contract requires the timepoint to fall within the tracked history range.
Query balanceOfAt() or totalSupplyAt() with strict=false to get a zero result for timepoints before the first checkpoint, or supply a timepoint at or after the first recorded checkpoint.
error
No
NoCheckpointAtTimepoint(uint256)
DALP-4240
No contribution to refund, so no money moved.
The sale holds no contribution from this address in this currency, so the contract refused the refund and no money moved. The payment was already refunded or reclaimed, or it was paid from another address or in another currency.
Check your balance and the sale's activity to see whether the payment already came back. If it did not, ask for the refund again from the address and in the currency you paid with.
error
No
NoContributionToRefund()
DALP-4241
No initial admins.
You called initialization with an empty list of admin addresses. The access manager or yield schedule requires at least one admin address to complete setup.
Provide a non-empty array of admin addresses when deploying or initializing this contract.
error
No
NoInitialAdmins()
DALP-4242
No local flows.
An XvP settlement requires at least one local sender flow on the current chain. All of the settlement's flows are external-chain only, which leaves no local participant to start an on-chain transfer.
Include at least one flow where the sender is on the current chain before creating the settlement.
error
No
NoLocalFlows()
DALP-4243
No yield available.
You attempted to claim yield, but no completed accrual periods carry a positive balance for this holder. This occurs when no periods have completed yet, the holder already claimed all completed periods, or the holder held no tokens during any unclaimed period.
Wait for at least one yield period to complete and ensure the account holds tokens during that period before claiming.
error
No
NoYieldAvailable()
DALP-4244
Initialization required.
The contract requires a prior initialization step before this call can proceed. The real estate asset contract checks that initialization stored premint parameters before allowing premint to complete.
Ensure you fully initialized the contract with a non-zero premint amount before calling the premint completion step.
error
No
NotInitialized()
DALP-4245
Contract initialization sequence required.
You called a function decorated with onlyInitializing outside the contract's initialization sequence. This guard is part of OpenZeppelin's Initializable pattern and prevents protected setup functions from running after initialization is complete.
Do not call this function after deployment. It runs only inside the contract's initialize call chain.
error
No
NotInitializing()
DALP-4246
Module installation required.
The ERC-7579 ECDSA validator module has no owner recorded for the calling smart account. Install the module on the account before updating its owner record.
Install the ECDSA validator module on the smart account first, then retry the owner update.
error
No
NotInstalled()
DALP-4247
Not matured.
The token is not matured. Only mature() or matureEarly() moves it to matured.
Ask a governance-role holder to call mature() once the maturity date has passed, or an emergency-role holder to call matureEarly(), then redeem.
error
No
NotMatured()
DALP-4248
NOT operation requires one operand.
During evaluation of an identity verification expression tree, the evaluator encountered a NOT node with an empty operand stack. A NOT operation consumes exactly one stack value, so the expression must have at least one preceding operand.
Place each NOT node after the operand or sub-expression it negates.
error
No
NotOperationRequiresOneOperand()
DALP-4249
Not registered.
A directory administrator tried to update a token type, compliance module or addon whose ID the directory has never registered.
Register the entry first, or check the ID against the directory's registered entries.
error
No
NotRegistered(bytes32)

The previous page is DALP-4150 to DALP-4199. The next page is DALP-4250 to DALP-4299.

Was this page helpful?