2026-08-13 12:42:40 -04:00
2026-08-13 12:42:40 -04:00
2026-08-13 12:42:40 -04:00
2026-08-13 12:42:40 -04:00
2026-08-13 12:42:40 -04:00
2026-08-13 12:42:40 -04:00
2026-08-13 12:42:40 -04:00
2026-08-13 12:42:40 -04:00
2026-08-13 12:42:40 -04:00
2026-08-13 12:42:40 -04:00
2026-08-13 12:42:40 -04:00

NOSTR Core Library — Rust

A Rust implementation of the NOSTR protocol library, ported from the C nostr_core_lib project.

Version License Build Status

📋 NIP Implementation Status

Core Protocol NIPs

  • NIP-01 — Basic protocol flow — event creation, signing, and validation
  • NIP-02 — Contact List and Petnames
  • NIP-03 — OpenTimestamps Attestations for Events
  • NIP-04 — Encrypted Direct Messages (legacy)
  • NIP-05 — Mapping Nostr keys to DNS-based internet identifiers
  • NIP-06 — Basic key derivation from mnemonic seed phrase
  • NIP-07 — window.nostr capability for web browsers
  • NIP-08 — Handling Mentions
  • NIP-09 — Event Deletion
  • NIP-10 — Conventions for clients' use of e and p tags in text events
  • NIP-11 — Relay Information Document
  • NIP-12 — Generic Tag Queries
  • NIP-13 — Proof of Work
  • NIP-14 — Subject tag in text events
  • NIP-15 — Nostr Marketplace
  • NIP-16 — Event Treatment
  • NIP-17 — Private Direct Messages
  • NIP-18 — Reposts
  • NIP-19 — bech32-encoded entities
  • NIP-20 — Command Results
  • NIP-21nostr: URI scheme
  • NIP-22 — Event created_at Limits
  • NIP-23 — Long-form Content
  • NIP-24 — Extra metadata fields and tags
  • NIP-25 — Reactions
  • NIP-26 — Delegated Event Signing
  • NIP-27 — Text Note References
  • NIP-28 — Public Chat
  • NIP-29 — Relay-based Groups
  • NIP-30 — Custom Emoji
  • NIP-31 — Dealing with Unknown Events
  • NIP-32 — Labeling
  • NIP-33 — Parameterized Replaceable Events
  • NIP-34git stuff
  • NIP-35 — Torrents
  • NIP-36 — Sensitive Content
  • NIP-37 — Draft Events
  • NIP-38 — User Statuses
  • NIP-39 — External Identities in Profiles
  • NIP-40 — Expiration Timestamp
  • NIP-42 — Authentication of clients to relays
  • NIP-44 — Versioned Encryption
  • NIP-45 — Counting results
  • NIP-46 — Nostr Remote Signing
  • NIP-47 — Wallet Connect
  • NIP-48 — Proxy Tags
  • NIP-49 — Private Key Encryption
  • NIP-50 — Search Capability
  • NIP-51 — Lists
  • NIP-52 — Calendar Events
  • NIP-53 — Live Activities
  • NIP-54 — Wiki
  • NIP-55 — Android Signer Application
  • NIP-56 — Reporting
  • NIP-57 — Lightning Zaps
  • NIP-58 — Badges
  • NIP-59 — Gift Wrap
  • NIP-60 — Cashu Wallet
  • NIP-61 — Nutzaps
  • NIP-62 — Log events
  • NIP-64 — Chess (PGN)
  • NIP-65 — Relay List Metadata
  • NIP-66 — Relay Monitor
  • NIP-68 — Web badges
  • NIP-69 — Peer-to-peer Order events
  • NIP-70 — Protected Events
  • NIP-71 — Video Events
  • NIP-72 — Moderated Communities
  • NIP-73 — External Content IDs
  • NIP-75 — Zap Goals
  • NIP-77 — Arbitrary custom app data
  • NIP-78 — Application-specific data
  • NIP-84 — Highlights
  • NIP-86 — Relay Management API
  • NIP-87 — Relay List Recommendations
  • NIP-88 — Stella: A Stellar Relay
  • NIP-89 — Recommended Application Handlers
  • NIP-90 — Data Vending Machines
  • NIP-92 — Media Attachments
  • NIP-94 — File Metadata
  • NIP-96 — HTTP File Storage Integration
  • NIP-98 — HTTP Auth
  • NIP-99 — Classified Listings

Legend: Implemented | Not Implemented

Implementation Summary: 14 of 96+ NIPs fully implemented (14.6%)

Workspace Structure

rust_core_lib/
├── core/              # Core types, errors, crypto, utilities
├── relay/             # WebSocket, HTTP, relay pool
├── nips/              # All NIP implementations
├── signer/            # Signer trait, local + nsigner remote
├── services/          # Request validator, Blossom, Cashu
├── nostr-core/        # Umbrella re-export crate
├── examples/          # Example programs
│   ├── keypair_generator/  # Generate Nostr keypairs
│   └── event_signer/       # Create and sign events
└── tests/             # Integration tests (ported from C)

Building

# Build all crates
cargo build

# Build release binaries
cargo build --release

# Run all tests (143 total)
cargo test --workspace

Usage

Generate a keypair

cargo run -p keypair-generator

Sign a text note

cargo run -p event-signer -- nsec1... "Hello, Nostr!"

Use as a library dependency

Add to your Cargo.toml:

[dependencies]
nostr-core = { git = "ssh://git@laantungir.net:2222/laantungir/rust_core_lib.git" }

Test Summary

Crate Tests Description
nostr-core 38 Types, errors, crypto, utilities
nostr-nips 51 All 14 NIP implementations
nostr-relay 8 WebSocket, HTTP, relay pool
nostr-signer 7 Signer trait, local + nsigner
nostr-services 5 Validator, Blossom, Cashu
integration-tests 34 Ported from C test suite
Total 143

License

MIT

S
Description
No description provided
Readme
627 MiB
Languages
Rust 97.1%
Shell 2.9%