-
![](https://pubimgs.c-stellar.net/leaf_fall_c.webp)
@ かすてらふぃ🍁
2024-02-11 15:18:32
Nostrプロトコルを利用したアプリケーションの開発に役立つ資料をまとめていく場です。
## プロトコル仕様書
### nostr-protocol/nips
https://github.com/nostr-protocol/nips
Nostrプロトコルの仕様を定めるNIPs(Nostr Implementation Possibilities)を取りまとめるリポジトリ。
また、issue・PRは新規NIPの提案や既存NIPの改善などに関する議論を交わす場となっている。
必須仕様はすべて **NIP-01** にまとまっているので、まずはNIP-01を読みましょう
### nips-ja
https://github.com/nostr-jp/nips-ja
NIPsの日本語訳プロジェクト。
## プロトコルの解説
### Web記事
- [Nostrプロトコル(damus)を触ってみた](https://qiita.com/gpsnmeajp/items/77eee9535fb1a092e286)
- [Nostr の面白さをエンジニア目線で解説してみる](https://zenn.dev/mattn/articles/cf43423178d65c)
- [Nostr Scrapbox](https://scrapbox.io/nostr/)
### 書籍
- [Hello, Nostr! 先住民が教えるNostrの歩き方](https://nip-book.nostr-jp.org/book/1/)
- [learn-nostr-by-crafting](https://github.com/nostr-jp/learn-nostr-by-crafting): 本書内記事「手を動かして学ぶNostrプロトコル」の演習用リポジトリ
- [Hello, Nostr! Yo Bluesky! 分散SNSの最前線](https://nip-book.nostr-jp.org/book/2/)
- [learn-nostr-by-crafting-2](https://github.com/nostr-jp/learn-nostr-by-crafting-2): 本書内記事「演習!作ってみよう「日本語 TL のぞき窓」の演習用リポジトリ
- [Software Design誌 連載「新時代の分散SNS Nostr」(2023年7月号~12月号)](https://gihyo.jp/magazine/SD/backnumber)
- 第1回(7月号)〜第3回(9月号): Nostrプロトコルやアプリケーションの紹介
- 第4回(10月号): Nostrプロトコルの解説
- 第5回(11月号), 第6回(12月号): Nostrアプリケーションの実装解説
### 動画
- [分散型SNSプロトコル nostrの解説](https://www.youtube.com/watch?v=vB905DhX9nQ)
## ライブラリ
### nostr-tools
https://github.com/nbd-wtf/nostr-tools
Nostrアプリケーションの開発で頻出する処理を提供するJS/TSライブラリ。
- 秘密鍵の生成・秘密鍵から公開鍵への変換
- イベントの署名・検証
- リレーとの通信(イベント購読・発行)
- bech32形式識別子(`npub`, `nsec`, `nevent`などから始まる識別子、NIP-19)のencode/decode
- ドメイン認証(NIP-05)の検証
- etc...
### NDK
https://github.com/nostr-dev-kit/ndk
Nostrプロトコルに対する、nostr-toolsよりも高いレイヤの抽象を提供するJS/TSライブラリ
[ドキュメント](https://ndk.fyi/docs/)
### rx-nostr
https://github.com/penpenpng/rx-nostr
イベント購読をはじめとするNostrリレーとのやり取りを、RxのSubscriptionとして扱えるようにするJS/TSライブラリ。
[ドキュメント](https://penpenpng.github.io/rx-nostr/)
### nostr-fetch
https://github.com/jiftechnify/nostr-fetch
Nostrリレーから過去のイベントを取得する機能を提供するJS/TSライブラリ。最新のReplaceable Eventの取得にも便利。
(リレーから過去のイベントを正確に取得しようと思うと、落とし穴が多くて意外と大変。詳細は[こちら](https://speakerdeck.com/jiftechnify/nostrnorirekaralou-renakusubetenoibentowoqu-tutekuruji-shu))
### rust-nostr
https://github.com/rust-nostr/nostr
Rust向けにNostrプロトコル全般の抽象を提供するライブラリ。機能ごとにクレートが分割されている。
- nostr: Nostrプロトコルの低レイヤの実装
- nostr-sdk: nostrクレートをベースとする、より高レイヤの抽象。クライアントの実装向け
- nostr-database: Nostrイベントの永続化処理に関する抽象。
- etc
また、さまざまなプログラミング言語向けのbindingが提供されている
### go-nostr
https://github.com/nbd-wtf/go-nostr
Nostrプロトコル全般の抽象を提供するGoライブラリ。
### eventstore
https://github.com/fiatjaf/eventstore
Nostrイベントの永続化処理に関する抽象を提供するGoライブラリ。
### khatru
https://github.com/fiatjaf/khatru
Go向けのNostrリレー実装用のフレームワーク。