Troubleshooting
This document covers common issues encountered when operating zkIdentity, organized by category. Each issue includes symptoms, likely causes, and resolution guidance.
Provider Issues
Provider Rejection
Symptoms: Verification completes but the status is "rejected" instead of "verified."
This is not necessarily a system error. Provider rejection means the KYC provider determined the user's identity could not be verified. Common reasons:
| Reason | User Action |
|---|---|
| Document quality (blurry, cropped, poorly lit) | Retake document photo in good lighting |
| Document expired | Use a valid, unexpired document |
| Biometric mismatch (selfie does not match document) | Ensure the same person completes the selfie step |
| Unsupported document type | Use a supported document (national ID, passport) |
| Liveness failure | Complete the selfie without using printed photos or screens |
Resolution: Inform the user of the reason and advise them to retry with corrected input. The user can initiate a new verification session.
Provider API Errors
Symptoms: Verification fails with an "error" status. Attestor logs show HTTP errors from the provider.
Common causes:
- 401 Unauthorized: Invalid or expired API key. Check credentials in your environment configuration.
- 403 Forbidden: Account suspended or rate limited. Check provider dashboard.
- 429 Too Many Requests: Rate limit exceeded. Implement backoff.
- 5xx errors: Provider outage. Check the provider's status page and retry later.
Diagnostic guidance:
- Check attestor error logs for provider-related errors.
- Check the provider's status page (Smile ID and Plaid both publish status pages).
- Test provider connectivity from the attestor environment.
Webhook Not Received
Symptoms: User completes the provider verification, but the session remains stuck at a pending state.
Common causes:
- Firewall blocking inbound traffic from the provider.
- Incorrect webhook URL configured in the provider dashboard.
- TLS certificate issue on the webhook endpoint.
- Provider webhook delivery system experiencing issues.
Resolution:
- Verify the webhook URL is accessible from the internet.
- Check the provider dashboard for webhook delivery logs.
- Check attestor logs for incoming webhook requests.
- Verify the TLS certificate is valid and not expired.
Proof Generation Issues
Proof Generation Timeout
Symptoms: Session stuck in a proof-generating state. Attestor logs show timeout errors.
Common causes:
- Insufficient CPU resources (ZK proof generation is computationally intensive).
- Provider API unreachable during zkFetch TLS tunnel establishment.
- TEE memory pressure.
Resolution:
- Increase the proof generation timeout setting.
- Allocate more CPU and memory resources to the attestor.
- Verify the provider API is reachable from the attestor.
Proof Verification Failure
Symptoms: The Cartesi rollup rejects the attestation submission.
Possible causes:
- Attestor code version mismatch with the rollup verifier.
- Corrupted proof data due to network issues.
- System clock skew causing timestamp-based proofs to fail.
Resolution:
- Ensure the attestor version is compatible with the rollup deployment.
- Enable NTP synchronization to fix clock skew.
- Investigate network stability between the attestor and the provider.
Session Issues
Session Expiry
Symptoms: Sessions frequently expire before completion.
Common causes:
- Provider processing time exceeds the session time-to-live.
- User abandonment (users start but do not complete the provider flow).
- Webhook delivery delay from the provider.
Resolution:
- Increase the session time-to-live if provider processing regularly exceeds it.
- Implement user-facing progress indicators to reduce abandonment.
- Contact the provider if webhook delivery is consistently slow.
Infrastructure Issues
IPFS Upload Failures
Symptoms: Attestations complete but the IPFS CID is missing. Logs show Pinata upload errors.
Common causes:
- Pinata rate limit or plan limit exceeded.
- Invalid or revoked credentials.
- Network timeout.
Resolution:
- Check Pinata dashboard for usage against plan limits.
- Verify Pinata credentials.
- Increase upload timeout for slow connections.
- Upgrade Pinata plan if limits are regularly hit.
Cartesi Rollup Submission Failures
Symptoms: Proofs are generated but the attestation is not recorded on the rollup.
Common causes:
- Attestor wallet has insufficient ETH balance on Arbitrum.
- Rollup node is unavailable.
- DApp contract is paused.
Resolution:
- Fund the attestor wallet with ETH on Arbitrum.
- Verify rollup endpoint availability.
- Check DApp contract status.
TEE Attestation Failures
Symptoms: The attestor starts but health checks show TEE errors.
Possible causes:
- Server does not have TEE hardware or it is not enabled.
- TEE drivers need updating.
- TEE features disabled in BIOS.
- TEE mode misconfigured (simulation in what should be production).
Resolution:
- Verify TEE hardware support.
- Update TEE drivers.
- Enable TEE features in BIOS if needed.
- Ensure TEE mode is set to production for production deployments.
Getting Help
If the troubleshooting steps above do not resolve the issue:
- Collect attestor logs and diagnostic information.
- Contact the Hadinet Africa team with the diagnostic details.
Related Documentation
- Monitoring -- Setting up alerts to detect issues proactively.
- Configuration -- Configuration options that may resolve issues.
- Testing -- Verifying fixes in sandbox mode before production.