| Layer | Verifier | When |
|---|
| Wallet | ownership-basic | Baseline uniqueness |
| Social | ownership-social | Linked account |
| Human | proof-of-human | Anti-bot |
gateCheck examples
const basic = await client.gateCheck({
address: walletAddress,
verifierIds: ['ownership-basic'],
since: Date.now() - 24 * 60 * 60 * 1000,
});
const layered = await client.gateCheck({
address: walletAddress,
verifierIds: ['ownership-basic', 'proof-of-human'],
since: Date.now() - 60 * 60 * 1000,
});
Hosted social
<VerifyGate
requiredVerifiers={['ownership-social']}
onVerified={(result) => {
// persist proof id for replay protection
}}
>
<button>Verify to continue</button>
</VerifyGate>
Use since on point-in-time checks. Store proof ids where replay matters.