
Visão geral
Farcaster é um protocolo suficientemente descentralizado para a construção de aplicações sociais. A descentralização total significa que duas pessoas que desejam comunicar podem sempre comunicar. Isso também significa que os desenvolvedores podem acessar dados públicos na web sem permissão.
Conceito de projeto
Tem havido muitas tentativas de descentralizar as redes sociais, fazendo diferentes compromissos em descentralização, escalabilidade e usabilidade. ActivityPub escolheu a federação, SecureScuttlebutt seguiu o caminho peer-to-peer e Peepeth é baseado em blockchain.
Farcaster pega emprestadas ideias de alguns desses projetos, mas faz compensações diferentes. Sua arquitetura é melhor compreendida como o produto de três decisões de projeto:
Namespace flexível
Um usuário pode ter vários nomes de usuário de diferentes namespaces. Os nomes podem vir de um namespace descentralizado, resistente à censura, ou de um namespace centralizado, que é gratuito e fácil de usar.
A conta de um usuário tem um identificador numérico exclusivo 413241, por exemplo, que mapeia para o nome de usuário de sua propriedade. Use contratos Ethereum para rastrear identificadores, garantindo que dois usuários sempre possam se encontrar e se comunicar.
estatuto mundial
Muitas redes descentralizadas são federadas, mas isto quebra a garantia de acesso sem permissão aos dados públicos. Também complica a experiência do desenvolvedor, exigindo que eles rastreiem muitos servidores não confiáveis.
Farcaster armazena todos os dados do usuário em um servidor chamado Hub. Qualquer pessoa pode executar um hub conectado a todos os outros hubs por meio de uma rede p2p. Quando um usuário envia uma nova mensagem para um hub, a mensagem é propagada para todos os outros hubs. Cada hub deve armazenar dados válidos para todos os usuários ou será excluído da rede.
Aluguel de armazenamento
Permitir que os usuários armazenem quantidades ilimitadas de dados prejudica a saúde da rede. Usuários mal-intencionados podem criar bilhões de mensagens de spam, dificultando o uso da web por desenvolvedores e usuários. Também torna impossível operar hubs projetados para hardware comum.
Farcaster cobra aluguel dos usuários pelo armazenamento de dados na rede. Pague uma taxa anual ao acordo para garantir uma certa quantidade de espaço no hub. Isso restringe o spam e incentiva os usuários a limpar dados menos valiosos da rede.

conceito
O protocolo tem cinco blocos de construção principais:
Contas, que representam usuários na rede
Nome de usuário, apontando para a conta
Signatários, que postam mensagens em nome de contas
Mensagens, que representam atualizações públicas de uma conta
Armazenamento, que deve ser alugado pela conta para publicar mensagens
Conta
Uma conta Farcaster representa uma entidade única na rede. Cada conta possui um Farcaster ID ou fid, que é um identificador numérico exclusivo, como 78213. As identidades são emitidas e gerenciadas na cadeia usando um contrato Ethereum chamado IdRegistry.
O usuário faz uma transação para o IdRegistry para obter um novo fid. O endereço que possui o fid é chamado de endereço de garantia do usuário. IdRegistry garante que fids possam ser transferidos entre endereços e que dois endereços não tenham o mesmo fid.
Nome de usuário
Um nome de usuário pode ser usado para identificar ou referir-se a uma conta. Os usuários podem conectar vários nomes a uma conta, mas apenas um nome pode estar ativo. Farcaster oferece suporte a nomes ENS publicados dentro ou fora da rede.
Farcaster em fcast.id Cada conta Farcaster pode solicitar um nome gratuito. Os usuários também podem usar nomes em outros namespaces do ENS, como .eth. Uma prova assinada deve ser enviada à rede para obter um nome de usuário.
Assinado por
Um signatário é um par de chaves criptográficas usado para assinar uma mensagem. Cada conta pode ter vários assinantes, o que é útil se você quiser compartilhar a propriedade da conta ou usar vários aplicativos ao mesmo tempo. Farcaster usa o contrato KeyRegistry para gerenciar assinantes na rede.
O assinante é a chave Ed25519 gerada fora da cadeia. A conta registra o signatário fazendo uma transação no KeyRegistry usando a chave pública do signatário. A chave privada pode então ser usada para assinar a mensagem e publicá-la na rede.
Deixe uma mensagem
Mensagens são atualizações públicas do Farcaster, como postar uma postagem, seguir alguém ou adicionar uma foto de perfil. A rede oferece suporte a vários tipos de mensagens, cada um com suas próprias propriedades, requisitos e semântica. As mensagens são armazenadas completamente offline no Farcaster Hub.
As mensagens são codificadas como protobuf e devem ser criptografadas e assinadas pelo signatário da conta. Contanto que haja espaço de armazenamento suficiente, os usuários poderão publicar mensagens no Hub. O hub verifica a validade do signatário de cada mensagem antes de aceitá-la.
Armazenamento
O armazenamento dá a uma conta o direito de publicar mensagens na rede. É alugado mediante o pagamento de uma taxa anual, semelhante à forma como você aluga espaço em um servidor web. O armazenamento é gerenciado e rastreado na cadeia pelo contrato StorageRegistry.
O armazenamento é medido em unidades, sendo que uma unidade concede a uma conta o direito de armazenar um determinado número de mensagens. Qualquer pessoa pode pagar ao StorageRegistry para alugar uma unidade de armazenamento para uma conta. O preço e o tamanho de cada unidade de armazenamento variam de acordo com a oferta e a demanda.

Arquitetura
As redes sociais descentralizadas têm muitos requisitos que são difíceis de cumprir num único sistema. Os usuários devem ser capazes de criar, possuir e transferir contas de forma descentralizada. As mensagens que eles criam devem viajar quase em tempo real e muitas vezes são enviadas em grande número. Esses objetivos só podem ser alcançados usando uma arquitetura híbrida que combine sistemas on-chain e off-chain.
Os contratos em cadeia são utilizados para operações pouco frequentes onde a consistência e a descentralização são importantes. Contas, nomes de usuário, armazenamento e chaves são gerenciados por meio de uma série de contratos Ethereum.
Os sistemas offline são usados para operações frequentes onde o desempenho é crítico. As mensagens criadas por contas de usuário são armazenadas e propagadas na rede p2p do hub Farcaster. Ao contrário do blockchain, esta rede utiliza um modelo de consenso eventual, permitindo a propagação rápida de mensagens em troca de um modelo de consistência mais fraco.

Contrato de registro
O contrato de registro na rede principal do Optimism gerencia identidades de contas, assinantes e armazenamento. Existem três contratos principais:
Registro de Id - Emitir fid para criar uma nova conta
Registro de armazenamento - Acompanhe quanto espaço de armazenamento cada conta possui
Registro de chave - permite que as contas registrem assinantes de mensagens
Esses contratos têm design simples, não podem ser atualizados e têm um ciclo de vida limitado. Esses contratos são implantados em modo confiável e somente o Farcaster pode registrar novas contas. Após um período de teste, eles ficarão sem permissão para que qualquer pessoa possa registrar uma conta. Esta mudança não pode ser desfeita.

Cartório de registro de carteira de identidade
O registro de identificação emite novas contas Farcaster para endereços Ethereum. Os usuários podem fazer transações para obter um identificador numérico exclusivo para um endereço, conhecido como Farcaster ID ou fid. Um endereço só pode conter um fid por vez, mas eles podem ser transferidos livremente. A conta pode especificar um endereço de recuperação do qual o fid pode ser transferido a qualquer momento.
Registro da loja
O registro de armazenamento aluga unidades de armazenamento para contas por uma taxa anual. As contas devem possuir pelo menos uma unidade de armazenamento para postar mensagens no Farcaster. Os preços de armazenamento são determinados pelo contrato em dólares americanos, mas devem ser pagos em ETH. Os oráculos Chainlink determinam taxas de câmbio que são atualizadas no máximo uma vez a cada 24 horas. Os preços, taxas de câmbio, unidades disponíveis e o tamanho de cada unidade são controlados pela Farcaster e variam de acordo com a oferta e a demanda.
Registro de Chave
Um registro de chave permite que uma conta registre um signatário que pode escrever mensagens em seu nome. Os signatários podem ser adicionados ou removidos a qualquer momento, mas uma vez removidos, não poderão ser adicionados novamente. Um signatário pode ser adicionado a várias contas. O assinante é a chave pública Ed25519 e deve ser assinada pelo solicitante (ou seja, a conta que solicita a chave). Pode ser a conta do usuário ou a conta de um aplicativo que deseja operar em nome do usuário.
implantar

Centro
O centro autentica, armazena e replica mensagens de contas para outros centros. Os aplicativos executam hubs para ler e gravar no Farcaster em tempo real. Os hubs são executados em hardware comum e são conceitualmente semelhantes aos fluxos de dados de baixo nível e alto desempenho. A maioria dos aplicativos deve copiar dados centrais para um banco de dados para facilitar a indexação e consulta.
Cada hub armazena todo o estado global ou mensagens criadas por cada conta na rede. O limite máximo de unidades de armazenamento para armazenar o registro garante que o tamanho do estado global seja limitado. Ao contrário dos nós Ethereum, os hubs são, em última análise, consistentes e podem deixar as mensagens fora de ordem. Isso torna a leitura e a escrita muito rápidas, mas torna mais complexa a interpretação das alterações.

Verificar
Quando uma mensagem é recebida, ela é hash e sua assinatura é comparada ao registro de ID e aos contratos de registro de chave. A mensagem também especifica regras de validação adicionais que são verificadas pelo hub antes da fusão.
Armazenamento
Quando uma mensagem é validada, ela é armazenada no conjunto de mensagens. Cada tipo de mensagem possui um conjunto de regras definidas para mesclar mensagens e lidar com situações em que o número de mensagens excede o limite do usuário. Normalmente, as mensagens mais antigas são eventualmente descartadas. As regras são projetadas para que as mensagens adicionadas em qualquer ordem sempre resultem no mesmo conjunto.
Cópia
Quando uma mensagem é armazenada, ela é enviada para outros hubs através da grade de fofocas da libp2p. As mensagens que não chegam via fofoca são obtidas por meio de sincronização diferencial, um processo periódico fora de banda. A sincronização diferencial compara a árvore Merkle de IDs de mensagens entre dois hubs e recupera mensagens ausentes. O centro monitora os pares e avalia seu comportamento. Se um par não aceitar mensagens válidas, ficar para trás ou conversar demais, ele poderá ser ignorado por seus pares.
Implementação
Hubble - implementação de hub em Typescript e Rust
Nome de usuário
Os usuários podem associar um nome ENS à sua conta para que outras pessoas possam mencioná-los facilmente nas mensagens. Os nomes devem ter menos de 16 caracteres e conter apenas letras minúsculas, números ou hifens para evitar ataques homógrafos.
Farcaster atualmente oferece suporte a dois nomes ENS:
fnames, eles são gratuitos e gerenciados pela Farcaster.
Nomes .eth, que custam dinheiro e são controlados pelo usuário.

Governança
Farcaster usa consenso aproximado e código em execução como modelo de governança. A mudança acontece quando alguém faz uma sugestão, obtém suporte e lança um código funcional. Dependendo da mudança, diferentes grupos precisam ser convencidos:
Os desenvolvedores de protocolo optam por mesclar as alterações em hubs e contratos.
Os desenvolvedores de aplicativos optam por implantar essas mudanças em seu hub.
Usuários, selecionem os aplicativos que desejam usar.
O consenso se desenvolve à medida que as pessoas aceitam ou rejeitam o novo código. Farcaster não fornece a ninguém um processo de votação vinculativo, função oficial ou direitos de veto. Demasiada estrutura pode criar rigidez no sistema, encorajar a politicagem e retardar o progresso. O consenso aproximado distorce a ação, incentiva a diversidade de pontos de vista e maximiza a descentralização, o que é essencial para protocolos de longo prazo. A maioria das mudanças ocorre através do processo FIP.
PIF
FIP, ou Farcaster Improvement Proposal, é o processo de construção de consenso em torno de mudanças de protocolo. O FIP é inspirado no EIP do Ethereum e no PEP do Python. Qualquer pessoa pode escrever um FIP para propor mudanças:
Um processo, como um cronograma de lançamento para um contrato
Padrões, como URIs para ativos na cadeia
Uma implementação, como adicionar uma nova função de protocolo
Leia mais informações sobre o FIP em (FIP-0: Proposta de Proposta). A lista final de propostas está abaixo. As propostas foram apresentadas no quadro de discussão e aprovadas.

Assim que o projeto foi lançado, V God divulgou as últimas notícias, indicando que V God não se importa com este projeto e em breve se tornará o novo líder.

Ex-executivo da Coinbase levanta US$ 30 milhões para protocolo de rede social descentralizado, liderado por a16z
A Merkle Manufactory arrecadou US$ 30 milhões em uma rodada liderada por Andreessen Horowitz (a16z).
A empresa incipiente, dirigida pelo ex-executivo da Coinbase Dan Romero, está trabalhando para lançar o Farcaster, um protocolo “totalmente descentralizado” para construção de redes sociais.
Um ex-executivo da Coinbase disse na terça-feira que sua empresa, Merkle Manufactory, levantou US$ 30 milhões em uma rodada de financiamento liderada por Andreessen Horowitz (a16z) para desenvolver um protocolo de rede social chamado Farcaster.
Dan Romero, que deixou a bolsa em 2019, anunciou a rodada de financiamento em um post em seu site. Ele explicou que ele e Varun Srinivasan, outro ex-diretor da Coinbase, começaram a trabalhar juntos em 2020 em uma ideia chamada RSS+.
“Nosso objetivo era construir um protocolo neutro e confiável que permitisse aos usuários ter um relacionamento direto com seu público e aos desenvolvedores a liberdade de construir novos clientes sem permissão”, escreveu ele. “Passamos por várias iterações e finalmente construímos o Farcaster, um. protocolo suficientemente descentralizado para a construção de redes sociais.”
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 e vários outros investidores anjos também aderiram à rodada.
