nft-ownership. Ownership is point-in-time - enforce since / fresh proofs for high-stakes gates.
Widget
import { VerifyGate } from '@neus/sdk/widgets';
export function NFTGatedContent() {
return (
<VerifyGate
requiredVerifiers={['nft-ownership']}
verifierData={{
'nft-ownership': {
contractAddress: '0x...',
tokenId: '1',
chainId: 8453,
},
}}
appId="my-nft-gate"
>
<div>Exclusive content</div>
</VerifyGate>
);
}
Server: gateCheck
const result = await client.gateCheck({
address: '0x...',
verifierIds: ['nft-ownership'],
contractAddress: '0x...',
tokenId: '1',
chainId: 8453,
since: Date.now() - 60 * 60 * 1000,
});
if (!result.data?.eligible) {
throw new Error('Access denied');
}
Multiple token configs
<VerifyGate
requiredVerifiers={['nft-ownership']}
verifierData={{
'nft-ownership': [
{ contractAddress: '0x...', tokenId: '1', chainId: 8453 },
{ contractAddress: '0x...', tokenId: '2', chainId: 8453 },
],
}}
>
<div>Holders of any listed NFT</div>
</VerifyGate>