Problem
The web app reads all protocol data through the API, including on pages whose
entire purpose is trust-minimized verification — yet Contracts.tsx displays
fabricated SHA-256 hashes (#61) and Home.tsx shows hardcoded pool stats (#60).
Users have no way to verify API-served numbers against the chain. There is no
client-side read path that queries Soroban contract state directly.
Before Starting
Read ALL of these before writing any code:
- context/architecture-context.md
- context/code-standards.md
What To Build
A direct Soroban read layer usable from the services tier:
- A contract read service using
stellar-sdk / Soroban RPC
getLedgerEntries (and simulated read-only calls) to fetch live pool
stats, share price, reputation scores, and loan status directly from the
deployed contracts (addresses from constants/config).
- A verification surface (Contracts page) that shows the real deployed WASM
hashes and lets a user reconcile API-reported values against on-chain
reads, flagging any mismatch.
- Read-only, no signing; graceful loading/error/empty states and typed
results.
Files To Touch
- src/services/soroban.service.ts (new)
- src/constants/ (contract addresses / RPC config)
- src/pages/Contracts.tsx, src/pages/Home.tsx (consume real reads)
Acceptance Criteria
Mandatory Checks Before Opening PR
Problem
The web app reads all protocol data through the API, including on pages whose
entire purpose is trust-minimized verification — yet Contracts.tsx displays
fabricated SHA-256 hashes (#61) and Home.tsx shows hardcoded pool stats (#60).
Users have no way to verify API-served numbers against the chain. There is no
client-side read path that queries Soroban contract state directly.
Before Starting
Read ALL of these before writing any code:
What To Build
A direct Soroban read layer usable from the services tier:
stellar-sdk/ Soroban RPCgetLedgerEntries(and simulated read-only calls) to fetch live poolstats, share price, reputation scores, and loan status directly from the
deployed contracts (addresses from constants/config).
hashes and lets a user reconcile API-reported values against on-chain
reads, flagging any mismatch.
results.
Files To Touch
Acceptance Criteria
Mandatory Checks Before Opening PR