charter-attestation-verifier / tree / index.html ยท raw (this view has old GitHub links rewritten for the mirror; raw is byte-exact)
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light dark">
<title>Founding Charter attestation verifier</title>
<meta name="description" content="Check that the Founding Charter attested on chain (EAS on Base) matches its published texts on IPFS. Static page, no backend, no wallet.">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main>
  <header>
    <h1>Charter attestation verifier</h1>
    <p class="muted">Give the EAS attestation UID. The page reads it from Base, fetches every text from IPFS, recomputes its sha256 and shows match or mismatch per text. No backend, no wallet.</p>
  </header>

  <form id="lookup" autocomplete="off">
    <label>Network
      <select id="network" name="network">
        <option value="base">Base</option>
        <option value="base-sepolia">Base Sepolia</option>
      </select>
    </label>
    <label>Attestation UID
      <input id="uid" name="uid" placeholder="0x followed by 64 hex characters" pattern="0x[0-9a-fA-F]{64}" required spellcheck="false">
    </label>
    <details>
      <summary>Advanced</summary>
      <label>RPC URL <input id="rpcUrl" name="rpcUrl" type="url" placeholder="default public RPC"></label>
      <label>IPFS gateway <input id="gateway" name="gateway" type="url" placeholder="https://ipfs.io/ipfs/"></label>
    </details>
    <button type="submit">Verify</button>
    <div class="row">
      <button type="button" class="secondary" id="demo">Demo: matching texts</button>
      <button type="button" class="secondary" id="demoTampered">Demo: one tampered text</button>
    </div>
    <p class="muted">The demos use the test fixture (a sample attestation and sample texts) with no network, so you can see both outcomes before the real Charter is attested.</p>
  </form>

  <section id="result" aria-live="polite"></section>

  <footer class="muted">
    EAS contract <code>0x4200000000000000000000000000000000000021</code> on Base and Base Sepolia. Schema: <code id="schema"></code>.
    Source and tests on <a href="https://agentgate-source.pages.dev/charter-attestation-verifier/">agentgate-source</a>. MIT licence.
  </footer>
</main>
<script type="module" src="app.js"></script>
</body>
</html>

agentgate-source: code mirror on Cloudflare Pages. All repos