<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: m-reynaldo35</title>
    <description>The latest articles on DEV Community by m-reynaldo35 (@mreynaldo35).</description>
    <link>https://dev.to/mreynaldo35</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3984458%2Fe3b540a1-d24d-49c9-abdf-c4db7ee44b8c.png</url>
      <title>DEV Community: m-reynaldo35</title>
      <link>https://dev.to/mreynaldo35</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mreynaldo35"/>
    <language>en</language>
    <item>
      <title>Post-quantum document anchoring for AI agents on Algorand</title>
      <dc:creator>m-reynaldo35</dc:creator>
      <pubDate>Sun, 14 Jun 2026 23:04:20 +0000</pubDate>
      <link>https://dev.to/mreynaldo35/post-quantum-document-anchoring-for-ai-agents-on-algorand-2l90</link>
      <guid>https://dev.to/mreynaldo35/post-quantum-document-anchoring-for-ai-agents-on-algorand-2l90</guid>
      <description>&lt;h1&gt;
  
  
  Post-quantum document anchoring for AI agents on Algorand
&lt;/h1&gt;

&lt;p&gt;There's a quiet assumption baked into every e-signature platform: that RSA and ECDSA will still be hard to break when someone needs to prove the document is authentic. For a contract signed today and enforced in 2040, that assumption is worth examining.&lt;/p&gt;

&lt;p&gt;NIST finalised ML-DSA (FIPS-204) in August 2024 — the first post-quantum signature standard ready for production use. Algorand has been producing Falcon-512 state proofs over every block since 2022. The standards exist. The chain infrastructure exists. What was missing was a simple, open tool that wires them together and exposes them to the AI agents now autonomously executing agreements.&lt;/p&gt;

&lt;p&gt;That's what PQ Verifiable Archive is. It's open source, it runs on Algorand mainnet, and you can call it today.&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem with documents signed today
&lt;/h2&gt;

&lt;p&gt;A signed PDF sitting in a DocuSign vault has an integrity guarantee based on an RSA or ECDSA certificate chain. A large enough quantum computer breaks both. CNSA 2.0 mandates post-quantum cryptography for national-security systems by roughly 2030–2035, and regulated industries will be close behind. "Harvest now, decrypt later" is already happening — adversaries are archiving signed artifacts to attack once the hardware lands.&lt;/p&gt;

&lt;p&gt;The document you sign today may need to be verified in 2040. The signature on it will not survive.&lt;/p&gt;




&lt;h2&gt;
  
  
  What PQ Verifiable Archive does
&lt;/h2&gt;

&lt;p&gt;It adds a quantum-resistant notarisation layer to any signed document, without requiring you to change your signing tool.&lt;/p&gt;

&lt;p&gt;The flow is straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Take a SHA-256 hash of your signed PDF&lt;/li&gt;
&lt;li&gt;Anchor that hash to Algorand mainnet in a transaction note&lt;/li&gt;
&lt;li&gt;Sign a self-contained &lt;strong&gt;proof bundle&lt;/strong&gt; with ML-DSA-65 (NIST FIPS-204)&lt;/li&gt;
&lt;li&gt;Hand anyone the bundle — they can verify it offline, decades from now, without trusting any vendor&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The bundle looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"protocol"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"pqva/1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"envelopeId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"contract-2026-001"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"documentHash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"d88c1a367ad6e6bc..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"merkleRoot"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"d88c1a367ad6e6bc..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"algorandTxnId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"QZDHEO4JKMRUXHNABS5AVRM53PYKBPKUUFULDBV2LANN3Z37PWAA"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"algorandRound"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;62158259&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"blockTimestamp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-06-14T22:18:41.000Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"stateProofRound"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;62158464&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"algorithm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ml-dsa-65"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mldsaPublicKey"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"b1509e56..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"signature"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"75483d62..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nothing in the bundle reveals document contents. Only irreversible hashes touch the chain.&lt;/p&gt;




&lt;h2&gt;
  
  
  Five checks, three offline
&lt;/h2&gt;

&lt;p&gt;The verifier runs five checks. Three of them need no network connection at all — they work from the bundle alone:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Check&lt;/th&gt;
&lt;th&gt;What it proves&lt;/th&gt;
&lt;th&gt;Network?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ML-DSA-65 signature&lt;/td&gt;
&lt;td&gt;Bundle hasn't been tampered with since signing&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SHA-256(PDF) match&lt;/td&gt;
&lt;td&gt;Correct document was anchored&lt;/td&gt;
&lt;td&gt;No (needs PDF)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Merkle inclusion&lt;/td&gt;
&lt;td&gt;This hash is under the claimed root&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Algorand anchor&lt;/td&gt;
&lt;td&gt;Root appears in on-chain transaction note&lt;/td&gt;
&lt;td&gt;AlgoNode only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Falcon-512 state proof&lt;/td&gt;
&lt;td&gt;Block is covered by Algorand's native PQC proof&lt;/td&gt;
&lt;td&gt;AlgoNode only&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Steps 4 and 5 query AlgoNode — a public indexer — not a private vendor API. Anyone can run a verification against the public Algorand ledger forever.&lt;/p&gt;




&lt;h2&gt;
  
  
  An MCP tool for AI agents
&lt;/h2&gt;

&lt;p&gt;AI agents are already signing NDA terms, executing purchase orders, and creating binding agreements autonomously. When an agent acts on your behalf, you need a machine-readable, tamper-evident receipt — not a PDF in a folder that disappears when a vendor shuts down.&lt;/p&gt;

&lt;p&gt;PQ Verifiable Archive ships as a Model Context Protocol server. Add it to Claude's settings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"pq-verifiable-archive"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"tsx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/path/to/pq-verifiable-archive/src/mcp-server.ts"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"ALGORAND_MNEMONIC"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your 25-word mnemonic"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"DOCUSIGN_MLDSA_PUBLIC_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"DOCUSIGN_MLDSA_PRIVATE_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"DOCUSIGN_KEY_REGISTRATION_TXN_ID"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude can then call two tools directly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;anchor_document(hash, envelope_id?, signers?)&lt;/code&gt; — anchors to Algorand mainnet, returns a proof bundle&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;verify_bundle(bundle, pdf_base64?)&lt;/code&gt; — runs all five checks, returns structured pass/fail&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An agent executing a contract can anchor the signed hash immediately after execution, attach the bundle to its audit log, and any party can verify the record independently years later. No trust in the agent's vendor required.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pay per anchor via x402 on the hosted API
&lt;/h2&gt;

&lt;p&gt;If you don't want to run your own node, the hosted API at &lt;code&gt;pq-verifiable-archive-production.up.railway.app&lt;/code&gt; charges &lt;strong&gt;$0.01 USDC per anchor&lt;/strong&gt; using the x402 micropayment protocol on Algorand.&lt;/p&gt;

&lt;p&gt;The flow is entirely automated:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST /api/anchor  →  402 (payment required)
                 →  build USDC payment transaction
                 →  POST /api/anchor with payment-signature header
                 →  anchor confirmed + proof bundle returned
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The GoPlausible facilitator handles gas fees — the payer only transfers USDC. There's no API key, no account, no billing dashboard. An AI agent with a funded Algorand wallet can anchor documents with no human in the loop.&lt;/p&gt;

&lt;p&gt;Self-hosted use is completely free. You pay only Algorand's ~$0.0002 network fee per anchor.&lt;/p&gt;




&lt;h2&gt;
  
  
  What we tested
&lt;/h2&gt;

&lt;p&gt;Six consecutive E2E test runs, each one a unique document hash anchored to Algorand mainnet with a real USDC payment:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Run&lt;/th&gt;
&lt;th&gt;Algorand Txn&lt;/th&gt;
&lt;th&gt;Round&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;QZDHEO4J...&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;62158259&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IIQC4D75...&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;62158297&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;DTSKHBWO...&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;62158363&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;code&gt;KP226VBK...&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;62158366&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;code&gt;HYFTNAIE...&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;62158369&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SY7JCOZV...&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;62158372&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each run: payment verified by GoPlausible facilitator → atomic group submitted → anchor confirmed in ~9 seconds → ML-DSA-65 bundle signed and returned → all five verification checks pass.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Algorand
&lt;/h2&gt;

&lt;p&gt;Two reasons that matter for long-lived documents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Native post-quantum state proofs.&lt;/strong&gt; Algorand produces Falcon-512 proofs over every ~256-round interval automatically. The anchor doesn't just sit in a transaction note — it sits in a block that is itself covered by a post-quantum attestation. You get two layers of quantum resistance: ML-DSA-65 on the bundle, Falcon-512 on the ledger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Permissionless verification.&lt;/strong&gt; Any party can query the Algorand public indexer forever. The integrity of a document from 2026 doesn't depend on this project's servers being up in 2040. It depends on the public Algorand ledger — which anyone can run a node for.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Legal tech and HR platforms.&lt;/strong&gt; Offer letters, NDAs, termination agreements, patient consents. Anything signed today that a regulator might scrutinise in ten years.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI agents executing agreements.&lt;/strong&gt; Autonomous agents need receipts that outlive the session and the vendor. An immutable on-chain anchor with a verifiable ML-DSA signature is the right format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anyone building on Algorand.&lt;/strong&gt; The MCP server, the proof bundle format, and the verification library are all open. Fork it, integrate it, build on it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Get started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Self-hosted (free)&lt;/span&gt;
git clone https://github.com/m-reynaldo35/pq-verifiable-archive.git
&lt;span class="nb"&gt;cd &lt;/span&gt;pq-verifiable-archive
npm &lt;span class="nb"&gt;install
cp&lt;/span&gt; .env.example .env   &lt;span class="c"&gt;# fill in ALGORAND_MNEMONIC and ML-DSA keys&lt;/span&gt;
npm run register-key   &lt;span class="c"&gt;# registers your ML-DSA-65 public key on-chain&lt;/span&gt;
npm start              &lt;span class="c"&gt;# REST API on :3000&lt;/span&gt;
npm run mcp            &lt;span class="c"&gt;# MCP stdio server for AI agents&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Hosted API — no setup, $0.01/anchor&lt;/span&gt;
&lt;span class="c"&gt;# (use any x402-compatible client or the test script in scripts/)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The repository is at &lt;a href="https://github.com/m-reynaldo35/pq-verifiable-archive" rel="noopener noreferrer"&gt;github.com/m-reynaldo35/pq-verifiable-archive&lt;/a&gt;. Issues, PRs, and forks welcome.&lt;/p&gt;

&lt;p&gt;The window between "NIST finalised the standard" and "everyone has implemented it" is where this matters most. Documents being signed right now are the ones that need protecting.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>algorand</category>
      <category>security</category>
      <category>mcp</category>
    </item>
  </channel>
</rss>
