7105bca16b0c970f97f45954ebcf7b066efd3b7d
NOSTR Core Library — Rust
A Rust implementation of the NOSTR protocol library, ported from the C nostr_core_lib project.
📋 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.nostrcapability for web browsers - NIP-08 — Handling Mentions
- NIP-09 — Event Deletion
- NIP-10 — Conventions for clients' use of
eandptags 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-21 —
nostr:URI scheme - NIP-22 — Event
created_atLimits - 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-34 —
gitstuff - 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
Languages
Rust
97.1%
Shell
2.9%