Übersicht

Farcaster ist ein ausreichend dezentralisiertes Protokoll zum Erstellen sozialer Anwendungen. Vollständige Dezentralisierung bedeutet, dass immer zwei Personen kommunizieren können, die kommunizieren möchten. Dies bedeutet auch, dass Entwickler ohne Erlaubnis auf öffentliche Daten im Web zugreifen können.

Designkonzept

Es gab viele Versuche, soziale Netzwerke zu dezentralisieren, wobei unterschiedliche Kompromisse in Bezug auf Dezentralisierung, Skalierbarkeit und Benutzerfreundlichkeit eingegangen wurden. ActivityPub hat sich für eine Föderation entschieden, SecureScuttlebutt hat sich für den Peer-to-Peer-Weg entschieden und Peepeth ist Blockchain-basiert.

Farcaster übernimmt Ideen von einigen dieser Projekte, geht jedoch unterschiedliche Kompromisse ein. Seine Architektur lässt sich am besten als Produkt dreier Designentscheidungen verstehen:

Flexibler Namensraum

Ein Benutzer kann mehrere Benutzernamen aus verschiedenen Namespaces haben. Namen können aus einem dezentralen Namensraum stammen, der zensurresistent ist, oder aus einem zentralen Namensraum, der kostenlos und einfach zu verwenden ist.

Das Konto eines Benutzers hat eine eindeutige numerische Kennung, zum Beispiel 413241, die dem Benutzernamen des Benutzers zugeordnet ist. Verwenden Sie Ethereum-Verträge, um Identifikatoren zu verfolgen und sicherzustellen, dass sich zwei Benutzer immer finden und kommunizieren können.

globaler Status

Viele dezentrale Netzwerke sind föderiert, aber dadurch wird die Garantie des erlaubnislosen Zugriffs auf öffentliche Daten gebrochen. Es verkompliziert auch die Entwicklererfahrung, da Entwickler viele unzuverlässige Server crawlen müssen.

Farcaster speichert alle Benutzerdaten auf einem Server namens Hub. Jeder kann einen Hub betreiben, der über ein P2P-Netzwerk mit allen anderen Hubs verbunden ist. Wenn ein Benutzer eine neue Nachricht an einen Hub sendet, wird die Nachricht an alle anderen Hubs weitergegeben. Jeder Hub muss gültige Daten für alle Benutzer speichern, sonst wird er vom Netzwerk ausgeschlossen.

Lagermiete

Wenn Benutzern erlaubt wird, unbegrenzte Datenmengen zu speichern, schadet dies der Gesundheit des Netzwerks. Böswillige Benutzer können Milliarden von Spam-Nachrichten erstellen, was die Nutzung des Webs für Entwickler und Benutzer erschwert. Außerdem ist es dadurch nicht möglich, Hubs zu betreiben, die für Standardhardware ausgelegt sind.

Farcaster berechnet den Nutzern Miete für die Speicherung von Daten im Netzwerk. Zahlen Sie eine jährliche Gebühr für die Vereinbarung, um eine bestimmte Menge an Platz auf dem Hub zu garantieren. Dadurch wird Spam eingedämmt und Benutzer dazu ermutigt, weniger wertvolle Daten im Netzwerk zu bereinigen.

Konzept

Das Protokoll besteht aus fünf Hauptbausteinen:

Konten, die Benutzer im Netzwerk repräsentieren

Benutzername, der auf das Konto verweist

Unterzeichner, die im Namen von Konten Nachrichten veröffentlichen

Nachrichten, die öffentliche Aktualisierungen eines Kontos darstellen

Speicher, der vom Account gemietet werden muss, um Nachrichten zu veröffentlichen

Konto

Ein Farcaster-Konto stellt eine einzigartige Einheit im Netzwerk dar. Jedes Konto verfügt über eine Farcaster-ID oder FID, bei der es sich um eine eindeutige numerische Kennung wie 78213 handelt. Identitäten werden in der Kette mithilfe eines Ethereum-Vertrags namens IdRegistry ausgestellt und verwaltet.

Der Benutzer führt eine Transaktion mit der IdRegistry durch, um eine neue FID zu erhalten. Die Adresse, der die FID gehört, wird als Treuhandadresse des Benutzers bezeichnet. IdRegistry stellt sicher, dass FIDs zwischen Adressen übertragen werden können und keine zwei Adressen die gleiche FID haben.

Benutzername​

Ein Benutzername kann zur Identifizierung oder Referenzierung eines Kontos verwendet werden. Benutzer können mehrere Namen mit einem Konto verbinden, es kann jedoch nur ein Name aktiv sein. Farcaster unterstützt ENS-Namen, die in der Kette oder außerhalb der Kette veröffentlicht werden.

Farcaster unter fcast.id. Jedes Farcaster-Konto kann einen kostenlosen Namen anfordern. Benutzer können auch Namen in anderen ENS-Namespaces verwenden, beispielsweise .eth. Um einen Benutzernamen zu erhalten, muss ein signierter Nachweis an das Netzwerk übermittelt werden.

Unterzeichnet von

Ein Unterzeichner ist ein kryptografisches Schlüsselpaar, das zum Signieren einer Nachricht verwendet wird. Jedes Konto kann mehrere Unterzeichner haben. Dies ist hilfreich, wenn Sie den Kontoinhaber teilen oder mehrere Anwendungen gleichzeitig verwenden möchten. Farcaster verwendet den KeyRegistry-Vertrag, um Unterzeichner in der Kette zu verwalten.

Der Unterzeichner ist der außerhalb der Kette generierte Ed25519-Schlüssel. Das Konto registriert den Unterzeichner, indem es mit dem öffentlichen Schlüssel des Unterzeichners eine Transaktion an die KeyRegistry durchführt. Der private Schlüssel kann dann zum Signieren der Nachricht und zum Veröffentlichen im Netzwerk verwendet werden.

Hinterlassen Sie eine Nachricht

Nachrichten sind öffentliche Aktualisierungen von Farcaster, z. B. das Posten eines Beitrags, das Folgen einer Person oder das Hinzufügen eines Profilbilds. Das Netzwerk unterstützt mehrere Nachrichtentypen mit jeweils eigenen Eigenschaften, Anforderungen und Semantik. Nachrichten werden vollständig offline auf Farcaster Hub gespeichert.

Nachrichten werden als Protobuf codiert und müssen vom Unterzeichner des Kontos gehasht und signiert werden. Solange genügend Speicherplatz vorhanden ist, können Benutzer Nachrichten im Hub veröffentlichen. Der Hub prüft die Gültigkeit des Unterzeichners jeder Nachricht, bevor er sie akzeptiert.

Lagerung

Durch die Speicherung erhält ein Konto das Recht, Nachrichten im Netzwerk zu veröffentlichen. Die Miete erfolgt gegen Zahlung einer Jahresgebühr, ähnlich wie Sie Speicherplatz auf einem Webserver mieten. Der Speicher wird in der Kette durch den StorageRegistry-Vertrag verwaltet und verfolgt.

Der Speicher wird in Einheiten gemessen, wobei eine Einheit einem Konto das Recht einräumt, eine bestimmte Anzahl von Nachrichten zu speichern. Jeder kann StorageRegistry bezahlen, um eine Speichereinheit für ein Konto zu mieten. Der Preis und die Größe jeder Lagereinheit variieren je nach Angebot und Nachfrage.

Architektur

Dezentrale soziale Netzwerke haben viele Anforderungen, die in einem einzigen System nur schwer zu erfüllen sind. Benutzer müssen in der Lage sein, Konten dezentral zu erstellen, zu besitzen und zu übertragen. Die von ihnen erstellten Nachrichten müssen nahezu in Echtzeit übermittelt werden und werden oft in großen Mengen verschickt. Diese Ziele können nur mit einer Hybridarchitektur erreicht werden, die On-Chain- und Off-Chain-Systeme mischt.

On-Chain-Verträge werden für seltene Vorgänge verwendet, bei denen Konsistenz und Dezentralisierung wichtig sind. Konten, Benutzernamen, Speicher und Schlüssel werden mithilfe einer Reihe von Ethereum-Verträgen verwaltet.

Offline-Systeme werden für häufige Vorgänge verwendet, bei denen die Leistung von entscheidender Bedeutung ist. Von Benutzerkonten erstellte Nachrichten werden im P2P-Netzwerk des Farcaster-Hubs gespeichert und verbreitet. Im Gegensatz zur Blockchain verwendet dieses Netzwerk ein Eventual-Consens-Modell, das eine schnelle Nachrichtenverbreitung im Austausch gegen ein schwächeres Konsistenzmodell ermöglicht.

Registrierungsvertrag

Der Registrierungsvertrag im Optimism-Mainnet verwaltet Kontoidentitäten, Unterzeichner und Speicher. Es gibt drei Hauptverträge:

Id Registry – Geben Sie „fid“ ein, um ein neues Konto zu erstellen

Speicherregistrierung – Verfolgen Sie, wie viel Speicherplatz jedes Konto hat

Schlüsselregistrierung – Ermöglicht Konten die Registrierung von Nachrichtenunterzeichnern

Diese Verträge sind einfach gestaltet, nicht aktualisierbar und haben einen begrenzten Lebenszyklus. Diese Verträge werden im vertrauenswürdigen Modus bereitgestellt und nur Farcaster kann neue Konten registrieren. Nach einer Testphase wird ihnen die Berechtigung entzogen, sodass jeder ein Konto registrieren kann. Diese Änderung kann nicht rückgängig gemacht werden.

Personalausweis-Registrierungsstelle

Die ID-Registrierung vergibt neue Farcaster-Konten an Ethereum-Adressen. Benutzer können Transaktionen durchführen, um eine eindeutige numerische Kennung für eine Adresse zu erhalten, die als Farcaster-ID oder FID bezeichnet wird. Eine Adresse kann jeweils nur einen FID enthalten, sie können jedoch frei übertragen werden. Das Konto kann eine Wiederherstellungsadresse angeben, von der die FID jederzeit übertragen werden kann.

Store-Registrierung

Das Speicherregister vermietet gegen eine jährliche Gebühr Speichereinheiten an Konten. Konten müssen mindestens eine Speichereinheit besitzen, um Nachrichten auf Farcaster veröffentlichen zu können. Die Speicherpreise werden im Vertrag in USD festgelegt, müssen jedoch in ETH bezahlt werden. Chainlink-Orakel ermitteln Wechselkurse, die höchstens einmal in 24 Stunden aktualisiert werden. Preise, Wechselkurse, verfügbare Einheiten und die Größe jeder Einheit werden von Farcaster kontrolliert und variieren je nach Angebot und Nachfrage.

Schlüsselregister

Mithilfe einer Schlüsselregistrierung kann ein Konto einen Unterzeichner registrieren, der in seinem Namen Nachrichten schreiben kann. Unterzeichner können jederzeit hinzugefügt oder entfernt werden, aber sobald sie entfernt wurden, können sie nicht wieder hinzugefügt werden. Ein Unterzeichner kann mehreren Konten hinzugefügt werden. Der Unterzeichner ist der öffentliche Schlüssel Ed25519 und muss vom Anforderer (d. h. dem Konto, das den Schlüssel anfordert) signiert werden. Dabei kann es sich um das Konto des Benutzers oder das Konto einer Anwendung handeln, die im Namen des Benutzers agieren möchte.

einsetzen

Hub

Das Zentrum authentifiziert, speichert und repliziert Kontonachrichten an andere Zentren. Die Anwendung führt den Hub aus, um in Echtzeit auf Farcaster zu lesen und zu schreiben. Hubs laufen auf handelsüblicher Hardware und ähneln konzeptionell Low-Level-Hochleistungsdatenflüssen. Die meisten Anwendungen sollten zentrale Daten zur einfachen Indizierung und Abfrage in eine Datenbank kopieren.

Jeder Hub speichert den gesamten globalen Status oder die von jedem Konto im Netzwerk erstellten Nachrichten. Die maximale Speichereinheitenbeschränkung zum Speichern der Registrierung stellt sicher, dass die Größe des globalen Status begrenzt ist. Im Gegensatz zu Ethereum-Knoten sind Hubs letztendlich konsistent und können Nachrichten möglicherweise nicht in der richtigen Reihenfolge empfangen. Das macht das Lesen und Schreiben sehr schnell, macht es aber komplexer bei der Interpretation von Änderungen.

Verifizieren

Wenn eine Nachricht empfangen wird, wird sie gehasht und ihre Signatur mit der ID-Registrierung und den Schlüsselregistrierungsverträgen verglichen. Die Nachricht gibt außerdem zusätzliche Validierungsregeln an, die vom Hub vor der Zusammenführung überprüft werden.

Lagerung

Wenn eine Nachricht validiert wird, wird sie im Nachrichtensatz gespeichert. Für jeden Nachrichtentyp sind Regeln zum Zusammenführen von Nachrichten und zum Behandeln von Situationen definiert, in denen die Anzahl der Nachrichten das Benutzerlimit überschreitet. Normalerweise werden die ältesten Nachrichten schließlich verworfen. Die Regeln sind so konzipiert, dass Nachrichten, die in beliebiger Reihenfolge hinzugefügt werden, immer zum gleichen Satz führen.

Kopieren

Wenn eine Nachricht gespeichert wird, wird sie über das libp2p-Klatschgitter an andere Hubs gesendet. Nachrichten, die nicht über Klatsch und Tratsch eingehen, werden mithilfe der differenziellen Synchronisierung abgerufen, einem periodischen Out-of-Band-Prozess. Die differenzielle Synchronisierung vergleicht den Merkle-Baum der Nachrichten-IDs zwischen zwei Hubs und ruft fehlende Nachrichten ab. Das Zentrum überwacht Gleichaltrige und bewertet ihr Verhalten. Ein Peer kann von seinen Peers ignoriert werden, wenn er keine gültigen Nachrichten akzeptiert, zurückbleibt oder zu viel chattet.

Implementierung

Hubble – Hub-Implementierung in Typescript und Rust

Benutzername​

Benutzer können ihrem Konto einen ENS-Namen zuordnen, sodass andere sie problemlos in Nachrichten erwähnen können. Namen dürfen weniger als 16 Zeichen lang sein und dürfen nur Kleinbuchstaben, Zahlen oder Bindestriche enthalten, um homographische Angriffe zu verhindern.

Farcaster unterstützt derzeit zwei ENS-Namen:

fnames, sie sind kostenlos und werden von Farcaster verwaltet.

.eth-Namen, die Geld kosten und vom Benutzer kontrolliert werden.

Führung

Farcaster verwendet groben Konsens und laufenden Code als Governance-Modell. Eine Änderung geschieht, wenn jemand einen Vorschlag macht, Unterstützung erhält und funktionierenden Code veröffentlicht. Je nach Veränderung müssen unterschiedliche Gruppen überzeugt werden:

Protokollentwickler entscheiden sich dafür, Änderungen in Hubs und Verträgen zusammenzuführen.

Anwendungsentwickler entscheiden sich dafür, diese Änderungen auf ihrem Hub bereitzustellen.

Benutzer wählen die Anwendungen aus, die sie verwenden möchten.

Konsens entsteht, wenn Menschen den neuen Kodex akzeptieren oder ablehnen. Farcaster gewährt niemandem einen verbindlichen Abstimmungsprozess, keine offizielle Rolle oder kein Vetorecht. Zu viel Struktur kann zu einer Starrheit im System führen, politisches Handeln begünstigen und den Fortschritt verlangsamen. Ein grober Konsens beeinflusst das Handeln, fördert die Vielfalt der Standpunkte und maximiert die Dezentralisierung, die für langfristige Protokolle unerlässlich ist. Die meisten Änderungen erfolgen durch den FIP-Prozess.

FIP

FIP oder Farcaster Improvement Proposal ist der Prozess der Konsensbildung über Protokolländerungen. FIP ist von Ethereums EIP und Pythons PEP inspiriert. Jeder kann ein FIP schreiben, um Änderungen vorzuschlagen:

Ein Prozess, beispielsweise ein Veröffentlichungsplan für eine Vereinbarung

Standards wie URIs für On-Chain-Assets

Eine Implementierung, beispielsweise das Hinzufügen einer neuen Protokollfunktion

Lesen Sie mehr über FIP in FIP-0: Vorschlag, um einen Vorschlag vorzuschlagen. Die endgültige Liste der Vorschläge finden Sie unten. Im Diskussionsforum wurden Vorschläge gemacht und genehmigt.

Sobald das Projekt herauskam, veröffentlichte V God die neuesten Nachrichten, die darauf hindeuteten, dass V God keine Rücksicht auf dieses Projekt hat und bald der neue Leiter werden wird.

Ehemaliger Coinbase-Manager sammelt 30 Millionen US-Dollar für ein dezentrales soziales Netzwerkprotokoll unter der Leitung von a16z

Merkle Manufactory hat in einer von Andreessen Horowitz (a16z) angeführten Runde 30 Millionen US-Dollar eingesammelt.

Das junge Unternehmen unter der Leitung des ehemaligen Coinbase-Managers Dan Romero arbeitet an der Einführung von Farcaster, einem „vollständig dezentralisierten“ Protokoll zum Aufbau sozialer Netzwerke.

Ein ehemaliger Coinbase-Manager sagte am Dienstag, dass sein Unternehmen Merkle Manufactory in einer von Andreessen Horowitz (a16z) geleiteten Finanzierungsrunde 30 Millionen US-Dollar gesammelt habe, um ein soziales Netzwerkprotokoll namens Farcaster zu entwickeln.​

Dan Romero, der die Börse 2019 verließ, kündigte die Finanzierungsrunde in einem Beitrag auf seiner Website an. Er erklärte, dass er und Varun Srinivasan, ein weiterer ehemaliger Coinbase-Direktor, im Jahr 2020 begannen, gemeinsam an einer Idee namens RSS+ zu arbeiten.​

„Unser Ziel war es, ein vertrauenswürdiges, neutrales Protokoll zu entwickeln, das Benutzern eine direkte Beziehung zu ihren Zielgruppen und Entwicklern die Freiheit ermöglicht, ohne Erlaubnis neue Clients aufzubauen“, schrieb er. „Wir haben mehrere Iterationen durchlaufen und letztendlich Farcaster entwickelt, a ausreichend dezentrales Protokoll zum Aufbau sozialer Netzwerke.“

Standard Crypto, Elad Gil, 1confirmation, Scalar Capital, First Round Capital, Volt Capital, A Capital, Todd and Rahul's Angel Fund, Coinbase Ventures, Mischief, Ansa Capital, Haystack, Ribbit Capital, Chapter One, Multicoin Capital, Offline Ventures, Archetype , Canonical Crypto, Proof Group, Floodgate, Balaji Srinivsasan, 6529, Ray Tonsing und mehrere andere Angel-Investoren schlossen sich ebenfalls der Runde an.

#BinanceSquare #Farcaster #BTC