Nostrの仕組み
分散型SNS
普通のSNSを利用するときは、誰かが管理するサーバとだけ通信するようになっています。
https://scrapbox.io/files/658e63cfa0b7680023ad48ec.png
この仕組みだとサーバが不調な場合や運営が特定の投稿を禁止したり、ユーザをBANしたりした場合に使えなくなってしまいます。
nostrでは複数のサーバと通信するようになっています。このサーバのことをリレーと呼びます。 https://scrapbox.io/files/658e63efff975400230325f3.png
複数のリレーと通信することによって、あるリレーが不調だったり、投稿内容が検閲されていたりしたとしても他のリレーが動作していれば使い続けることができます。使い続けられるリレーがなかったとしても、使用されているリレーのほとんどがオープンソースソフトウェア・フリーソフトウェアであり、誰でも無料でインストールして自分のリレーを構築することができます。
自分の投稿は、基本的に自分の投稿したリレーにだけ保存されています(※)。
https://scrapbox.io/files/658e65523328090024c1049c.png
同じリレーを使っている人同士であれば投稿を見ることができますが、他のリレーを使っている人の投稿は見ることができません。
多くの人が投稿している人気のあるリレーを使うか、見てもらいたい人に自分の使っているリレーを伝える必要があります。
(※ リレー間が連携していて、他のリレーにも保存されていることがあります)
リレーをどうやって設定したら良いか、どうやって選ぶと良いかはリレーの設定方法で説明しています。 参考
公開鍵と秘密鍵
nostrのユーザアカウントに相当するのが、公開鍵と秘密鍵です。 https://scrapbox.io/files/658e745d374e9f00238533ac.png
秘密鍵:投稿するときに使われます。普通はnsec1...の形で記されます。
公開鍵:誰かの投稿を見たいとき、フォローしたいときに使われます。普通はnpub1...の形で記されます。
公開鍵を他の人に伝えることで自分の投稿を見てもらえます。
他の人に公開鍵を教えてもらうことでその人の投稿を見ることができます。
秘密鍵は自分だけが知っているべきで、誰にも教えてはいけません。
自分の投稿だと証明するための署名を行うために使われます。 もう少し技術的な説明をすると、
この公開鍵と秘密鍵という言葉は電子署名の用語で、nostrは電子署名に基づいて設計されています。 投稿するとき、投稿の内容に基づいて秘密鍵を持っている人しか作ることのできないデータを作って一緒に送信します。
このデータのことを署名と呼び、投稿を受信した人は計算を行うことで署名が正しいかどうかを検証できます。 https://scrapbox.io/files/658e84ce384b650025690f9e.png
署名が正しければ、それが本人が投稿したものに違いないと分かります。
署名が間違っていれば、署名は偽造がほとんど不可能なので明らかに本人が投稿したものでないと分かります。
そのため、使い始めるときには秘密鍵だけを用意すれば良いのです(公開鍵は秘密鍵から計算して導き出すことができます)。
秘密鍵を持っていて署名できるということ自体が本人であることの証明になります。
リレーに投稿するときにメールアドレスを使って本人であることを確認したり、IDとパスワードで認証したりする必要がないのはこのためです。
秘密鍵は大切に保管する必要があります。無くしてしまうとその秘密鍵で投稿することはできなくなってしまいます。漏えいしてしまうと公開鍵の信頼性はなくなってしまいます。このような場合は秘密鍵を新しく作り直すしかないでしょう。
秘密鍵を安全に保管する方法は秘密鍵の管理で説明しています。ぜひ参考にしてください。 参考
技術者向けの資料
技術者向けにnostrの仕組みを説明した資料がいくつか存在します: