読了時間:5分
概要
「Farcaster」という新しい分散型ソーシャルネットワークが、統合されたWeb3アーキテクチャと、独自の工夫が凝らされたアプリ内体験により、注目を集めています。イーサリアム上に構築されたFarcasterでは、ユーザーが公開用のソーシャルプロフィールやコミュニティを作成し、他のユーザーと交流することができます。
このガイドでは、Farcasterについて、その設計思想、そしてMetaやXといった他のソーシャルネットワークとの違いについて詳しくご紹介します。さっそく始めましょう!
動画による解説をご希望ですか?この動画をご覧になり、Farcasterとそのアーキテクチャについて学んでください。
主な業務内容
- Farcasterについて詳しく知る
- Farcasterのアーキテクチャに関する基礎知識を習得する
- Farcasterにおける「ハブ」とデータの保存方法について学ぶ
必要なもの
「ファルキャスター」とは何ですか?
Farcasterは、革新的なオープンソースの分散型ソーシャルネットワークであり、ユーザーが自身のデータを完全に管理できるという点で、MetaやXといった中央集権型のソーシャルネットワークとは一線を画しています。ユーザーデータの所有権を保持するこれらの中央集権型プラットフォームとは異なり、Farcasterはユーザーにデータの直接的な所有権を付与しています。
Farcasterは従来のソーシャルネットワークと共通点がある一方で、新しい用語を導入しています:
| ファルキャスター用語集 | ソーシャルメディアにおける同義語 |
|---|---|
| キャスト | 投稿 |
| チャンネル | グループ |
| フレーム | Webアプリ |
Farcasterに関する主なポイントは以下の通りです:
-
これは一般的なソーシャルネットワークと同様に機能し、ユーザーは以下のことができます:
- アカウントを作成する
- コンテンツを共有する
- 他のユーザーが共有したコンテンツに反応する
これらの機能は、ソーシャルネットワークに対する一般的な期待に沿ったものです。しかし、Farcasterは、以下のWeb3機能が統合されている点で他とは一線を画しています:
- Farcasterアカウントを作成するには、イーサリアム(EVM)アドレスが必要です。このアドレスはアカウントに紐付けられ、メッセージへの署名やFarcasterプロトコル上での公開に使用されます(従来のユーザー名・パスワード方式とは異なります)。投稿、返信、フォローなどとして識別されるあらゆるアクティビティのメッセージは、
- プロフィール情報などのユーザーアカウントデータは、オンチェーンで保存されます。これは、Optimismメインネット上にデプロイされたスマートコントラクト(例:Id Registry)を通じて行われます。Castsなどのその他のデータは、Farcasterの「Hubs」と呼ばれるストレージネットワーク上でオフチェーンに保存されます。
- ユーザー名はENSを通じてオンチェーンで管理できるため、ユーザーは、独自の裁量でユーザー名を無効にできる中央集権的な組織とは異なり、自身のアイデンティティに対する主権を保持できます。誰でもENSRegistryコントラクトを呼び出し、ユーザー名をその管理アドレスに解決させることができます。
- ユーザーは、投稿内に分散型アプリケーション(例:NFTミントボタン、ワンクリックDAO投票など)を作成・埋め込むことができます。 - ユーザーは、投稿内に分散型アプリケーション(例:NFTミントボタン、ワンクリックDAO投票など)を作成・埋め込むことができます。これらは「フレーム」と呼ばれ、Cast内で正しく表示されるためにはOpenGraphに準拠している必要があります。 すでに他者によって構築された人気のあるフレームには、Coinbase Commerceを活用したフレーム内でシームレスなチェックアウト体験を実現した@cookiesや、BASEチェーンを介してFarcasterコミュニティにエアドロップされたERC-20トークンである$DEGENなどがあります。
- 基礎となるデータを所有する単一の主体が存在しないということは、Farcasterアカウントを持つ人なら誰でもFarcasterノード(別名「ハブ」)を運用し、データの読み書きができることを意味します。
Farcasterの独自の機能は、以下の要素によって支えられています:
- それぞれが独自の機能を果たし、分散型の体験を実現する特定のスマートコントラクト
- ハブとは、Farcasterのデータを保存・配信する、オープンソースの分散型ピアツーピアノードを指します。
ファルキャスターのアーキテクチャ
前述の通り、Farcasterはアカウント作成などの一部のデータをオンチェーンに保存し、キャストなどのその他のデータは「ハブ」と呼ばれるノードに保存します。
以下に概要を示します:

それでは、実際に利用されているスマートコントラクトについて、さらに詳しく見ていきましょう。
Farcasterは、オンチェーンでの操作を円滑に行うために、(Optimismメインネット上にデプロイされた)3つのスマートコントラクトを活用しています:
- IDレジストリ - このID登録契約により、ユーザーはアカウントの登録、譲渡、および復元を行うことができます。これは、
fId、これはアカウント作成時に使用されたイーサリアムアドレスに関連付けられています - ストレージレジストリ- ストレージレジストリ契約は、アカウントとそのストレージ利用料を管理します。これは、ユーザーがアカウントを作成する際に支払う利用料と同じものであり、Farcasterネットワーク上でのユーザーのやり取り(キャストや返信など)に使用されます。
- キーレジストリ- キーレジストリ契約は、アプリに登録されたキーを管理します。これにより、アプリがユーザーに代わってアクティビティ(投稿やフォローなど)を実行できるかどうかが制御されます。
各スマートコントラクトの機能について詳しく知りたい場合は、ドキュメントを確認し、こちらでソースコードをご覧ください。
ハブ
Farcasterのデータを保存・提供するノードのネットワークは、「ハブ」と呼ばれます。この分散型のピアツーピア・ネットワークを構成するノードは、Farcasterの状態全体(オンチェーンデータとオフチェーンデータの両方)を保存・検証し、相互に通信を行うことで、Farcasterの状態を常に最新の状態に保ちます。
Farcasterはオープンソースであるため、どのユーザーでも独自のHubを運用し、APIを介してFarcasterのデータを読み書きすることができます。現在実装されているHubには、Hubble(RustおよびTypeScriptで記述)などがあります。まずはストレージとその保存方法について詳しく見ていきましょう。その後、メッセージのライフサイクルや、Hub上での検証・保存方法について掘り下げていきます。
ストレージ
アカウントがFarcasterネットワーク上で活動を行うには、まず利用料を支払う必要があります。これは通常、年1回の料金であり、投稿、返信、他者のフォローなど、そのアカウントが行う可能性のあるすべての活動をカバーするものです。
各メッセージタイプには一定の「レント」が割り当てられており、このレント量を超えた後に公開されたメッセージがあると、最も古いメッセージが(ハブによって)削除されます。ハブによる削除とネットワーク負荷の制御により、レントを超過した後も、ユーザーはFarcasterプロトコルを引き続き利用することができます。
それでは、メッセージについて、そしてそれらがハブにどのように保存されるのかについて説明しましょう。
メッセージのライフサイクル
ハブの同期処理は、2つのフェーズからなるプロセスで構成されています - ゴシップ そして diff sync。Hubs 上でデータが保存・提供されるライフサイクルにおいて、これがどのように使用されるかについて概要を説明しましょう:
- アカウントは、メッセージに署名することで、インタラクション(例:Cast、React、Link)を生成します。
- メッセージはハブに保存され、検証が行われます(例:署名は有効か?Castの要件を満たしているか?)。
- メッセージに対して、ストレージおよびアカウントの制限に関する競合がないか(非同期で)チェックが行われます(例:Castが削除されたか、コピーが存在するか、アカウントに十分なレンタル期間が残っているかなど)。
- このメッセージが有効な場合、ハブはネットワーク上の他のハブにこのメッセージを伝播します(つまり、
噂話) - ハブは定期的に実行されます
diff同期を行い、見落とされたメッセージを特定し、それらを効率的に復元する
なお、ハブを稼働させるには最低限のハードウェア要件が必要であり、ノードを稼働させているユーザーには収益は発生しません。不正行為者を抑制するため、ハブはピアを監視してその行動を評価し、不正行為が検出された場合はそれを無視します。詳細については、ハブのドキュメントをご覧ください。
その他の参考資料
まとめ
よくできました!これで、Farcasterとその仕組みについて基本的な理解が得られたと思います。新たに得た知識をさらに深めるために、ぜひ[Farcasterフレーム]の作成ガイドをチェックし、自作のフレームを@Quicknodeをタグ付けしてシェアしてください!
ご質問がある場合は、Discordサーバーをご覧いただくか、以下のフォームからフィードバックをお寄せください。Twitter(@Quicknode)やTelegramの告知チャンネルをフォローして、最新情報をチェックしてください。
皆様からのフィードバックを心よりお待ちしております!❤️
ご意見や新しいトピックに関するご要望などがありましたら、ぜひお知らせください。皆様からのご連絡を心よりお待ちしております。
