npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

signet-protocol

v1.2.1

Published

Decentralised identity verification protocol for Nostr

Readme

Signet

Decentralised identity verification for Nostr.

Signet is an open protocol that enables users to prove claims about their identity — age, parenthood, professional status — using zero-knowledge proofs, without revealing personal data or relying on a central authority.

What It Does

  • 4 verification tiers: self-declared → web-of-trust → professional adult → professional adult+child
  • Signet IQ (0-200, where 100 = government standard): weighted by professional verification > in-person vouches > online vouches > account age
  • Verifier anti-corruption: 6 layers of accountability for professional verifiers
  • ZKP age proofs: prove "child aged 8-12" without revealing exact date of birth
  • Blue checkmarks for Nostr: decentralised, cryptographic social proof for everyone
  • Community policies: any relay, client, or community sets their own minimum verification requirements

Why

Nostr has no identity layer. Anyone can claim to be anyone. This matters for child safety (a predator can create a fake child account), for trust (no way to prove "I met this person"), and for regulation (age verification laws are coming worldwide).

Signet solves this without centralised data collection. A professional verifies your identity in person. A ZKP credential attests to the result. No personal data is stored. No database to breach.

Quick Start

npm install signet-protocol

Display a verification badge for any Nostr user (Level 1 — a weekend to integrate):

import { computeBadge, buildBadgeFilters, meetsMinimumTier } from 'signet-protocol';

const filters = buildBadgeFilters(['<hex-pubkey>']);
const events = await fetchFromRelay(filters);
const badge = computeBadge('<hex-pubkey>', events, { verifySignatures: true });

// badge.tier => 3, badge.score => 106, badge.displayLabel => "Verified (Tier 3)"
if (meetsMinimumTier(badge, 2)) {
  // allow posting in verified-only community
}

See Signet in 5 Minutes for a full developer overview, or the full flow example for all 4 tiers, trust scoring, policies, and verifier lifecycle.

Protocol

The full specification is at spec/protocol.md.

Event Kinds

All identity attestations use a single NIP-VA kind (31000), differentiated by type tag:

| Kind | Type Tag | Name | Purpose | |------|----------|------|---------| | 31000 | credential | Verification Credential | Attests to a subject's verification tier | | 31000 | vouch | Vouch Attestation | Peer vouch for another user | | 30078 | — | Community Verification Policy | Minimum verification requirements (NIP-78) | | 31000 | verifier | Verifier Credential | Professional declares verifier status | | 31000 | challenge | Verifier Challenge | Challenge a verifier's legitimacy | | 31000 | revocation | Verifier Revocation | Community confirms challenge, revokes verifier | | 31000 | identity-bridge | Identity Bridge | Link two keypairs via ring signature | | 31000 | delegation | Delegation | Guardian or agent delegation with scoped permission | | 30482 | — | Election | Voting extension: define an election | | 30483 | — | Ballot | Voting extension: cast an anonymous ballot | | 30484 | — | Election Result | Voting extension: publish tallied result |

Crypto Stack

Layer 1: Schnorr (secp256k1) — zero new dependencies
         Credential signing, Merkle selective disclosure,
         ring signatures for issuer privacy, MuSig2

Layer 2: Bulletproofs (secp256k1) — age range proofs
         ~700 byte proofs, no trusted setup

Layer 3: General-purpose ZK (future, if needed)
         Complex threshold proofs, recursive composition

Status

v1.0.0 — spec complete, TypeScript library implemented, reference apps functional. Seeking community feedback.

All identity attestations use kind 31000 (NIP-VA, Verifiable Attestations), differentiated by type tag.

Implementation

This repo includes:

  • src/ — TypeScript protocol library (signet-protocol on npm)

Signet is a standalone protocol. Any Nostr client can implement it independently.

Regulatory Compatibility

Signet is designed to satisfy identity verification requirements across jurisdictions:

| Regulation | Position | |------------|----------| | UK Online Safety Act | Tier 4 exceeds Ofcom's "highly effective age assurance" standard | | US COPPA | No PII collected — exceeds FTC's March 2026 flexibility policy | | EU eIDAS 2.0 | Compatible with selective disclosure direction | | ISO/IEC 27566-1:2025 | Compatible with outcomes-based age assurance framework | | Australia under-16 ban | Proves age range without central verification |

Contributing

Feedback, NIP discussion, and contributions are welcome. Open an issue or submit a PR.

Part of the ForgeSworn Toolkit

ForgeSworn builds open-source cryptographic identity, payments, and coordination tools for Nostr.

| Library | What it does | |---------|-------------| | nsec-tree | Deterministic sub-identity derivation | | ring-sig | SAG/LSAG ring signatures on secp256k1 | | range-proof | Pedersen commitment range proofs | | canary-kit | Coercion-resistant spoken verification | | spoken-token | Human-speakable verification tokens | | toll-booth | L402 payment middleware | | geohash-kit | Geohash toolkit with polygon coverage | | nostr-attestations | NIP-VA verifiable attestations | | dominion | Epoch-based encrypted access control | | nostr-veil | Privacy-preserving Web of Trust |

Licence

MIT