Skip to main content

Contract errors DALP-4250 to DALP-4299

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

This page lists the 50 errors in the contract error reference with a code from DALP-4250 to DALP-4299. Match the error's id, or its dalpCode on a contract error or a failed deployment step, for example DALP-4250, 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-4250
Caller is not a registered feature.
Only a feature registered on the token may call executeFeatureUpdate, executeFeatureApproval or payout. The caller is not one.
Ensure the token's feature registry includes the caller's feature contract before calling these entry points.
error
No
NotRegisteredFeature(address)
DALP-4251
Not staked.
The EntryPoint holds no locked stake for this account. unlockStake needs a locked stake. withdrawStake needs a non-zero one.
Call addStake first, or check the account's deposit info before you unlock or withdraw.
error
No
NotStaked(uint256,uint256,bool)
DALP-4252
Observed at too far in future.
The observedAt timestamp in the submitted feed update is further in the future than the feed's configured drift allowance permits. The contract compares observedAt to block.timestamp + driftAllowance and rejects values that exceed this bound.
Reduce the observedAt timestamp so it falls within the feed's drift allowance relative to the current block time.
error
No
ObservedAtTooFarInFuture()
DALP-4253
OnchainID already set.
This contract's on-chain identity address already holds a non-zero value. The contract blocks any reassignment of the identity address once set.
The on-chain identity for this contract already has a value. No further call to setOnchainId is needed.
error
No
OnchainIdAlreadySet()
DALP-4254
Out of range access.
A byte-packing read or write operation in OpenZeppelin's Packing library attempted to access a byte range that lies outside the bounds of the packed value. The requested offset and length exceed the 32-byte word size.
Review the byte offset and length parameters passed to the packing call and ensure they fit within the 32-byte word.
error
No
OutOfRangeAccess()
DALP-4255
Owner already set.
The ERC-7579 ECDSA validator module already has an owner recorded for the calling smart account. The onInstall function can only set the owner once per account.
The validator is already installed on this account. Use updateOwner to rotate the owner address instead of calling onInstall again.
error
No
OwnerAlreadySet()
DALP-4256
Partial conversion disabled.
The conversion feature on this token has partial conversion disabled. The requested conversion amount is less than the holder's full available principal, which the contract treats as a partial conversion.
Submit the conversion for the full available principal amount, or contact the token issuer to confirm whether this token supports partial conversions.
error
No
PartialConversionDisabled()
DALP-4257
Paymaster unauthorized.
An address other than the configured EntryPoint called the paymaster's validatePaymasterUserOp or postOp entry point. The EntryPoint contract and its canonical resolver are the only callers these functions accept.
Only the ERC-4337 EntryPoint calls these paymaster entry points. Do not call them directly.
error
No
PaymasterUnauthorized(address)
DALP-4258
Paymaster zero entry point.
You initialized or updated the paymaster with a zero address as the EntryPoint. The contract requires a non-zero EntryPoint address for the ERC-4337 validation pipeline to function.
Provide the deployed ERC-4337 EntryPoint contract address when initializing or updating the paymaster.
error
No
PaymasterZeroEntryPoint()
DALP-4259
Paymaster zero signer.
You initialized or updated the paymaster with a zero address as the trusted signer. EIP-712 sponsorship ticket verification requires a non-zero signer address.
Provide a valid non-zero signer address when initializing or rotating the paymaster signer.
error
No
PaymasterZeroSigner()
DALP-4260
Phase not active.
The token sale contract requires an active phase (PRESALE or PUBLIC_SALE) before it accepts purchases. You attempted a purchase while the sale was in SETUP, PAUSED, SUCCESS, or FAILED, where the contract does not accept purchases.
Check the current sale status before submitting a purchase. Wait until the sale operator advances the sale to PRESALE or PUBLIC_SALE, then retry.
error
No
PhaseNotActive()
DALP-4261
Post op reverted.
The ERC-4337 EntryPoint requires each paymaster's post-operation call to succeed after a user operation executes. The paymaster's postOp function reverted, causing the EntryPoint to reject the operation.
Review the returnData included in the error for the specific reason the paymaster's postOp reverted. Ensure the paymaster has sufficient deposit and that its validation logic matches the executed operation.
error
No
PostOpReverted(bytes)
DALP-4262
Premint already completed.
The real-estate token contract's premint step can only be completed once, immediately after deployment. The factory already called completePremint successfully, and you attempted a second call.
Premint completion is a one-time factory step. Do not call completePremint after it has already succeeded. If you need to mint additional tokens, use the standard mint flow instead.
error
No
PremintAlreadyCompleted()
DALP-4263
Proxy creation failed.
The contract factory computed a deterministic deployment address with CREATE2 before deploying, but the deployed contract landed at a different address. This indicates a salt or bytecode mismatch between the prediction and the actual deploy.
Contact support with the requestId from the error.
error
No
ProxyCreationFailed()
DALP-4264
Purchase amount too low.
The token sale contract blocks purchases or token withdrawals when the effective amount is zero or below the configured minimum. This can occur when: the payment amount is zero, the payment is too small to convert to any tokens at the current rate, the withdrawable vested amount is zero, or the first purchase is below the sale's minimum purchase limit.
Ensure the purchase amount converts to at least one token unit at the current rate and meets the sale's minimum purchase requirement. For token withdrawals, check that the vesting schedule has released a non-zero amount before calling withdrawTokens.
error
No
PurchaseAmountTooLow()
DALP-4265
Query before enabled.
The historical balances feature only records checkpoints from the block at which it was enabled. You queried a timepoint ({{requestedTimepoint}}) that is earlier than the enabledAt timepoint ({{enabledAt}}), so no checkpoint data exists for that period.
Query a timepoint at or after the value returned as enabledAt in the error. Historical balance data is not available for blocks before the token activated this feature.
error
No
QueryBeforeEnabled(uint256,uint48)
DALP-4266
Recipient not verified.
The identity verification compliance module checks each recipient against the token's identity registry and required claim-topic expression before allowing a transfer or mint. The recipient's on-chain identity does not hold the required claims (such as KYC or AML) from trusted issuers.
The recipient must complete the required identity verification process and have the necessary claims issued to their on-chain identity. Once the claims are present and the identity registry confirms the recipient as verified, retry the transfer.
error
No
RecipientNotVerified()
DALP-4267
Recover zero address.
The emergency ERC-20 recovery function requires both the token address and the recipient address to be non-zero. You supplied a zero address for one of those parameters.
Provide a valid non-zero token contract address and a valid non-zero recipient address when calling the ERC-20 recovery function.
error
No
RecoverZeroAddress()
DALP-4268
EntryPoint call did not come from an externally owned account.
The EntryPoint accepts handleOps and handleAggregatedOps only from an externally owned account that calls it directly. This call came from a contract or a nested call.
Submit the bundle from an externally owned account in its own transaction.
error
No
Reentrancy()
DALP-4269
Reentrant initialization.
The fixed yield schedule contract detected a reentrant call during its initialization sequence. The initialize function must complete before anything calls it again.
The initialization sequence must run to completion before any further calls to the contract are made. Ensure no external callbacks or nested calls re-enter the contract's initialize function.
error
No
ReentrantInitialization()
DALP-4270
Refund grace period active.
The sale ended in a failed state, and the contract keeps the payment pool for investor refunds until the refund grace period ends.
Withdraw again after the refund grace period ends. Until then, investors claim their refunds with claimRefund.
error
Yes
RefundGracePeriodActive()
DALP-4271
Remap source key not found.
You attempted a registry key migration but no implementation is registered under the source key ({{oldKey}}). The registry cannot remap a key that has no existing entry.
Verify that the source type key you pass to the remap call matches an addon or factory implementation that is currently registered. List registered keys first and confirm the correct source key before retrying.
error
No
RemapSourceNotFound(bytes32)
DALP-4272
Remap target already exists.
You attempted a registry key migration but the target key ({{newKey}}) derived from the implementation's typeId is already occupied by another registered implementation. Each type key must map to exactly one implementation.
The new key resolved from the implementation's typeId conflicts with an existing registration. Remove or remap the existing entry at the target key first, or resolve the typeId collision between implementations before retrying.
error
No
RemapTargetAlreadyExists(bytes32)
DALP-4273
Replicated execution already performed.
The on-chain identity contract's approve function checks that an execution has not already been carried out before processing an approval. The contract already performed execution {{executionId}} and will not approve it again.
The contract approves and runs each execution exactly once. Check the execution state before calling approve. If you need to perform the same operation again, submit a new execution request via the execute function.
error
No
ReplicatedExecutionAlreadyPerformed(uint256)
DALP-4274
Execution ID not found.
The on-chain identity contract's approve function validates that the execution ID exists before processing. The supplied {{executionId}} is greater than or equal to the current execution nonce, meaning the contract has never created an execution with that ID.
Verify the execution ID by checking the current execution nonce on the identity contract. Only IDs below the nonce represent valid pending executions. Submit a new execution request to obtain a valid ID.
error
No
ReplicatedExecutionIdDoesNotExist(uint256)
DALP-4275
Revocation not allowed after commit.
The XvP settlement has external (cross-chain) flows and all local participants have already approved, committing the settlement to the external counterparty. Once the counterparty chain acts on that commitment, individual parties can no longer revoke their approval.
To cancel a fully committed external settlement, use the cancel vote mechanism so all parties agree to cancel together rather than attempting an individual revocation.
error
No
RevocationNotAllowedAfterCommit()
DALP-4276
Feed round not found.
The feed never recorded this round, or, in bounded-history mode, has already overwritten it.
Request a round ID that falls within the feed's current retention window. Use the latest round ID if historical data for the requested round is no longer available.
error
No
RoundNotFound(uint80)
DALP-4277
Sale duration must be positive.
The token sale factory requires a positive, non-zero sale duration. A duration of zero would create a sale that ends immediately and can never accept purchases.
Supply a saleDuration value greater than zero when calling createTokenSale.
error
No
SaleDurationMustBePositive()
DALP-4278
Sale ended.
The current block timestamp is at or past the sale's configured end time. The sale's purchase window has closed and the contract no longer accepts purchases.
Create a new sale to accept purchases.
error
No
SaleEnded()
DALP-4279
Sale never activated.
The finalizeSale call targeted a sale that is still in SETUP status, meaning the sale was configured but never activated. The finalization path requires the sale to have been activated at least once.
Activate the sale before you finalise it. Unsold tokens come back through withdrawUnsoldTokens once the sale has ended.
error
No
SaleNeverActivated()
DALP-4280
Sale not active.
The requested operation requires the sale to be in PRESALE or PUBLIC_SALE phase, but the sale is currently in a different phase (for example, SETUP, PAUSED, ENDED, or FAILED). Phase-gated operations such as purchasing tokens or pausing can only proceed when the sale is running.
Check the current sale phase. If the sale administrator has paused the sale, they must resume it before purchases can proceed.
error
No
SaleNotActive()
DALP-4281
Sale not ended.
The operation requires the sale to have ended, but the current block timestamp is still before the sale's configured end time and the contract has not moved the sale to ENDED status. Operations such as finalizing the sale or withdrawing unsold tokens are only permitted after the sale window closes.
Wait until the sale's end time has passed, then retry the operation.
error
No
SaleNotEnded()
DALP-4282
Sale not failed.
Refunds are only available when the sale has reached a FAILED final state (the soft cap did not reach its target). The sale is currently in a different final state such as SUCCESS, or the contract has not finalized it.
If the sale succeeded, withdraw the purchased tokens with withdrawTokens. If it is not finalised yet, call finalizeSale after the end time.
error
No
SaleNotFailed()
DALP-4283
Sale not finalized as success.
This sale has a soft cap configured. The contract blocks token withdrawal until the sale administrator finalizes the sale as SUCCESS, confirming the soft cap was met. This prevents buyers from withdrawing tokens while refunds might still apply if the sale ultimately fails.
Wait for the sale administrator to call finalizeSale. Once the contract records the sale as SUCCESS, token withdrawal becomes available.
error
No
SaleNotFinalizedAsSuccess()
DALP-4284
Sale not started.
The current block timestamp is before the sale's configured start time. The purchase window has not opened.
Wait until the sale's start time arrives before submitting a purchase.
error
No
SaleNotStarted()
DALP-4285
Sale start must be in future.
The sale start timestamp provided to createTokenSale is earlier than the current block timestamp. The contract requires the sale to start in the future so there is a defined period for setup and activation.
Provide a saleStart value that is greater than the current block timestamp when calling createTokenSale.
error
No
SaleStartMustBeInFuture()
DALP-4286
Salt already taken.
The identity factory uses CREATE2 for deterministic deployment. A previous deployment from this factory already consumed the salt derived from the provided wallet or contract address, so the factory cannot create a second identity at the same deterministic address.
Retrieve the existing identity address with the factory's lookup functions instead of creating a new one.
error
No
SaltAlreadyTaken(string)
DALP-4287
Same address.
The new implementation address equals the one the factory already uses.
Provide a different implementation address that has not already been set on this factory.
error
No
SameAddress()
DALP-4288
Schedule not active.
The fixed treasury yield schedule's start date has not arrived. Yield accrual begins only on or after the configured startDate, so the contract has no yield to calculate before that point.
Wait until the yield schedule's start date has passed before calling calculateAccruedYield.
error
Yes
ScheduleNotActive()
DALP-4289
Update schema hash does not match the feed's pinned hash.
The update's schemaHash differs from the schema hash this feed pinned at deployment.
Set schemaHash in the update to the feed's expectedSchemaHash and sign the update again.
error
No
SchemaHashMismatch()
DALP-4290
Topic schema changed since this feed was registered.
The topic's schema changed after this feed was registered, so replaceFeed cannot swap the feed in place.
Remove the feed with removeFeed, then register the new feed with registerFeed.
error
No
SchemaHashMismatch(bytes32,bytes32)
DALP-4291
Secret already revealed.
The secret for this settlement is already revealed. A second reveal is refused, and so is any refund or expired withdrawal, because the counterparty chain can already settle.
Execute the settlement. It cannot be refunded after the reveal.
error
No
SecretAlreadyRevealed()
DALP-4292
Secret not revealed.
The XvP settlement uses a hashlock gate and you attempted to execute before revealing the secret on-chain. The contract blocks execution until you submit the pre-image of the hashlock.
Call the revealSecret function with the correct pre-image before attempting to execute the settlement.
error
No
SecretNotRevealed()
DALP-4293
Self transfer.
One of the settlement flows specifies the same address as both sender and recipient. A transfer from an address to itself has no net effect and the contract rejects it as a configuration error.
Review the settlement flows and correct any flow where flow.from and flow.to are the same address.
error
No
SelfTransfer()
DALP-4294
Sender address result.
The ERC-4337 EntryPoint's getSenderAddress function always reverts with SenderAddressResult to return the computed counterfactual smart account address. The revert carries the address as data and signals successful address discovery, not a failure.
Read the sender address from the revert data of the getSenderAddress call. Decode the SenderAddressResult(address) error to extract the computed address.
error
No
SenderAddressResult(address)
DALP-4295
Sender's key lacks the required purpose.
The caller's address does not hold an ACTION_KEY purpose on the ERC-734 identity contract. The identity gate checks that the sender's key hash carries ACTION_KEY before allowing the requested call to proceed.
Add the ACTION_KEY purpose to the caller's key on the identity contract, then retry the call.
error
No
SenderLacksActionKey()
DALP-4296
Sender lacks management key.
The caller's address does not hold a MANAGEMENT_KEY purpose on the ERC-734 identity contract. The identity gate checks that the sender's key hash carries MANAGEMENT_KEY before allowing key management or approval calls.
Have an existing MANAGEMENT_KEY holder add the MANAGEMENT_KEY purpose to the caller's key on the identity contract, then retry the call.
error
No
SenderLacksManagementKey()
DALP-4297
Sender not local.
The caller is not registered as a local participant in this XvP settlement. Only addresses designated as local counterparties during settlement setup may perform this step.
Retry the call from an address registered as a local participant in this settlement, or verify the correct settlement contract address.
error
No
SenderNotLocal()
DALP-4298
Signature unchanged.
The topic scheme's signature is already set to the value you submitted. The registry rejects an update when the new signature is byte-for-byte identical to the one currently stored on-chain.
Supply a different signature string when calling the update function, or skip the call if the current signature is already correct.
error
No
SignatureUnchanged(string,string)
DALP-4299
Signature validation failed.
The ERC-4337 EntryPoint could not validate the aggregated signature produced by the aggregator at the address returned in the error. The aggregator's own validation check rejected the bundle's combined signature.
Confirm the aggregator contract at the reported address is correct and that the signatures in the UserOperation bundle match the aggregation scheme.
error
No
SignatureValidationFailed(address)

The previous page is DALP-4200 to DALP-4249. The next page is DALP-4300 to DALP-4399.

Was this page helpful?