six-verifier
v1.0.0
Published
Verify SIX sovereign inference receipts and Merkle attestations
Downloads
105
Maintainers
Readme
six-verifier
Proof, not promises.
Independently verify that an AI inference result was produced under the SIX integrity model — receipts, Merkle attestations, and XRPL anchors — without trusting the provider.
What it verifies
| Check | What it proves | |-------|---------------| | Receipt structure | All required fields present, correct formats | | Receipt signature | Schnorr signature binds to receipt content | | Merkle proof | Leaf hash walks to published root via sibling chain | | XRPL anchor | Transaction hash verifiable on XRPL ledger | | Cross-checks | Receipt + attestation pairing consistent |
Install
npm install six-verifierOr use directly:
git clone https://github.com/six-sov/six-verifier
cd six-verifierQuick start
CLI
# Verify from separate receipt + attestation files
node six-verifier.js --receipt receipt.json --attestation attestation.json
# Verify from full SIX API response
node six-verifier.js --response api_response.json
# JSON output (for scripting)
node six-verifier.js --response api_response.json --json
# Mainnet (default is testnet)
node six-verifier.js --response api_response.json --network mainnetNode.js
const { verifyAll, formatResults } = require('six-verifier');
const receipt = {
receipt_id: "rcpt_8556b04f981a4a12",
issuer: "SIX",
routed_via: "sovereign",
provider: "dragon_local",
identity_stripped: false,
timestamp: "2026-02-05T15:27:40.688021+00:00",
signature: "0x22e906c12eadbaa55a14...",
xrpl_tx: "F0ECFDFD..."
};
const attestation = {
root: "0xee980cc9...",
leaf_hash: "0x122256f1...",
proof: [
{ sibling: "122256f1...", position: "right" },
{ sibling: "8b8247d8...", position: "right" },
{ sibling: "d2f677ba...", position: "left" },
{ sibling: "4f33298c...", position: "left" }
],
index: 12,
batch_id: "batch_2026-02-04_052217",
sig: "0x3ca3f540..."
};
const result = await verifyAll(receipt, attestation);
console.log(formatResults(result));
// VERDICT: ✅ PASSBrowser
<script src="six-verifier.js"></script>
<script>
const result = await SixVerifier.verifyAll(receipt, attestation);
console.log(result.verdict); // "PASS" or "FAIL"
</script>CLI output example
═══════════════════════════════════════════════
SIX VERIFIER — Sovereign Inference Exchange
═══════════════════════════════════════════════
✅ PASS Receipt structure
✅ PASS Receipt signature
✅ PASS Merkle attestation proof
✅ PASS XRPL anchor (https://testnet.xrpl.org/transactions/F0ECFDFD...)
───────────────────────────────────────────────
VERDICT: ✅ PASS
═══════════════════════════════════════════════
six-sov.com — Proof, not promises.
═══════════════════════════════════════════════What this proves (and what it doesn't)
✅ Proves
- Receipt was issued by a legitimate SIX issuer
- Attestation proof is consistent with published Merkle root
- XRPL anchor is structurally valid and verifiable on-chain
- Integrity flags (routing tier, identity stripping) weren't altered
❌ Does NOT prove
- Model correctness (philosophical)
- Full ZK computation proof (future roadmap)
- Private generation logic (by design)
API
verifyAll(receipt, attestation, options?)
Full verification. Returns { verdict, receipt, attestation, xrpl, summary, errors }.
verifyReceiptStructure(receipt)
Check required fields and formats. Returns { valid, checks, errors }.
verifyReceiptSignature(receipt)
Verify signature structure and generate receipt hash. Returns { valid, receipt_hash }.
verifyMerkleProof(attestation)
Walk Merkle proof from leaf to root. Returns { valid, computed_root, expected_root, root_match }.
verifyXrplAnchor(xrplTx, options?)
Generate explorer URL and validate tx hash format. Returns { valid, explorer_url }.
formatResults(results)
Format verification results as human-readable text.
Test vectors
Real test vectors from a live SIX API response:
npm testRuns 5 tests:
- Clean receipt + attestation → PASS
- Tampered receipt_id → FAIL (correctly detected)
- Wrong Merkle root → FAIL (correctly detected)
- Receipt-only (no attestation) → PASS
- Full API response → PASS
Zero dependencies
No npm dependencies. Uses only:
crypto.subtle(browser) orcrypto(Node.js) for SHA-256fsfor CLI file loading (Node.js only)
License
Verification-only license. See LICENSE for details.
This tool verifies SIX receipts and attestations. It does not include attestation generation, signing key custody, routing logic, or settlement execution.
six-sov.com — Sovereign Inference Exchange
