Get Started

Platform Users → Use the NEUS Hub

  • Connect your wallet → Join the Genesis campaign at neus.network/genesis

  • Share NEUS proofs to drive impact and gain recognition during the campaign

  • Participate in community discussions and stay tuned for additional features

Explore the Hub


Developer Guide

Create your first NEUS proof in 5 minutes.

Install

npm install @neus/sdk

Create Your First Proof

import { NeusClient } from '@neus/sdk';

const client = new NeusClient();

// Prove content ownership
const proof = await client.verify({
  verifier: 'ownership-basic',
  content: 'My original content'
});

console.log('Proof created:', proof.qHash);

Configure options (optional)

Add options when you need public visibility, IPFS anchoring, or cross-chain propagation:

// Full options example: privacy + IPFS + cross-chain
const proof = await client.verify({
  verifier: 'ownership-basic',
  content: 'My original content',
  options: {
    // Privacy
    privacyLevel: 'private',        // 'private' or 'public'
    publicDisplay: false,           // Public UI previews (requires privacyLevel='public')
    storeOriginalContent: false,    // Include full plaintext in public snapshot (public only)

    // Distribution
    enableIpfs: true,               // Create privacy-aware IPFS snapshot
    targetChains: [11155111, 80002],// Propagate to Ethereum Sepolia + Polygon Amoy

    // Optional public metadata (used when privacyLevel='public')
    meta: {
      publicTitle: 'Ownership proof',
      contentType: 'text/plain',
      displayName: 'NEUS user'
    }
  }
});

Check Proof Status

const status = await client.getStatus(proof.qHash);
console.log('Verified:', status.success);

What You Can Verify

Content Ownership

const proof = await client.verify({
  verifier: 'ownership-basic',
  content: 'My article content'
});

NFT Ownership

const proof = await client.verify({
  verifier: 'nft-ownership',
  data: {
    ownerAddress: walletAddress,
    contractAddress: '0x...',
    tokenId: '1234',
    chainId: 1
  }
});

Token Holdings

const proof = await client.verify({
  verifier: 'token-holding',
  data: {
    ownerAddress: walletAddress,
    contractAddress: '0x...',
    minBalance: '100.0',
    chainId: 1
  }
});

Licensed Content

const proof = await client.verify({
  verifier: 'ownership-licensed',
  data: {
    content: 'Licensed content',
    owner: walletAddress,
    license: {
      contractAddress: '0x...',
      tokenId: '1',
      chainId: 1,
      ownerAddress: walletAddress
    }
  }
});

React Components

npm install @neus/widgets
import { VerifyGate } from '@neus/widgets';

<VerifyGate requiredVerifiers={['nft-ownership']}>
  <PremiumContent />
</VerifyGate>

Any Programming Language

Works everywhere via HTTP:

# Single API call - sign standard format and submit
curl -X POST https://api.neus.network/api/v1/verification \
  -H "Content-Type: application/json" \
  -d '{
    "walletAddress": "0x742d35Cc6634C0532925a3b8D82AB78c0D73C3Db",
    "signature": "0x...",
    "verifierIds": ["ownership-basic"],
    "data": {"content": "Hello NEUS", "owner": "0x742d35Cc6634C0532925a3b8D82AB78c0D73C3Db"},
    "options": {
      "privacyLevel": "private",
      "publicDisplay": false,
      "storeOriginalContent": false,
      "enableIpfs": true,
      "targetChains": [11155111, 80002]
    },
    "signedTimestamp": 1678886400000,
    "chainId": 84532
  }'

Message format to sign:

NEUS Verification Request
Wallet: 0x742d35cc6634c0532925a3b8d82ab78c0d73c3db
Chain: 84532
Verifiers: ownership-basic
Data: {"content":"Hello NEUS","owner":"0x742d35Cc6634C0532925a3b8D82AB78c0D73C3Db"}
Timestamp: 1678886400000

Privacy Controls

Choose who can see your verifications:

// Public - anyone can verify
const publicProof = await client.verify({
  verifier: 'ownership-basic',
  content: 'Public content',
  options: { privacyLevel: 'public' }
});

// Private - only you can access details  
const privateProof = await client.verify({
  verifier: 'ownership-basic',
  content: 'Private content',
  options: { privacyLevel: 'private' }
});

Error Handling

try {
  const proof = await client.verify({
    verifier: 'ownership-basic',
    content: 'My content'
  });
} catch (error) {
  if (error.code === 4001) {
    console.log('User cancelled wallet signature');
  } else {
    console.error('Verification failed:', error.message);
  }
}

What's Next?

Want to Learn More?

Last updated

Was this helpful?