From 7105bca16b0c970f97f45954ebcf7b066efd3b7d Mon Sep 17 00:00:00 2001 From: Laan Tungir Date: Thu, 13 Aug 2026 12:50:04 -0400 Subject: [PATCH] Add README with NIP implementation status table --- README.md | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..e474a11 --- /dev/null +++ b/README.md @@ -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