FIP-16: Longer Casts #182
Replies: 4 comments 7 replies
-
Without digging too much into technical specs on how this affects hubs, I just wanted to briefly mention that segmenting long casts into its own bucket at the protocol layer seems like a promising solution. Just ~1k bytes provides a much more interesting surface area for specialized clients like Ponder in the immediate term without requiring the complexity of serving external cast data. Our team really appreciates all the effort going into long casts, and even better if it doesn't cause major disturbances to the existing cast structure for current clients 🫡 My only thoughts are around the rate of storage increase:
|
Beta Was this translation helpful? Give feedback.
-
Sounds reasonable and simple - one uncertainty I have is what other The other uncertainty I have is whether 1k chars will satisfy the use case of people who want to write long casts. 3x longer isn't really that much longer, and certainly not long enough to write anything in-depth. Any data on this would be helpful |
Beta Was this translation helpful? Give feedback.
-
Waiting it but taking much time |
Beta Was this translation helpful? Give feedback.
-
@sanjayprabhu is there any example to use this with farcaster-js-hub-rest? |
Beta Was this translation helpful? Give feedback.
-
Title: Longer Casts
Type: Standards FIP
Authors: @sanjayprabhu, @varunsrin
Abstract
Introduce a new type of cast that can have up to 1,024 characters.
Problem
Users want to write more expressive posts but are limited to 320 bytes. This means that some interesting posts that could be written are cut short or not written at all.
The original intent of this limit was to increase the number of casts a user could store on the network, since we were concerned that storage was going to be a scarce resource. We’re less concerned about that now since we’ve had a year of observing storage patterns in the wild and believe we can support an increase.
Specification
type
field on theCastAddBody
CAST
type and aLONG_CAST
Messages with the long cast type may include 321 to 1024 bytes of text in the text field, while messages with the cast type may only include upto 320 bytes.
This change will be simple for clients — they can extend their UI to allow more characters when typing and select the right type when publishing the data. They can also choose to display the entire text in the feed or truncate with a “Show more”.
The change is also simple for downstream recipients — they just need to update any database fields that store casts to support upto 1024 bytes.
Rationale
Why is the type necessary?
One approach would be to just increase the character count for all casts. The problem with this is that we might want different restrictions on long vs short casts later on. For example, long casts require more data and we might want to limit each storage unit to 100 long casts. This would be hard to do without the type.
Why not implement a new Message Type / Set?
Another approach would be to introduce a new set with its own limits. This creates backwards compatibility issues for all consumers of hub messages that must now understand a new type. It also requires expiration of long casts to be treated differently from short casts, which might not be necessary early on.
Won’t this increase storage on disk?
Currently there are 57M casts which consume 12GB or about 10% of disk space. The average size of a cast is 145 bytes (less than 100 chars) and the average user only has 165 casts. Assuming usage patterns continue to hold this should have minimal impact (1-2%) on storage.
What about storage consumption from adversarial actors?
It is quite possible that an adversarial account may buy storage and generate junk data to flood the hubs. In this case, they would be able to generate an additional 704 bytes per cast or 3MB per storage unit. If we observe this behavior we may update the network to add a limit of a certain number of long casts per storage unit.
Beta Was this translation helpful? Give feedback.
All reactions