Skip to main content
Default strategy: reuse-or-create.

Privacy

client.verify() defaults to private. VerifyGate create also defaults to private. Full matrix: Security and trust
OptionWhen
privacyLevel: 'private'Default; owner or authorized access for private reads
privacyLevel: 'public'Public reuse without owner auth; pair with publicDisplay
publicDisplay: falseUnlisted - still public to anyone with id
publicDisplay: trueListed / discoverable (needs public)
storeOriginalContent is an advanced storage control. Public-unlisted example:
options: {
  privacyLevel: 'public',
  publicDisplay: false,
}

Reuse-first

<VerifyGate
  requiredVerifiers={['ownership-basic']}
  strategy="reuse-or-create"
>
  <Protected />
</VerifyGate>

Fresh

High-stakes actions - force new proof:
<VerifyGate strategy="fresh" requiredVerifiers={['ownership-basic']}>
  <Protected />
</VerifyGate>

Read-only gate

<VerifyGate strategy="reuse" requiredVerifiers={['ownership-basic']}>
  <Protected />
</VerifyGate>

Hosted interactive

Hand off to /verify when the verifier needs it:
<VerifyGate
  requiredVerifiers={['ownership-social']}
  hostedCheckoutUrl="https://neus.network/verify"
/>
Hosted Verify

Server check

Prefer gateCheck over pulling full proofs for every decision:
const result = await client.gateCheck({
  address: '0x...',
  verifierIds: ['token-holding'],
  contractAddress: '0x...',
  minBalance: '1',
  chainId: 8453,
});

Next

VerifyGate

Props.

Integration

Loop.