Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docs improvements #184

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

## Getting Started

Farcaster is a protocol for building decentralized social apps. This repository contains the technical specification for implementing Farcaster.
Farcaster is a protocol for building decentralized social apps. This repository contains the technical specifications for implementing Farcaster.

If you are instead looking for:

Expand Down
4 changes: 2 additions & 2 deletions docs/OVERVIEW.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ Hubs need to synchronize message-graphs across thousands of instances to achieve

Using CRDTs to encode these rules allows message-graphs to achieve consensus without coordination. Users can send updates to many hubs via different apps, and their state will eventually converge. Each message type has a CRDT, which compares incoming messages by resource id to catch conflicts. Last-write-wins rules combined with the timestamp-hash ordering allow for deterministic conflict resolution.

Message-graph CRDTs ensure that operations are commutative, associative, and idempotent while never moving causally backward. Each CRDT has a state $S$ and a merge function $merge(m, S)$ which accepts a message returns a new state $S' >= S$. Such CRDTs are called anonymous delta-state CRDTs[^delta-state] and can sync by comparing missing messages.
Message-graph CRDTs ensure that operations are commutative, associative, and idempotent while never moving causally backward. Each CRDT has a state $S$ and a merge function $merge(m, S)$ which accepts a message and returns a new state $S' >= S$. Such CRDTs are called anonymous delta-state CRDTs[^delta-state] and can sync by comparing missing messages.

Users must only be able to add a limited amount of data to CRDTs. Otherwise, a Hub becomes impractical to operate affecting the network's decentralization. CRDT's solve this by imposing per-user size limits and evicting messages with the lowest order. Time limits can also be imposed to reduce network size by evicting messages with timestamps older than the cutoff.

Expand Down Expand Up @@ -127,7 +127,7 @@ An astute reader will note that Farcaster lacks features common in social networ

Farcaster makes these tradeoffs to achieve a level of decentralization that puts users and developers in control. It is far easier to add features to a decentralized network than it is to try and decentralize a feature-rich network. The protocol is robust enough to build simple, practical and public social networks that people will use.

# 7. Acknowledgements
# 7. Acknowledgments

The Farcaster protocol would not have been possible without significant contributions from [Varun Srinivasan](https://github.com/varunsrin), [Dan Romero](https://github.com/danromero), [Shane da Silva](https://github.com/sds), [Sean Yu](https://github.com/seansu4you87), [Gavi Galloway](https://github.com/gsgalloway), [Paul Fletcher-Hill](https://github.com/pfletcherhill), [Sanjay Prabhu](https://github.com/sanjayprabhu), Sagar Dhawan, [Cassandra Heart](https://github.com/CassOnMars), [Aditya Kulkarni](https://github.com/adityapk00) and [horsefacts](https://github.com/horsefacts).

Expand Down
6 changes: 3 additions & 3 deletions docs/SPECIFICATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Version: `2023.11.15`

# 1. Smart Contracts

There are a set of 3 contracts that keep track of account ids (fids), keys for the fids and the storage allocated to the fids.
There is a set of 3 contracts that keep track of account ids (fids), keys for the fids and the storage allocated to the fids.

## 1.1 Id Registry

Expand Down Expand Up @@ -278,7 +278,7 @@ message CastAddBody {
};
string text = 4; // Text of the cast
repeated uint32 mentions_positions = 5; // Byte positions of the mentions in the text
repeated Embed embeds = 6; // URIs or CastIds to embedded in the cast
repeated Embed embeds = 6; // URIs or CastIds to be embedded in the cast
}


Expand Down Expand Up @@ -416,7 +416,7 @@ A Link is a relationship between two users which can be one of several types. Li
```protobuf
message LinkBody {
string type = 1;
optional uint32 displayTimestamp = 2; // If set, clients should use this as the follow create time
optional uint32 displayTimestamp = 2; // If set, clients should use this as the following create time
oneof target {
uint64 fid = 3;
}
Expand Down