Add README with NIP implementation status table

This commit is contained in:
Laan Tungir
2026-08-13 12:50:04 -04:00
parent 9349718762
commit 7105bca16b
+166
View File
@@ -0,0 +1,166 @@
# NOSTR Core Library — Rust
A Rust implementation of the NOSTR protocol library, ported from the C `nostr_core_lib` project.
[![Version](https://img.shields.io/badge/version-0.1.0-blue.svg)](#)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](#)
[![Build Status](https://img.shields.io/badge/build-passing-brightgreen.svg)](#building)
## 📋 NIP Implementation Status
### Core Protocol NIPs
- [x] [NIP-01](nips/01.md) — Basic protocol flow — event creation, signing, and validation
- [ ] NIP-02 — Contact List and Petnames
- [x] [NIP-03](nips/03.md) — OpenTimestamps Attestations for Events
- [x] [NIP-04](nips/04.md) — Encrypted Direct Messages (legacy)
- [x] [NIP-05](nips/05.md) — Mapping Nostr keys to DNS-based internet identifiers
- [x] [NIP-06](nips/06.md) — 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
- [x] [NIP-11](nips/11.md) — Relay Information Document
- [ ] NIP-12 — Generic Tag Queries
- [x] [NIP-13](nips/13.md) — Proof of Work
- [ ] NIP-14 — Subject tag in text events
- [ ] NIP-15 — Nostr Marketplace
- [ ] NIP-16 — Event Treatment
- [x] [NIP-17](nips/17.md) — Private Direct Messages
- [ ] NIP-18 — Reposts
- [x] [NIP-19](nips/19.md) — bech32-encoded entities
- [ ] NIP-20 — Command Results
- [x] [NIP-21](nips/21.md) — `nostr:` 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
- [x] [NIP-34](nips/34.md) — `git` 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
- [x] [NIP-42](nips/42.md) — Authentication of clients to relays
- [x] [NIP-44](nips/44.md) — Versioned Encryption
- [ ] NIP-45 — Counting results
- [x] [NIP-46](nips/46.md) — 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
- [x] [NIP-59](nips/59.md) — Gift Wrap
- [x] [NIP-60](nips/60.md) — Cashu Wallet
- [x] [NIP-61](nips/61.md) — 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
```bash
# Build all crates
cargo build
# Build release binaries
cargo build --release
# Run all tests (143 total)
cargo test --workspace
```
## Usage
### Generate a keypair
```bash
cargo run -p keypair-generator
```
### Sign a text note
```bash
cargo run -p event-signer -- nsec1... "Hello, Nostr!"
```
### Use as a library dependency
Add to your `Cargo.toml`:
```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