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
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 esrInspecting 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_NAMEfrom.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 stateconfirms 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