For the complete documentation index, see llms.txt. This page is also available as Markdown.

Inspecting your dApp

ecld-info is the read-only diagnostic for your dApp. It answers "what is actually registered on-chain, and is it healthy?" — the network, both enclaves, and your ESR state — without a task, a private key, or any gas. It is pure eth_call and event logs, so run it as often as you like.

It reads your project's identity from .config.json (network, image name, IPFS hash), so from your project root you can just run:

ecld-info

(In the JavaScript SDK, prefix with npx: npx ecld-info.)

What it reports

Section
Tells you

NETWORK

name, type, chain id, RPC, contract addresses, and the live block / health — is the chain reachable and are you pointed at the right one

TRUSTEDZONE

the gatekeeper enclave's Image Registry record: published, validated, image hash, MRENCLAVE session, reward address

SECURELOCK

the executor enclave's Image Registry record — the same fields

ESR

the registry address, the total number of keys, and — with --enclave <wallet> — this enclave's state keys and recent StateCommitted events

Run a single section by name when that's all you need:

ecld-info network
ecld-info trustedzone
ecld-info securelock
ecld-info esr

Inspecting ESR state

ESR queries live under the esr subcommand. They read the on-chain registry directly — no order, no gas — so you can confirm what your enclave actually committed:

ecld-info esr address                          # the ESR registry contract address
ecld-info esr count                            # total keys registered
ecld-info esr state   --enclave <A> --key <K>  # the CID + version for one key
ecld-info esr version --enclave <A> --key <K>  # just the current version
ecld-info esr list    [--start N] [--limit M]  # enumerate registered entries

<A> is the enclave's ESR wallet — the address its commits are filed under (the one StateRegistry().wallet_address returns, and that ecld-info esr prints). Because ESR state is encrypted for the enclave, ecld-info shows the pointer and version, not the plaintext — proof that a commit landed and advanced, without exposing what only the enclave can read.

Finding the right registration

The Image Registry is keyed by the image's IPFS hash. ecld-info resolves which record to read in this order:

  • --ipfs <hash> — read that exact record.

  • --name <name> — resolve the latest registered version of that image name.

  • neither — use IPFS_HASH / PROJECT_NAME from .config.json.

Network resolution follows the same convenience chain: --network NAME, else the ESR_NETWORK environment variable, else .config.json's BLOCKCHAIN_NETWORK, else Bloxberg testnet.

When to reach for it

  • After ecld-publish — confirm both enclaves show published and validated, with a real image hash and MRENCLAVE session.

  • When a run fails to match a node — check you're on the right network and that the securelock you expect is the one registered.

  • After an ESR write — ecld-info esr state confirms the CID and version advanced on-chain.

  • Any time you need an enclave's addresses, reward address, or IPFS hashes for a support request — it's the one lookup page that has them all.

See also: Running your dApp for ecld-test / ecld-run, and Managing dApp State (ESR) for how state gets committed in the first place.

Last updated