分散SNSプロトコルNostrとiOSアプリDamus

protocol/Nostr
概要

2023-02-02にNostrという分散SNSのプロトコルに対応しているiOSアプリのDamusが公開されました。これを受けて、Nostrが話題だったので紹介します。

情報源

最近のNostrの話題は、まず「報道: サードパーティー製Twitterアプリ禁止、日本でのTwitter Blue開始、ElonJet関係の凍結・他のSNSの誘導禁止→撤回、ツイート表示回数表示、 #TwitterFiles の5-16弾 | GNU social JP」で一時大きな話題だったTwitter上での他SNSへの誘導禁止にNostrが挙げられたことが最初だったともいます。

その後、「分散型SNS「Damus」がApp Storeに登場──ジャック・ドーシー氏が開発資金を寄付 | coindesk JAPAN | コインデスク・ジャパン」でNostr対応iOSアプリのDamusが公開されて大きく話題になった印象があります。

NostrはTwitterの共同創業者のJack Dorseyが支援しているプロジェクトで、Damusの公開もDorseyが言及したことで認知されたように感じます。

Nostr

まずNostrプロトコル自体がよくわかっていないので、整理します。

Nostr, a simple protocol for decentralizing social media that has a chance of working」が公式サイトで、「nostr-protocol/nostr: a truly censorship-resistant alternative to Twitter that has a chance of working」が仕様書のようです。Wikipediaの記事がないので、情報整理のハードルがやや高いです。

2020-11-08に第一コミットがなされました。Nostrの開発者、運営団体などが不透明ですが、第一コミットのfiatjafが著者なのかもしれません。

まずNostrのネーミングは「nostr – Notes and Other Stuff Transmitted by Relays」が由来のようです。リレーによるノートとその他の送信という意味のようです。その他、Nostrを一言で表すと「Nostr is a simple, open protocol that enables global, decentralized, and censorship-resistant social media. 」とある通り、シンプル、グローバル、分散、検閲耐性のソーシャルメディアのオープンプロトコルのようです。

これらの特徴の中では、検閲耐性が現在の分散SNSで主流のActivityPubと大きく違うところに感じます。

Nostrはプロトコルなので、実際にユーザーが参加するには、対応するクライアントアプリを使います。公式サイトの「Clients – Docs」でいくつか推奨クライアントがありました。

Nostrクライアント
  • Web: Coracle/Short
  • Desktop: Gossip
  • iOS: Damus
  • Android: Nostros/Amethyst/Nozzle

iOSアプリは今までなかったようだったので、Damusがついに登場したことで話題だったのかもしれません。

特徴
特徴

Nostを利用するにあたっては、公開鍵と秘密鍵という文字列が特徴的です。

公開鍵が内部的なユーザー名相当になります。全ユーザーで固有の値であり、そのためかなり長くて覚えにくい文字列です。そして変更不能です。@名は意味的には検索可能な表示名相当なので、こちらは重複可能です。

@名は重複可能ですが、自分が保有するドメインで認証することができます。自分のサーバーに、.well-known/nostr.jsonを配置してクライアントで参照設定すると、認証できるそうです (ツイッターライクなSNS「Nostr」を Damus アプリで使う。初期の設定と、認証バッジを付ける手順 | Lifehacking.jp)。

秘密鍵はメッセージの署名、ログインなどに使われるもので、変更不能なパスワードです。流出禁止。万が一流出したら、他人にのっとられるため、アカウントごと放棄するしかありません。

その他の基本的な特徴は以下です。

  • 投稿はテキストのみ。
  • メディアは外部アップローダーのURLの貼付。
  • お気に入り、再投稿は削除、取消不能。

テキストしか扱えないということで、昔の掲示板やチャットに近い印象です。

仕組
仕組

Nostrの基本的な仕組を整理します。

リレー (Nostrのバックエンドサーバー) と、クライアント (Nostrアプリ) で構成されます。リレーがクライアントによるメッセージ送受信を可能にしていて、それらを保存したりします。

基本的には1クライアントと複数リレーとの通信が前提となっています。リレーに情報が蓄積されていて、同じリレーを利用しているクライアント同士であれば、リレーが情報を保持しているから、他のユーザーとも通信できるという形です。

リレー同士のデータ同期はありえるものの、基本的にリレー同士で何かやり取りがあるわけではありません。ここがActivityPubと大きく違うところです。

あくまで、ユーザー同士のメッセージの授受が中心で、リレーは名前通りデータや通信を中継するだけとなります。そういう意味で、ユーザー単位であれば分散になっています。ユーザー中心で同じ投稿を複数のリレーに同時送信するという点が、検閲耐性の由来と思われます。

ただ、ユーザー同士で同じリレーを最低1個は使わないと他のユーザーと通信できません。そういう意味で、分散ではない気もします。

また、データの保持はリレー次第ですので、リレーが破棄、削除すれば過去の投稿がなくなる可能性はありそうです。

IRC/チャット/掲示板を複数の部屋に同時投稿するような、そういうイメージに近いように感じました。

結論

分散SNSのプロトコルのNostrの紹介でした。

Twitterの騒動の影響を受けて、新しいSNSがクローズアップされる中の一環に感じました。

ActivityPubに比べると、内容がかなりシンプルではあるものの、テキストのみ、同一リレーの使用、リレーのデータ保持など、少々課題があります。以下の投稿も参考になります。

avatar

Nostrの可能性を感じた一週間である一方、現時点で急拡大する可能性はかなり難しいという実感を持っています。?

【NostrのGoodなところ】
・メアド、ケータイ不要ですぐにはじめられる
・アカウント名の重複OK
・垢バンのリスクがない
・システムダウンの影響が低く再生能力が高い

【Nostrのうーんなところ】
・画像アップロードできない
・リレーサーバーに残っているポストしか読み込めない
・ポストの表示などに時間がかかるときがある
・複数のリレーサーバーに接続すると通信量が嵩む
・公開鍵・秘密鍵を変更できない
・秘密鍵が漏えいすると終わる

うーんなところが普及する上でハードルになると思うのです。
とはいえ今後化ける可能性があり、その余地を残した仕様なので今後もウォッチしていきたいと思います。

IRC/チャット/掲示板の延長という印象を強く感じました。

個人的には、Webサービスで一般的なクライアント・サーバー型の何十年も採用されている古いアーキテクチャーを採用している限り、限界があると思います。

この中では、ActivityPubの個人サーバーが分散・検閲に強い現実的なものではないかと感じています。ただ、ATプロトコルなど、今後の改善や、うまいユースケースがあれば状況が変わる可能性はあります。

他のSNSの動向も見守っていきたいと思います。

なお、話題の発端となったJack DorseyのNostrのアカウントは以下です。

Twitterアカウントよりも投稿頻度が多いので、手始めにフォローしてみるのもよいかもしれません。

Comments

  1. This Article was mentioned on web.gnusocial.jp

  2. This Article was mentioned on web.gnusocial.jp

  3. This Article was mentioned on web.gnusocial.jp

  4. This Article was mentioned on web.gnusocial.jp

  5. This Article was mentioned on web.gnusocial.jp

  6. This Article was mentioned on web.gnusocial.jp

Ads Blocker Image Powered by Code Help Pro

広告ブロッカー検知/Ads Blocker Detected

このサイトは会費と広告で運営されています。[Bronze=月220円以上に登録] するか、広告ブロッカーを無効にしてください。

This site is operated by membership and advertise. Please [register at least Bronze=220 JPY/month], or disable ads blocker.

Copied title and URL