Add README with NIP implementation status table
This commit is contained in:
@@ -0,0 +1,166 @@
|
||||
# NOSTR Core Library — Rust
|
||||
|
||||
A Rust implementation of the NOSTR protocol library, ported from the C `nostr_core_lib` project.
|
||||
|
||||
[](#)
|
||||
[](#)
|
||||
[](#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
|
||||
Reference in New Issue
Block a user