Path 1: Wallet-only (JavaScript)

ProofPack Path 1 — wallet-only verification in JavaScript

Question: "Is this wallet acting for a verified human?"

Use this when you only need a yes/no (e.g. MCP servers, connection handshakes, rate limiting). No JWS or JWT required.

The ProofPack library uses IsDelegateAttestationVerifier and a config object (delegationSchemaUid, acceptedRoots, preferredSubjectSchemas, schemaPayloadValidators, maxDepth). For the full config shape and schema UIDs, see the ProofPack repoarrow-up-rightJavaScript Ethereum: GraphQL lookup and verifyByWalletarrow-up-right.

import { IsDelegateAttestationVerifier } from '@zipwire/proofpack-ethereum';
import { PrivateDataPayloadValidator } from '@zipwire/proofpack-ethereum';

// Full config (delegationSchemaUid, acceptedRoots, preferredSubjectSchemas, schemaPayloadValidators) — see ProofPack repo
const config = {
  delegationSchemaUid: '0x...',   // IsDelegate schema UID
  acceptedRoots: [{ schemaUid: '0x...', attesters: ['0xZipwireAttester...'] }],
  preferredSubjectSchemas: [{ schemaUid: '0x...', attesters: ['0xZipwire...'] }],
  schemaPayloadValidators: new Map([['0x...', new PrivateDataPayloadValidator()]]),
  maxDepth: 32
};

const verifier = new IsDelegateAttestationVerifier({ chains: ['base-sepolia', 'base'] }, config);
const result = await verifier.verifyByWallet('0xAgentWallet...');

if (result.isValid) {
  console.log('Agent is human-authorized');
} else {
  console.log('Agent is not in a valid delegation chain:', result.message);
}

verifyByWallet returns an AttestationResult (with isValid, message, reasonCode), not a plain boolean. For the REST API alternative, see ProofPack & Agent Delegation and IsDelegate REST API.

Last updated