Veilyn Documentation

Veilyn is ZK attestation middleware. It provides reusable proof templates, configurable disclosure policies, and integration-ready verifier packages for privacy-sensitive compliance and onboarding workflows.

Quickstart

Get a proof configuration running in three steps:

1

Select a template

Browse the template registry and choose a parameterized attestation blueprint that matches your use case.

GET /api/v1/templates
GET /api/v1/templates/:id
2

Configure disclosure policy

Define which fields are visible, to whom, under what conditions, and for how long.

POST /api/v1/policies
{
  "template_id": "kyc-basic-v2",
  "fields": {
    "full_name": { "visible": false },
    "age_over_18": { "visible": true },
    "nationality": { "visible": true, "tier": "trusted" }
  },
  "expiry": "30d",
  "trust_tier": "standard"
}
3

Export verifier package

Generate a verification-ready bundle with metadata, constraints, and integration guidance.

POST /api/v1/verifier-packages
{
  "policy_id": "pol_abc123",
  "format": "standard",
  "include_docs": true
}

Core Concepts

Selective Disclosure

The ability to prove that a claim is true without disclosing the full underlying dataset. Veilyn productizes this capability into a reusable delivery chain.

Proof Packaging

The conversion of proof from a technical primitive into a product delivery format. Templates, policies, and verification outputs become procurable, auditable assets.

Delivery Chain

The sequence of Template → Policy → Verifier that mirrors how organizations make decisions: what must be proven, how much can be disclosed, how verification happens.

Middleware

Veilyn sits between proof generation and proof consumption. It does not generate ZK proofs itself — it packages, governs, and delivers them.

Proof Templates

The template registry manages parameterized attestation patterns. Templates are addressable, versioned, and governable assets — not static files.

Template Structure

{
  "id": "kyc-basic-v2",
  "version": "2.1.0",
  "name": "KYC Basic Attestation",
  "description": "Age and nationality verification without PII exposure",
  "fields": [
    { "name": "full_name", "type": "string", "disclosable": true },
    { "name": "date_of_birth", "type": "date", "disclosable": false },
    { "name": "age_over_18", "type": "boolean", "disclosable": true },
    { "name": "nationality", "type": "string", "disclosable": true },
    { "name": "document_hash", "type": "hash", "disclosable": false }
  ],
  "default_policy": {
    "visible": ["age_over_18"],
    "conditional": ["nationality"],
    "hidden": ["full_name", "date_of_birth", "document_hash"]
  },
  "tags": ["identity", "compliance", "onboarding"],
  "status": "certified"
}

Parameters & Versioning

Each template supports parameterized fields that can be configured at deployment time. Versioning follows semantic versioning (major.minor.patch).

FieldTypeDescription
idstringUnique template identifier
versionsemverTemplate version following semantic versioning
fieldsarrayAttestation fields with type and disclosure defaults
default_policyobjectDefault visibility configuration for each field
statusenumdraft | active | certified | deprecated

Template Governance

Templates entering the default library undergo a governance process. Admission affects integration cost, disclosure boundaries, and buyer trust.

Module Standards

Structural and quality thresholds required for templates, policies, and verifier packages to enter the trusted set.

Access Tiers

What remains openly available vs. what requires tighter admission and oversight. Premium templates may require VLY staking.

Auditability

All template revisions, policy adjustments, and verifier prioritization decisions are traceable and reviewable.

Disclosure Policies

The policy engine transforms disclosure rules into executable system logic. Policies are independent, auditable objects — not scattered business logic.

{
  "id": "pol_abc123",
  "template_id": "kyc-basic-v2",
  "rules": [
    {
      "field": "age_over_18",
      "visibility": "always",
      "verifier_tiers": ["standard", "trusted"]
    },
    {
      "field": "nationality",
      "visibility": "conditional",
      "condition": "verifier_tier == 'trusted'",
      "expiry": "30d"
    },
    {
      "field": "full_name",
      "visibility": "never"
    }
  ],
  "created_at": "2026-04-01T00:00:00Z",
  "version": 1
}

Field Visibility Rules

Each field in a policy can have one of three visibility modes:

ModeBehavior
alwaysField is included in every proof output regardless of verifier tier
conditionalField is included only when specified conditions are met (tier, time, context)
neverField is excluded from all proof outputs — used for sensitive PII

Expiry & Trust Tiers

Policies support time-based expiry and verifier trust tiers to control proof validity windows and access levels.

TierAccess LevelTypical Use
standardDefault fields onlyPublic verification, basic compliance
trustedDefault + conditional fieldsPartner integrations, regulated environments
privilegedFull field access (except never)Audit, legal, regulatory review

Verifier Package Structure

A verifier package contains everything the receiving party needs to verify a proof — metadata, constraints, integration guidance — in one deliverable output.

{
  "package_id": "vpkg_xyz789",
  "policy_id": "pol_abc123",
  "template": {
    "id": "kyc-basic-v2",
    "version": "2.1.0"
  },
  "proof_output": {
    "fields_included": ["age_over_18", "nationality"],
    "fields_excluded": ["full_name", "date_of_birth", "document_hash"],
    "proof_hash": "0xabc...def",
    "generated_at": "2026-04-10T12:00:00Z",
    "expires_at": "2026-05-10T12:00:00Z"
  },
  "verification": {
    "method": "zk-snark",
    "circuit_id": "veilyn-kyc-v2",
    "public_inputs": ["age_over_18", "nationality"],
    "verification_key": "vk_...",
    "instructions": "https://veilyn.xyz/docs/verify/kyc-basic"
  },
  "metadata": {
    "issuer": "veilyn-operator-001",
    "trust_tier": "trusted",
    "format_version": "1.0"
  }
}

Integration Guide

Integrating a Veilyn verifier package into your system follows a standard flow:

1

Receive the package

The verifier package is delivered as a JSON payload via API or file transfer. Validate the format_version field.

2

Verify the proof

Use the verification_key and public_inputs to verify the ZK proof against the specified circuit.

const result = await verify({
  proof: package.proof_output.proof_hash,
  publicInputs: package.verification.public_inputs,
  vk: package.verification.verification_key
});
3

Check constraints

Validate expiry, trust tier, and field inclusion against your requirements before accepting the attestation.

VLY Token Utility

VLY aligns access, incentives, and governance inside one operational system. Total supply: 800 billion tokens.

Premium Access

Access to certified proof templates and advanced verifier packaging capabilities requires VLY.

Staking

Template certification and verifier hosting require VLY staking as a quality assurance mechanism.

Governance

Participation in disclosure policy standards and template admission rules is coordinated through VLY.

AllocationShareAmount
Privacy ecosystem30%240B VLY
Foundation reserve19%152B VLY
Template growth16%128B VLY
Contributors15%120B VLY
Verifier partners12%96B VLY
Liquidity operations8%64B VLY