# Contracts: Reading On-Chain

Everything you need to display or verify an app is a free `view` call:

- **`RenderRouter.renderHash(hash)`** → the app's HTML.
- **`RenderRouter.renderHashWithContext(hash, ctx)`** → themed/resized render.
- **`ComponentRegistry.exists(hash)`** → is this component registered?
- **Resolver `resolve(kind, args)`** → a live data value.
- **`SubnameVersionRegistry.resolveCurrent(labelHash)`** → a name's current version hash.
- **`TrustGradeView.analyze(parts)`** → a composition's grade + deviations.

No writes, no keys, no gas needed to read or verify. These are the same reads the SDK runtime makes.
