Anchor Integration

StellarProof is designed to be simple to add, a small integration, not a rebuild. No compliance changes. No risk during migration. Users who already have a credential will skip straight through; everyone else will follow the anchor's current flow untouched, and it can runs alongside an anchor's existing KYC stack from day one.

What the integration will look like

import { StellarProof } from "@stellarproof/sdk";

const sp = new StellarProof({
  rpcUrl: "<soroban RPC url>",
  networkPassphrase: Networks.PUBLIC,
  verifierContractId: "<deployed contract id>",
  anchorId: 2,
  verificationKey,        // enables an instant, free local pre-check
});

const request = sp.requestProof({ minAgeYears: 18, allowedCountry: 76 });
// … the user's wallet returns { proof, publicSignals, issuerId } …
const result = await sp.verify(response, { signer, request });
if (result.ok) grantAccess(result.record);

The SDK is designed around two-stage verification: a local snarkjs check will run in single digit milliseconds and cost nothing, rejecting malformed proofs before the anchor spends a transaction. The on chain call will be the authoritative step, because it will be the only thing able to detect a credential being reused to open a second account.

What an anchor gets

Every verification will write an on chain compliance record: which registered issuer, which policy, which proof hash, at what time. Append only, timestamped, publicly auditable, and containing no personal data at all. An anchor's compliance team will get permanent evidence that verification occurred without the anchor ever holding a single raw document.

Verification is meant to belong on the anchor's server. The SDK will run in a browser, but a browser can simply choose not to call it. Final AML/KYC decisions will remain with the anchor's compliance team.

StellarProof will supply the evidence and infrastructure, not the decision.