Developers · Solana integration

Verify eligibility, then bind a Solana partner action

A Solana partner starts an Abraxas policy request, verifies the signed receipt on the server, and receives only allow or deny. This is not a token, wallet, or trading product.

Architecture

holder -> Abraxas hosted /partner/verify
Abraxas -> signed eligibility receipt
partner server -> GET /api/receipts/{id}/public
partner server -> AbraxasPartnerKit.evaluateFetchedReceipt
Solana adapter -> bind claim_access or continue_checkout
browser <- { allowed, reason, action }

Receipt verification is AbraxasPartnerKit plus GET /api/receipts/{id}/public. This adapter does not implement a second verifier.

The Solana Partner Adapter never creates a transaction, mints a token, or moves funds. It binds an allow or deny result to a partner action only. It remains an eligibility gate and does not consume the portable action-contract nonce store.

Privacy contract

  • Google sign in creates an Abraxas account. It does not prove age, identity, residency, or eligibility.
  • Partners receive only the requested policy result: allow or deny plus a safe reason code.
  • Identity or liveness is never the default path. A partner policy may request it only when that policy truly requires it.
  • Browser responses must not include identity data, raw claims, receipts, signatures, wallet addresses, or user profiles.

Server side verification

import { AbraxasSolanaPartnerAdapter } from "@/lib/partner/solana";

const adapter = new AbraxasSolanaPartnerAdapter({
  partnerId: process.env.ABRAXAS_PARTNER_ID!,
  policyId: process.env.ABRAXAS_POLICY_ID!,
  policyVersion: 1,
  requirePolicyVersion: true,
  environment: "sandbox",
});

export function startGate(returnUrl: string) {
  return adapter.startPolicyVerification(returnUrl);
}

export async function claimAccess(receiptId: string) {
  const verified = await adapter.verifySignedReceipt(receiptId);
  // Client JSON is allow/deny + reason only. Do not log the receipt.
  return adapter.bindPartnerAction(verified, "claim_access");
}

Kit docs: Partner Integration Kit · Reference: Solana claim access example