MarketsLiveReserveAssetsYieldAPIDocs+ Create

Transparency

Site audit

A self-run review of this site: what is in place, what is missing, and what we are fixing next. Published here so you do not have to take our word for it. Secrets, keys and infrastructure internals are deliberately left out.

Method

  • Live HTTP checks of every public page: response headers, time to first byte, HTML and script weight.
  • A read of the full application source: authentication, key storage, the keeper, the reserve ledger and the operator endpoints.
  • Rendering checks for metadata, sitemap, robots and social previews.
  • Not included: a smart-contract audit of the launch protocol, a review of any issuer, or a penetration test by a third party.

Security

Auth and key handling are sound. The keeper cannot reach anyone's balance. The remaining gap is a Content-Security-Policy.

B+
  1. Pass

    Transport and browser hardening headers

    HSTS, X-Frame-Options DENY, X-Content-Type-Options nosniff, Referrer-Policy strict-origin-when-cross-origin and Permissions-Policy are set on every response.

  2. Pass

    Wallet auth is per-request signatures

    Yield claims and key management require a message signed by the wallet with a timestamp, valid for ten minutes. No session cookie, no address trusted from a request body.

  3. Pass

    API keys stored as SHA-256 only

    The plaintext key is shown once at mint and never persisted. Revocation is immediate and keeps the claim record.

  4. Pass

    Keeper is a spender, not an owner

    The treasury can hold fees and swap them into the backed asset. It cannot mint, cannot reach locked liquidity and cannot touch a holder's balance.

  5. Pass

    Purchases are read from chain, not from the client

    Every reserve row cites the claim tx and the swap tx. A row without both is not credited.

  6. Partial

    Issuer risk is disclosed, not controlled

    The reserve holds third-party tokens. Their custody, oracle and redemption terms are shown on every asset card; they are not ours to enforce.

  7. Gap

    No Content-Security-Policy

    Issuer favicons and token images are loaded from arbitrary origins, which makes a strict CSP hard. A nonce-based policy is planned.

Performance

Every public page is server-rendered from a snapshot; nothing waits on an RPC in the request path.

A-
  1. Pass

    Server-rendered HTML

    Markets, reserve and token pages render on the server. The client bundle is limited to the launch form, the catalogue filter, the comparison table and the wallet button.

  2. Pass

    Self-hosted fonts

    Instrument Sans and DM Mono are served from the same origin with font-display swap.

  3. Partial

    Third-party icons

    Issuer icons come from a favicon service. A cached copy per issuer would remove the dependency.

SEO and sharing

Titles, descriptions and a generated Open Graph image on every route.

A-
  1. Pass

    Metadata

    Every page sets a title and inherits the site description. The OG image is generated at build time.

  2. Partial

    Per-token share cards

    Token pages use the site-wide card. A per-token image with the backing asset and NAV is planned.

Accessibility

Semantic tables and lists, visible focus, reduced-motion respected. Colour contrast on faint text is at the limit.

B
  1. Pass

    Reduced motion

    The hero chart and every transition are disabled under prefers-reduced-motion.

  2. Pass

    Decorative graphics are hidden

    The chart, rails and avatars carry aria-hidden or empty alt.

  3. Partial

    Faint text contrast

    The faint colour on white sits just above 4.5:1. Mono labels at 11px are small; nothing critical is set in them alone.

Operations and reliability

Two steps in the money path are manual, and it is better to say so than let someone find out.

C+
  1. Gap

    Asset purchases are executed by the keeper, not a contract

    The keeper swaps claimed ETH into the backed asset through the issuer's on-chain venue. If the venue is closed or the issuer gates the address, the claim is booked and the purchase waits.

  2. Gap

    Yield is booked when the issuer pays it

    Accrual shown on the site is an estimate from the stated rate. The ledger only credits what actually landed.

  3. Partial

    Trade volume depends on the indexer

    Trades are mirrored from chain logs by a scheduled job. Price and market cap do not depend on it.

Data correctness

The reserve is a ledger, not a balance. Every number on the site is the sum of rows that cite a transaction.

A-
  1. Pass

    Integer micro-USD everywhere

    No floating point in the ledger. Cost, NAV and yield are integers; display rounds, storage does not.

  2. Pass

    NAV is the issuer's number

    The site does not price assets itself. When an issuer feed is stale, the page says so instead of guessing.

  3. Partial

    Snapshot data in this build

    This deployment renders from a static snapshot shaped like the API. Live figures land when the indexer is wired in.

Audit · rewa