Skip to main content

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 for c6a)
  • Ensure the docker-compose.yml used 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