> For the complete documentation index, see [llms.txt](https://docs.ethernity.cloud/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ethernity.cloud/developer-guide/the-guide/inspecting-your-dapp.md).

# 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:

```sh
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:

```sh
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:

```sh
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](https://docs.ethernity.cloud/developer-guide/the-guide/running-your-dapp) for `ecld-test` / `ecld-run`, and [Managing dApp State (ESR)](https://docs.ethernity.cloud/developer-guide/the-guide/managing-dapp-state-esr) for how state gets committed in the first place.
