Skip to main content
Verifier: 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>