Skip to main content

Contract errors DALP-4300 to DALP-4399

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

This page lists the 91 errors in the contract error reference with a code from DALP-4300 to DALP-4399. Match the error's id, or its dalpCode on a contract error or a failed deployment step, for example DALP-4300, 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-4300
Slippage exceeded.
The token amount calculated from your payment is below the minimum you specified. The sale contract enforces slippage protection: if the computed output is less than your stated minimum, the purchase reverts.
Lower your minimum token amount or increase your payment amount, then resubmit the purchase.
error
Yes
SlippageExceeded(uint256,uint256)
DALP-4301
Soft cap not reached.
A soft cap is configured on this sale and the sale has not reached a successful finalization. The contract requires successful finalization before allowing fund withdrawals, to prevent funds from leaving while a failed-sale refund window may still apply.
Wait for the sale to finalize as SUCCESS before withdrawing funds. Check the current sale status and finalize if the soft cap has been met.
error
No
SoftCapNotReached()
DALP-4302
Stake not unlocked.
The stake was never unlocked. The EntryPoint withdraws a stake only after unlockStake() starts its unstake delay.
Call unlockStake(), wait out the unstake delay, then withdraw the stake.
error
No
StakeNotUnlocked(uint256,uint256)
DALP-4303
Stake withdrawal failed.
The EIP-4337 StakeManager attempted to transfer the withdrawn stake as native ETH to the destination address, but the transfer call failed. The revert reason from the failed transfer is included in the error.
Verify that the withdrawal address can receive native ETH (it must not revert on plain transfers) and that sufficient gas is available, then retry the withdrawal.
error
No
StakeWithdrawalFailed(address,address,uint256,bytes)
DALP-4304
Stale observation.
The feed update's observedAt timestamp is older than the timestamp of the most recently accepted observation. The issuer-signed scalar feed enforces monotonic ordering to prevent older data from overwriting newer data.
Submit an update whose observedAt value is greater than or equal to the current latest observation timestamp recorded by the feed.
error
No
StaleObservation()
DALP-4305
String too long.
The string value supplied exceeds 31 bytes, which is the maximum length that the OpenZeppelin ShortStrings library can pack into a single storage slot.
Shorten the string to 31 bytes or fewer before submitting the call.
error
No
StringTooLong(string)
DALP-4306
System access manager not set.
The compliance contract requires a system access manager address before this call can proceed, and no address has been configured yet.
Configure the system access manager on the compliance contract before retrying this call.
error
No
SystemAccessManagerNotSet()
DALP-4307
System addon implementation not set.
The system registry attempted to update the implementation address for an addon type whose implementation slot has never been populated. The registry allows updates only to addon types previously registered with an initial implementation.
Register the addon type with an initial implementation address before attempting to update it. Confirm that the addonTypeHash in the error matches the intended addon type.
error
No
SystemAddonImplementationNotSet(bytes32)
DALP-4308
Addon type name already registered.
An addon type with the given name is already registered in the system addon registry (V1, name-based). Each addon type name must be unique across all registrations.
Choose a different type name for the new addon registration, or retrieve the existing addon proxy for the already-registered type name.
error
No
SystemAddonTypeAlreadyRegistered(string)
DALP-4309
Addon type ID already registered.
An addon type with the given typeId is already registered and currently active in the system addon registry (V2, typeId-based). The registry permits re-registration only for archived addon types.
Use the existing addon proxy for the registered typeId, or archive the existing registration before re-registering with the same typeId.
error
No
SystemAddonTypeAlreadyRegisteredV2(bytes32)
DALP-4310
System already bootstrapped.
The system bootstrap function has already run and completed. The system accepts bootstrap only once.
Do not call bootstrap again on this system. If you need to update individual subsystem implementations, use the dedicated setter functions on the system contract.
error
No
SystemAlreadyBootstrapped()
DALP-4311
System trusted issuers registry implementation not set.
The system bootstrap or setter call requires a non-zero trusted issuers registry implementation address, but the provided address is zero. The system validates this address before deploying or updating the registry proxy.
Provide a valid, deployed trusted issuers registry implementation address when calling the system bootstrap or the setSystemTrustedIssuersRegistryImplementation function.
error
No
SystemTrustedIssuersRegistryImplementationNotSet()
DALP-4312
Terms already set.
The sale's terms hash can only be set while the sale is in SETUP status. The sale has already been activated, so the terms hash is now locked.
The terms hash for this sale cannot change after activation. To use different terms, deploy a new sale contract with the correct terms hash before activation.
error
No
TermsAlreadySet()
DALP-4313
Terms not accepted.
A terms hash is set on this sale and the buyer has not accepted it. The sale contract requires each buyer to call acknowledgeTerms before the contract processes their purchase.
Call acknowledgeTerms on the sale contract from the buyer's address before submitting the purchase.
error
No
TermsNotAccepted()
DALP-4314
Terms not set.
The acknowledgeTerms call requires a terms hash configured on the sale, but the sale admin has not set one yet. Buyers cannot acknowledge terms until the admin publishes them.
Have the sale admin call setTermsHash with the correct terms hash before buyers attempt to acknowledge terms.
error
No
TermsNotSet()
DALP-4315
Payment currency limit exceeded.
The token sale contract enforces a maximum of 10 accepted payment currencies to prevent unbounded iteration during refund processing. Adding this currency would exceed that limit.
Remove an existing payment currency before adding a new one, or reduce the number of accepted currencies to stay within the 10-currency limit.
error
No
TooManyPaymentCurrencies()
DALP-4316
Topic ID is missing from the topic scheme registry.
The topic scheme registry could not locate the topic ID in its internal enumeration array during a removal. The topic ID has an index of zero, meaning it was never recorded in the array.
Confirm the topic ID exists in the registry before attempting to remove it. Use the registry's lookup functions to verify the topic is registered.
error
No
TopicIdNotFoundInArray(uint256)
DALP-4317
Topic mismatch.
The feed update's topic ID does not match the topic ID this feed contract was configured for. Each issuer-signed scalar feed is pinned to exactly one topic at deployment.
Submit the update to the feed contract whose pinned topic ID matches the topic ID in your update payload.
error
No
TopicMismatch()
DALP-4318
Topic not registered.
The feeds directory registers a feed only for a topic ID that has a scheme in the topic scheme registry. This topic ID has none.
Register a topic scheme for this topic ID in the topic scheme registry, then retry the feed registration.
error
No
TopicNotRegistered(uint256)
DALP-4319
Topic scheme already exists.
A topic scheme with this name already exists in the registry. The name is hashed to derive the topic ID, and that ID is already occupied.
Choose a unique name for the new topic scheme. To update an existing scheme's signature, use the update function rather than the registration function.
error
No
TopicSchemeAlreadyExists(string)
DALP-4320
No topic scheme is registered for this topic ID.
No topic scheme is registered for this topic ID, either locally or via the parent chain. The registry requires a scheme to exist before you can query or use it.
Register a topic scheme for this topic ID before performing this operation. Verify the topic ID is correct and that it matches a scheme in the registry.
error
No
TopicSchemeDoesNotExist(uint256)
DALP-4321
No topic scheme is registered under this name.
No topic scheme is registered under this name. The registry cannot resolve the name to a topic ID with an associated scheme.
Verify the name matches a scheme registered in the topic scheme registry. Names are case-sensitive and must match exactly.
error
No
TopicSchemeDoesNotExistByName(string)
DALP-4322
Topic scheme registry implementation not set.
The system contract has no topic scheme registry implementation address configured. This address must be set before the system can bootstrap or perform operations that require the registry.
Set a non-zero topic scheme registry implementation with setTopicSchemeRegistryImplementation from an account that holds SYSTEM_MANAGER_ROLE, then retry.
error
No
TopicSchemeRegistryImplementationNotSet()
DALP-4323
Trigger already exists.
The contract already holds a conversion trigger with this ID. Triggers are identified by their ID, and each ID must be unique.
Publish the trigger under a new ID. An ID stays taken after its trigger is turned off.
error
No
TriggerAlreadyExists(bytes32)
DALP-4324
Trigger expired.
The conversion trigger has passed its expiry timestamp. The contract checks that the current block timestamp does not exceed the trigger's configured expiry.
Publish a new conversion trigger with an updated expiry timestamp in the future, then retry the conversion.
error
No
TriggerExpired(bytes32)
DALP-4325
Trigger not active.
The referenced conversion trigger exists but the contract deactivated it. Only triggers with their active flag set can be used for conversions.
Publish a new trigger under a new ID, then convert against it.
error
No
TriggerNotActive(bytes32)
DALP-4326
Trigger not found.
No conversion trigger exists for this trigger ID. The contract checks that the trigger's publishedAt field is non-zero before allowing a conversion.
Publish a conversion trigger with the expected trigger ID before attempting the conversion.
error
No
TriggerNotFound(bytes32)
DALP-4327
Trusted issuers meta registry implementation not set.
The system contract requires a trusted issuers meta registry implementation address before it can bootstrap or deploy identity infrastructure. No address is set.
Set the trusted issuers meta registry implementation address on the system contract using the system manager function before proceeding.
error
No
TrustedIssuersMetaRegistryImplementationNotSet()
DALP-4328
The requested resource could not be found.
The referenced multisig transaction does not exist at the requested index. The transaction index is out of range for the contract's transaction list.
Verify the transaction index is correct and within the range of recorded transactions before submitting the request.
error
No
TxDoesNotExist(uint256,uint256)
DALP-4329
Tx executed.
The multisig contract already executed the transaction at this index. Each transaction can run only once.
Check the transaction status before submitting an execution request. The contract executes each transaction exactly once.
error
No
TxExecuted(uint256)
DALP-4330
Caller is not the authorised address.
The caller's address does not match the address the contract requires for this operation. This contract restricts certain calls to a specific address, such as the factory that deployed it.
Ensure the call originates from the authorized address for this operation. Check the contract's deployment configuration to identify the required caller.
error
No
Unauthorized()
DALP-4331
You do not have permission for this operation.
The caller may not make this call on the token feature. Guarded calls need a token role, token hooks accept only the bound token or a registered feature, and a movement request must come from its own party. A feature set up with a zero token address raises the same error.
Call from an address that holds the token role the operation needs. Hook calls come from the token itself and cannot be made directly.
error
No
UnauthorizedCaller()
DALP-4332
Caller is not the bound token or compliance contract.
A compliance contract accepts hooks and transfer checks only for its bound token, and binding calls only from the system compliance contract. The caller or token named in the error is not the expected one.
Ensure these compliance hooks are invoked only by the token contract associated with this compliance instance. The contract rejects direct calls from other addresses.
error
No
UnauthorizedCaller(address,address)
DALP-4333
Only the associated contract can issue claims.
An address other than the associated contract submitted a claim to this on-chain contract identity. This identity contract only allows its associated contract address to issue claims on its behalf.
Trigger claim issuance through the associated contract rather than calling the identity directly from a different address.
error
No
UnauthorizedContractOperation(address)
DALP-4334
Conversion feature is not an authorised converter on the target token.
The caller is not registered as an authorized converter for this token. The conversion minter checks the authorizedConverters mapping before allowing a conversion mint.
Ask a holder of GOVERNANCE_ROLE on the target token to add this conversion feature with addAuthorizedConverter on its conversion minter, then retry.
error
No
UnauthorizedConverter(address)
DALP-4335
Caller cannot create or replace token features.
The token feature factory checks the caller's role before creating or replacing a feature. The call needs TOKEN_FACTORY_MODULE_ROLE at the system level or GOVERNANCE_ROLE on the subject token, and the calling address held neither.
Ensure the caller holds TOKEN_FACTORY_MODULE_ROLE in the system, or holds GOVERNANCE_ROLE on the token whose feature is being created. Then resubmit the request.
error
No
UnauthorizedFeatureCreation()
DALP-4336
Caller may not call compliance module hooks.
The token contract, its configured compliance contract, or the system compliance contract must call compliance module hooks (transferred, created, destroyed). The address in the error did not match any of these permitted callers.
Route compliance hook calls through the token or its compliance contract. Direct calls to compliance module hooks from other addresses are not permitted.
error
No
UnauthorizedHookCaller(address)
DALP-4337
Owning contract did not approve this caller.
The owning contract's permission check (canAddClaim or canRemoveClaim) returned false for the calling address. Contract identities delegate claim management authorization to their owning contract, and the caller was not approved.
Obtain approval from the owning contract for this address before calling addClaim, removeClaim, registerClaimAuthorizationContract, or removeClaimAuthorizationContract on the contract identity.
error
No
UnauthorizedOperation(address)
DALP-4338
You do not have permission for this operation.
The multi-signature contract verified that the submitted signer address does not hold SIGNER_ROLE. Only registered signers may participate in or update multi-sig operations.
Verify that the signer address holds SIGNER_ROLE on the multi-sig contract. Add the address to the signer set before submitting a transaction or weight update that references it.
error
No
UnauthorizedSigner(address)
DALP-4339
You do not have permission for this operation.
An address other than the associated token contract called the voting power feature's internal voting-units function. The feature restricts this query to the token itself.
Query voting units through the token contract or the feature's public getVotingUnits view function rather than calling the internal hook directly.
error
No
UnauthorizedVotingUnitsQuery()
DALP-4340
Unknown expression type.
The on-chain RPN expression evaluator in the identity verification library encountered a node whose type does not match any known ExpressionType: TOPIC, AND, OR or NOT. The expression tree stored in the compliance rule contains an unrecognised node.
Rebuild the compliance expression from supported node types and update the module configuration. If the platform produced the expression, contact support with the requestId from the error.
error
No
UnknownExpressionType()
DALP-4341
Unregistered key.
The key has no registered interface. setImplementation, setInstance and reregisterImplementation need a registered key, and an import row needs a non-zero interfaceId.
Register the directory key first by calling registerImplementation or registerInstance with the key and its expected interface. Once registered, setImplementation or setInstance will accept the call.
error
No
UnregisteredKey(bytes32)
DALP-4342
Unsupported attribute.
The ERC-7786 cross-chain gateway source contract received a message attribute with a 4-byte selector that is not recognized by this gateway implementation. The gateway cannot forward messages that carry unsupported attributes.
Remove the unsupported attribute from the cross-chain message before sending, or use a gateway implementation that declares support for the attribute selector returned in the error.
error
No
UnsupportedAttribute(bytes4)
DALP-4343
Unsupported execution operation.
Contract identities do not support ERC-734 execution operations (approve, execute). These functions always revert because contract-owned identities manage authorization through their owning contract, not through the ERC-734 execution queue.
Use the owning contract's authorisation mechanisms instead of calling ERC-734 approve or execute on a contract identity.
error
No
UnsupportedExecutionOperation()
DALP-4344
Unsupported key operation.
Contract identities have no ERC-734 key store: addKey, removeKey, getKey, getKeyPurposes and getKeysByPurpose always revert.
Manage access through the owning contract's permission model rather than calling ERC-734 addKey or removeKey on a contract identity. Use a user wallet identity if key-based access control is required.
error
No
UnsupportedKeyOperation()
DALP-4345
Unsupported payment currency.
The token sale contract requires you to register payment currencies before accepting purchases. You have not added the currency address used in the buy call to the sale's accepted payment currencies list.
Use a payment currency that you have registered for this sale. Call paymentCurrencies on the sale contract to see which currencies the sale accepts, then resubmit with a supported currency address.
error
No
UnsupportedPaymentCurrency()
DALP-4346
Value not positive.
The issuer-signed scalar feed has requirePositive enabled, and the submitted value was zero or negative. The feed enforces that all accepted values must be strictly positive when this flag is set.
Submit a value greater than zero. If the data source must preserve zero or negative values, use a separately deployed compatible feed whose contract permits them.
error
No
ValueNotPositive()
DALP-4347
Delegation signature expired.
The ERC-5805 delegateBySig call presented a signature whose expiry timestamp has passed. The Votes contract rejects expired signatures to prevent replay of stale delegation authorizations.
Generate a new delegateBySig signature with an expiry timestamp in the future and resubmit. The expiry argument in the error shows the timestamp the contract found to be expired.
error
No
VotesExpiredSignature(uint256)
DALP-4348
Wallet already linked.
The identity factory already maps this wallet address to an existing identity contract. Each wallet address can link to at most one identity in the factory.
Use the identity the factory already links to this wallet. The factory has no call that removes the link.
error
No
WalletAlreadyLinked(address)
DALP-4349
Wallet already marked as lost.
The identity registry has already recorded this wallet address as lost in the pending or accepted identity layer. The registry blocks recording a wallet as lost a second time, and a lost wallet cannot be the replacement wallet in a recovery.
Check the wallet's current status in the identity registry before initiating recovery. Use a different replacement wallet address, or contact the identity manager if the lost status was set in error.
error
No
WalletAlreadyMarkedAsLost(address)
DALP-4350
Wallet in management keys.
The identity factory detected that the wallet address being registered also appears in the management keys list supplied during creation. A wallet's own address cannot serve as an explicit management key because the contract rejects redundant key entries to prevent configuration errors.
Remove the wallet address from the managementKeys array before submitting the identity creation request. The wallet already receives management access through its account registration.
error
No
WalletInManagementKeys()
DALP-4351
Withdrawal already scheduled.
The airdrop contract already has a withdrawal scheduled that has not run yet. Only one withdrawal can be pending at a time.
Run the scheduled withdrawal or cancel it before scheduling a new one. Call executeWithdrawal once its eligible time has passed, or cancelScheduledWithdrawal to clear it.
error
No
WithdrawalAlreadyScheduled()
DALP-4352
Withdrawal not due.
The ERC-4337 EntryPoint stake manager requires callers to wait for the full unstake delay after calling unlockStake before withdrawing. The current block timestamp has not reached the scheduled withdrawal time returned in the error.
Wait until the block timestamp reaches the withdrawTime value returned in the error, then resubmit the withdrawStake call. The error includes both the eligible withdrawal time and the current block timestamp.
error
Yes
WithdrawalNotDue(uint256,uint256)
DALP-4353
Withdrawal not ready.
The airdrop contract has a withdrawal scheduled, but its eligible time has not passed. A withdrawal waits seven days after scheduleWithdrawal and, while claims are open, until they close: the end of a time-bound airdrop's claim window or a vesting airdrop's initialization deadline.
Read the eligible time from withdrawalSchedule or the WithdrawalScheduled event, then call executeWithdrawal after it.
error
Yes
WithdrawalNotReady()
DALP-4354
Withdrawal not scheduled.
You called executeWithdrawal or cancelScheduledWithdrawal with no withdrawal scheduled, or called withdrawTokens, which always refuses because a withdrawal must be scheduled first.
Call scheduleWithdrawal first. Once the eligible time it records has passed, call executeWithdrawal.
error
No
WithdrawalNotScheduled()
DALP-4355
Wrapped error.
The ERC-4337 EntryPoint caught a revert from an inner call, such as a paymaster or account execution, and re-emits it as this error. The error carries the target address, the called function selector, the raw revert reason, and any extra detail bytes. The original failure originates inside the inner contract, not in the EntryPoint itself.
Decode the nested reason bytes to find the root revert. The target and selector fields identify which contract and function reverted. Resolve the inner error using those details.
error
No
WrappedError(address,bytes4,bytes,bytes)
DALP-4356
Yield schedule active.
The token's yield schedule has already started: its start date is at or before the current block timestamp. The contract blocks minting after the yield schedule becomes active to preserve the fairness of yield distribution.
The contract closes minting once the yield schedule becomes active. Check the yield schedule's start date before attempting to mint, or contact the token issuer to confirm the minting window.
error
No
YieldScheduleActive()
DALP-4357
Yield schedule already set.
A yield schedule is already associated with this token. The contract permits only one yield schedule per token and reverts if you attempt to set a second one.
Read the current yieldSchedule address on the token before calling set. If the token already has a schedule, the contract blocks assigning another one.
error
No
YieldScheduleAlreadySet()
DALP-4358
Trading venue or settlement address is zero.
A required address parameter was the zero address. The contract requires a non-zero address at this position.
Provide a non-zero address for each address argument.
error
No
ZeroAddress()
DALP-4359
Address field is zero.
The address parameter named in the field argument was the zero address. The contract requires a non-zero address for that field.
Provide a valid, deployed contract or wallet address for the field identified in the error. The field value in the error data names the specific parameter that was zero.
error
No
ZeroAddress(string)
DALP-4360
Address is zero.
An address argument that must be non-zero was the zero address.
Provide a non-zero address for each address argument.
error
No
ZeroAddressNotAllowed()
DALP-4361
ECDSA validator owner address is zero.
The owner address provided during ECDSA validator installation or update was the zero address. The validator requires a real key-holding address as the account owner.
Provide a non-zero EOA or contract address as the owner when installing or updating the ECDSA validator module.
error
No
ZeroAddressOwner()
DALP-4362
Amount is zero.
A token amount argument was zero where the contract requires a positive value. The operation requires a non-zero quantity to proceed.
Provide a positive amount.
error
No
ZeroAmount()
DALP-4363
Distribution amount is zero.
You called distribute or batchDistribute with an amount of zero. The contract requires each distribution entry to transfer at least one token unit.
Ensure every distribution amount in your distribute or batchDistribute call is greater than zero. Remove or correct any zero-amount entries before submitting.
error
No
ZeroAmountToDistribute()
DALP-4364
No vested tokens are claimable.
The vesting strategy releases nothing new for this index since the last claim. Either no further tokens have vested yet, or the full allocation is already claimed.
Read getClaimedAmount(index). If it is below the allocation, claim again after more tokens vest.
error
No
ZeroAmountToTransfer()
DALP-4365
Denomination asset address is zero.
The denomination asset address provided to the maturity redemption feature was the zero address. The feature requires a deployed ERC-20 contract as the payout currency.
Provide a valid, deployed ERC-20 token address as the denomination asset when configuring the maturity redemption feature.
error
No
ZeroDenominationAsset()
DALP-4366
Effective conversion price is zero.
The conversion pricing calculation produced an effective price of zero. This can happen when the configured discount is so high that the round price rounds down to zero after applying basis-point arithmetic.
Reduce the discount percentage so that the effective price remains above zero, or increase the round price per share. Verify the discount and cap configuration for this conversion trigger.
error
No
ZeroEffectivePrice()
DALP-4367
EntryPoint wrapper deployed with a zero EntryPoint address.
You deployed the EntryPoint wrapper with a zero-address canonical EntryPoint. The wrapper has no target to forward calls to and cannot operate.
Deploy the EntryPoint wrapper with the correct canonical ERC-4337 EntryPoint address. Confirm the address is a deployed contract before passing it to the constructor.
error
No
ZeroEntryPoint()
DALP-4368
Face value is zero.
The face value parameter for the maturity redemption feature was zero. The face value determines the redemption payout per token unit, so it must be a positive amount.
Provide a positive face value (in the smallest unit of the denomination asset) when initializing the maturity redemption feature.
error
No
ZeroFaceValue()
DALP-4369
Recipient address is zero.
The recipient address is the zero address. Conversion mints, converter registration, supply delegate mints and hold deliveries need a real recipient.
Provide a non-zero recipient address.
error
No
ZeroRecipient()
DALP-4370
Conversion target amount is zero.
The conversion calculation computed a target amount of zero. The principal or interest, after the contract applies the effective price and token decimals, rounds down to zero tokens of the target asset.
Increase the principal amount you are converting, or adjust the effective price configuration so that the resulting target amount is at least one token unit of the target asset.
error
No
ZeroTargetAmount()
DALP-4371
Treasury address is zero.
The maturity redemption feature needs a non-zero treasury address to pay redemptions from.
Provide a valid, non-zero treasury address when initializing or reconfiguring the maturity redemption feature.
error
No
ZeroTreasuryAddress()
DALP-4372
Cannot remove last validator.
Removing this validator module would leave the account with no validators. An account with no validators cannot validate UserOperations and becomes permanently inoperable.
Install a replacement validator module before removing the current one, so the account always retains at least one active validator.
error
No
CannotRemoveLastValidator()
DALP-4373
Validator module limit exceeded.
Installing this validator module would exceed the account's maximum of {{maxValidators}} validator modules. The contract enforces this limit to keep UserOp validation gas costs bounded.
Remove an existing validator module before installing a new one, keeping the total at or below {{maxValidators}}.
error
No
TooManyValidators(uint256)
DALP-4374
Operation unavailable on this contract.
The contract function you called has no implementation. The contract reached the selector but the body is a stub that always reverts.
This function is not available on this contract version. Check the API reference to confirm the correct method name and contract version, then retry with a supported call.
error
No
NotImplemented()
DALP-4375
Paymaster not deployed.
The ERC-4337 EntryPoint simulation found that the paymaster address you supplied has no deployed bytecode. The EntryPoint rejects the user operation because it cannot call a contract that does not exist at that address.
Confirm the paymaster contract has deployed bytecode on the target network, then provide its correct address before resubmitting the user operation.
error
No
PaymasterNotDeployed(address)
DALP-4376
Max staleness value is zero.
The price resolver requires a max staleness threshold that is greater than zero seconds. A value of zero would disable the staleness check entirely, which the contract does not permit.
Provide a positive number of seconds for the max staleness threshold.
error
No
InvalidMaxStaleness()
DALP-4377
Paymaster entry point not contract.
The new EntryPoint address passed to setEntryPoint has no deployed bytecode. The paymaster calls into the EntryPoint during validation, so it must be a live contract.
Supply the address of the currently deployed EntryPoint contract. Confirm the address has code on the target network before calling setEntryPoint.
error
No
PaymasterEntryPointNotContract(address)
DALP-4378
Asset type name required.
The access manager address for a DALP asset depends on its asset type name. The generic predictAccessManagerAddress always reverts, and predictAccessManagerAddressForAssetType reverts when assetTypeName is empty.
Call predictAccessManagerAddressForAssetType rather than the generic predictor. Supply a non-empty assetTypeName string that identifies the concrete asset type.
error
No
AssetTypeNameRequired()
DALP-4379
Parent registry address is self-referencing, unsupported, or creates a cycle.
The chained registry requires a parent that is a distinct address implementing the required registry interface and absent from this contract's own chain. The provided address fails at least one of these conditions.
Provide the address of a different, already-deployed registry contract whose parent chain excludes this contract entirely.
error
No
InvalidParentAddress(address)
DALP-4380
Implementation not registered.
The compliance module registry has no registered entry for the requested typeId. Either the typeId was never registered, or it refers to a different registry. The registry blocks the call to prevent deploying or upgrading with an unknown module type.
Verify that the typeId you are using matches a module type previously registered in this compliance module registry. Use the registry's enumeration to list registered types and confirm your typeId.
error
No
ImplementationNotRegistered(bytes32)
DALP-4381
Instance deployment failed.
The module instance deployment returned no address. On a V3 registry the constructor ran out of gas or reverted with no data. On a V2 registry a module that rejects its configuration raises the same error.
Check the module configuration. If the create shared a request with other heavy work, retry with fewer modules, or create the token first and install modules afterwards.
error
No
InstanceDeploymentFailed()
DALP-4382
Compliance module rejected the configuration.
The compliance module rejected the supplied configuration. The error includes a reason string describing the specific constraint that failed, such as a zero value where a positive one is required, a duplicate entry, or an address that exceeds an allowed limit.
Correct the configuration field identified in the error reason and resubmit. Consult the error reason string for the exact constraint.
error
No
InvalidConfig(string)
DALP-4383
Not module admin.
The compliance module's updateConfig call requires the caller to be either the compliance engine that owns the module or an address the engine has granted module admin status. The caller held neither role.
Use an address that is the compliance engine for this module, or one that the engine's isModuleAdmin check returns true for. Contact the platform operator to have the correct address granted module admin status.
error
No
NotModuleAdmin()
DALP-4384
Registry not available.
The compliance engine tried to resolve the compliance module registry through the system contract, but the system contract's registry address is zero. The registry address must be set on the DALPSystem proxy before compliance operations can proceed.
Confirm that the DALPSystem proxy has a non-zero complianceModuleRegistry address configured. Platform setup requires this; contact the operator if the registry address is absent.
error
No
RegistryNotAvailable()
DALP-4389
Module family mismatch.
An attempt was made to upgrade a compliance module implementation to a contract from a different V1/V2 family than the one originally registered. Changing the family would break all existing per-engine proxy instances that delegate to the current implementation.
Supply an implementation from the same family as the registered type. A module from the other family needs its own type id.
error
No
ModuleFamilyMismatch(bool,bool)
DALP-4390
Type id mismatch.
The new compliance module implementation reports a typeId that does not match the typeId you are registering it under. The registry enforces this to prevent a module from replacing one of a different type.
Ensure the implementation contract's typeId() return value matches the typeId key you are registering it under. Check the implementation contract to confirm its declared type.
error
No
TypeIdMismatch(bytes32,bytes32)
DALP-4392
Max chain depth exceeded.
A chained registry (topic scheme or trusted issuers) attempted to set a parent that would create a parent chain longer than 3 levels. The contract enforces this depth limit to prevent unbounded traversal during lookups.
Restructure the registry hierarchy so that no chain from a child registry to a root registry exceeds 3 hops. Remove an intermediate level or flatten the hierarchy before setting the parent.
error
No
MaxChainDepthExceeded()
DALP-4393
Not a validator module.
The address passed as a validator module during account creation does not satisfy the ERC-7579 validator interface. The account factory verifies this before creating the smart account to prevent creating accounts with non-functional validators.
Use a module address registered in the account factory that implements the ERC-7579 Module interface with module type VALIDATOR. Confirm the module contract reports the correct module type before submitting.
error
No
NotAValidatorModule(address)
DALP-4394
System registry not available.
The token identity registry factory requires one or more system registries to be set on the DALPSystem proxy before a token identity registry can deploy. The named registry address resolves to zero.
Confirm all required system registries are configured on the DALPSystem proxy. The registryName field in the error identifies the missing registry. Contact the platform operator to complete system setup.
error
No
SystemRegistryNotAvailable(string)
DALP-4396
V1 hook must bypass adapter.
You called a state-changing compliance hook (transferred, created, or destroyed) directly on the V1 compliance module adapter. The adapter does not handle these hooks because V1 modules require the engine to be msg.sender, so the engine must call the wrapped V1 module directly.
Do not call state-changing hooks on the adapter contract. Read the v1Module() and config() from the adapter, then call the hook on the V1 module directly from the compliance engine.
error
No
V1HookMustBypassAdapter()

The previous page is DALP-4250 to DALP-4299. The next page is DALP-4400 to DALP-4499.

Was this page helpful?