Troubleshooting
PCR values don't match after deployment
Cause: Building for the wrong architecture, or modifying docker-compose.yml after computing PCR values.
Fix:
- Verify you built for the correct architecture (ARM64 for
c6g/c7g, AMD64 forc6a) - Ensure the
docker-compose.ymlused for deployment matches the one used to compute PCR values - Rebuild if you made any code changes
Contract rejects the signature
Cause: The public key registered on-chain doesn't match the enclave's key.
Fix:
- Check the enclave's public key:
curl http://<PUBLIC_IP>:3000/public-key - Compare with what's registered on-chain
- Re-register the enclave if they differ
docker load changes the image hash
Cause: Docker versions before 29 may alter digests during load due to storage backend differences.
Fix: Upgrade Docker to version 29 or later.
Enclave not responding
Cause: The enclave may not have started, or network issues.
Fix:
- Wait a few minutes after deployment for startup
- Check if the IP is correct
- Verify the enclave is still running on the Oyster dashboard
Attestation verification fails
Cause: PCRs registered on-chain don't match the running enclave.
Fix:
- Run
oyster-cvm verify --enclave-ip <PUBLIC_IP>to get current PCRs - Update on-chain PCRs if they changed
- Check you're connecting to the correct enclave IP
Error registering enclave with zero PCR values
Cause: When PCR values are all zeros (0x000000...), using them directly in the sui client call command causes an error like:
Error executing transaction '...': 2nd command aborted within function '...::enclave::load_pk' at instruction 11 with code 0
Fix: Instead of passing 0x000000... for zero PCR values, use empty strings "" in the sui client call command:
sui client call \
--package <DEMO_PACKAGE_ID> \
--module oyster_demo \
--function update_expected_pcrs \
--args <ORACLE_ID> <ADMIN_CAP_ID> "" "" "" 0x<PCR16> \
--gas-budget 10000000