This page lists the 32 errors in the contract error reference with a code from DALP-3000 to DALP-3999. Match the error's id, or its dalpCode on a contract error or a failed deployment step, for example DALP-3001, 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-3001 | Airdrop ended. | The current block timestamp is past the airdrop's configured end time. The time-bound airdrop contract enforces a claim window and reverts any claim submitted after the window closes. | The claim window for this airdrop has closed. You cannot submit further claims. Review the airdrop's configured end time to confirm. | error | No | AirdropEnded() |
DALP-3002 | Airdrop not started. | The current block timestamp is before the airdrop's configured start time. The time-bound airdrop contract enforces a claim window and reverts any claim submitted before the window opens. | Wait until the airdrop's start time has passed before submitting a claim. Check the airdrop's configured startTime to determine when claims become available. | error | Yes | AirdropNotStarted() |
DALP-3003 | Claim already revoked. | The signature hash for this claim is already present in the revoked claims registry. The contract permits revoking each claim signature only once and blocks duplicate revocations. | The contract already revoked this claim. No further steps are needed for revocation. Verify the claim's current state before submitting another revocation request. | error | No | Claim |
DALP-3004 | Identity holds no claim with this claim ID. | The ERC-735 identity contract stores no claim under the claimId you provided. The contract looks up claims by their computed ID and reverts when no matching claim exists. | Verify the claimId by computing it from the correct issuer and topic for the identity address. Confirm the contract successfully added the claim before attempting to retrieve or remove it. | error | No | Claim |
DALP-3005 | Claim not eligible. | The vesting airdrop contract determined the caller does not meet the eligibility conditions required to claim at this time. The airdrop may have eligibility requirements that the caller's address or state does not currently satisfy. | Confirm the airdrop includes your address in the eligible set and that you meet all required conditions. If eligibility depends on a time-based or on-chain state, verify that the current state satisfies those conditions before retrying. | error | No | ClaimNotEligible() |
DALP-3006 | Claim not valid according to issuer. | When adding a claim signed by an external issuer, the issuer's isClaimValid function returned false for the given topic and signature. The contract verifies claim validity with the issuer before storing it, and reverts when the issuer rejects the claim. | Request a fresh, valid claim signature from the issuer for the correct topic and identity address. Verify the issuer address and topic value match what the issuer signed before resubmitting. | error | No | Claim |
DALP-3007 | Cliff exceeds vesting duration. | The cliff duration provided to the linear vesting strategy is longer than the total vesting duration. The contract enforces that the cliff period must fall within the overall vesting period. | Set the cliff duration to a value less than or equal to the vesting duration and redeploy the vesting strategy. | error | No | Cliff |
DALP-3008 | Distribution cap exceeded. | The amount being distributed would cause the total distributed so far to exceed the distribution cap configured on the airdrop. The contract enforces the cap to prevent distributing more tokens than the allocation permits. | Reduce the distribution amount so that the sum of all distributed amounts stays within the configured cap, or verify the cap value against the intended total allocation. | error | No | Distribution |
DALP-3009 | Duplicate claim topic. | The claim topics array provided when registering or updating a trusted issuer contains the same topic value more than once. The contract requires each topic to appear exactly once in the list. | Remove duplicate topic values from the claimTopics array so that each topic appears only once, then resubmit the trusted issuer registration call. | error | No | Duplicate |
DALP-3010 | Airdrop name is empty. | The airdrop contract requires a non-empty name string during initialization. The name_ argument passed to the initializer had zero bytes. | Provide a non-empty string as the airdrop name. | error | No | InvalidAirdropName() |
DALP-3011 | Claim tracker address is zero or missing the required interface. | The airdrop initializer requires a non-zero claim tracker address that implements IDALPClaimTracker. The address was either zero or the interface probe call failed. | Supply the address of a deployed IDALPClaimTracker contract such as DALPBitmapClaimTracker. | error | No | Invalid |
DALP-3012 | Distribution recipient address is zero. | Each push airdrop distribution call requires a non-zero recipient address. The recipient argument was the zero address. | Provide a valid, non-zero recipient address for the distribution. | error | No | Invalid |
DALP-3013 | Merkle root is zero. | The Merkle root supplied is zero, which no proof can match. Airdrop setup and dividend snapshot recording both need a non-zero root. | Supply the Merkle root computed from the allocation or holder tree. | error | No | InvalidMerkleRoot() |
DALP-3014 | Vesting duration is zero. | The linear vesting strategy constructor requires a vesting duration greater than zero. A duration of zero would make the vesting schedule complete immediately at deployment. | Set vestingDuration_ to the desired total vesting period in seconds (greater than zero). | error | No | InvalidVestingDuration() |
DALP-3015 | Vesting strategy does not support multiple claims. | The vesting airdrop contract requires a vesting strategy that returns true from supportsMultipleClaims(). The strategy at the provided address either reverted or returned false. | Use a vesting strategy implementation that supports incremental claim release, such as DALPLinear. | error | No | Invalid |
DALP-3016 | Vesting strategy address is zero. | The vesting airdrop initializer and setVestingStrategy need a non-zero vesting strategy address. The address supplied was zero. | Deploy a compatible vesting strategy contract and pass its address to the initializer. | error | No | Invalid |
DALP-3017 | No claim topics provided. | The trusted issuers registry requires at least one claim topic when registering or updating a trusted issuer. The call supplied an empty list of claim topics, so the registry rejected it. | Include at least one claim topic in the trusted issuer registration request and resubmit. | error | No | NoClaimTopicsProvided() |
DALP-3018 | Push airdrop claim not allowed. | Push airdrops are admin-controlled: the contract owner distributes tokens directly to recipients. The contract disables the claim functions by design, so calling them always reverts. | Ask the airdrop administrator to distribute your allocation. | error | No | Push |
DALP-3019 | Sender lacks claim signer key. | Adding or removing a claim on an identity requires the caller to hold a CLAIM_SIGNER_KEY for that identity. The sending address does not have that key registered on-chain. | Use an address that holds the CLAIM_SIGNER_KEY on the target identity, or ask the identity owner to add the key before retrying. | error | No | Sender |
DALP-3020 | Caller cannot create an airdrop for this token. | Creating an airdrop requires GOVERNANCE_ROLE on the token, or the system's TOKEN_FACTORY_MODULE_ROLE. The caller holds neither. | Create the airdrop from an address that holds GOVERNANCE_ROLE on the token. | error | No | Unauthorized |
DALP-3021 | Claim must come from the issuer identity itself. | A CONTRACT-scheme claim requires the claim issuer contract itself to call addClaim, with its own address as msg.sender. The call arrived from a different address. | Submit the claim from the issuer identity ( {{issuer}}) itself. {{caller}} is not that identity. | error | No | Unauthorized |
DALP-3022 | Unsupported claim scheme. | The ERC-735 claim implementation accepts ECDSA and ERC-1271 signature schemes, plus CONTRACT. You submitted a scheme value ( {{scheme}}) that does not match any of those. | Resubmit the claim with a supported scheme: 1 for ECDSA, 3 for CONTRACT or 4 for ERC-1271. | error | No | Unsupported |
DALP-3023 | Vesting airdrop implementation not set. | The vesting airdrop factory requires a deployed vesting airdrop implementation contract before new vesting airdrops can be created. No one has configured the factory's implementation address yet. | A system manager must call updateImplementation on the vesting airdrop factory with a valid implementation address before creating vesting airdrops. | error | No | Vesting |
DALP-3024 | Vesting already initialized. | Vesting for this allocation index has already been initialized. Each Merkle-tree index can only start vesting once, and the contract found a non-zero initialization timestamp for the requested index. | Check is before calling initializeVesting. After vesting starts, call claim to collect vested tokens. | error | No | Vesting |
DALP-3025 | Vesting initialization required. | Claiming vested tokens requires that you started vesting first for this allocation index. The contract found no initialization record (timestamp of zero) for the requested index. | Call initializeVesting with a valid Merkle proof for this index to start the vesting schedule, then claim once tokens have vested. | error | No | VestingNotInitialized() |
DALP-3026 | Claim fallback disabled. | The price resolver's claim fallback feature is turned off. Without an active feed for the requested token, the resolver cannot return a price. | Either register a price feed for this token in the FeedsDirectory, or ask the feeds manager to enable claim fallback on the price resolver before retrying. | error | No | ClaimFallbackDisabled() |
DALP-3027 | No claim fallback. | The price resolver attempted to fall back to a trusted identity claim for token {{token}}, but the token has no valid trusted claim available. The fallback path found nothing to return. | Ensure a trusted claim issuer has issued a valid base-price claim for token {{token}}, or register a price feed for this token in the FeedsDirectory so the fallback path is unnecessary. | error | No | NoClaimFallback(address) |
DALP-3028 | Nothing to claim. | There is nothing to claim: no locked or parked XvP balance, or no accrued interest for this holder. | Check that you have an outstanding XvP balance or accrued interest before you claim. Each balance supports a single claim. | error | No | NothingToClaim() |
DALP-3029 | The claim amount cannot be zero. | The airdrop contract requires a non-zero token quantity for every claim. You submitted a claim amount of zero, so the contract reverted before any tokens were transferred. | Enter a valid amount greater than zero to claim your airdrop tokens. | error | No | ZeroClaimAmount() |
DALP-3030 | Airdrop reward already claimed. | The full allocation for this index is already claimed. Each claim adds to the index's claimed total, and the contract refuses a claim once that total reaches the allocation. | Check your balance. Earlier claims for this index already transferred the tokens. | warning | No | IndexAlreadyClaimed() |
DALP-3031 | Claim amount exceeds the unclaimed remainder for this index. | The claim is larger than what remains unclaimed for this index: the total allocation minus earlier claims. | Claim no more than the unclaimed remainder of this index's allocation. | error | No | InvalidClaimAmount() |
DALP-3032 | Merkle proof does not match the airdrop root. | The contract verified the supplied Merkle proof against the stored root and the proof failed. The proof was generated for a different index, account, total allocation or Merkle tree than the one stored on-chain. | Regenerate the proof from the allocation tree behind the on-chain root, for the exact index, account and total allocation. | error | No | InvalidMerkleProof() |
The previous page is DALP-2000 to DALP-2999. The next page is DALP-4000 to DALP-4049.