Exclusive interview with Farcaster Lianchuang: Exploring the future of decentralized social networks

24-07-25 15:17
Read this article in 95 Minutes
总结 AI summary
View the summary 收起
Original title: Episode 331: Farcaster with Varun Srinivasan
Original translation: Ismay, BlockBeats


Editor's note: Varun Srinivasan, co-founder and technical director of decentralized social protocol Farcaster, recently participated in an interview with ZK Podcast to talk about how Farcaster uses blockchain technology to achieve decentralized management of user identities, solve data consistency problems, and provide developers with an open programming environment. In addition, the challenges faced by Farcaster, such as spam management, user experience optimization, and future technology expansion, were discussed.


Today, BlockBeats also announced that the user system will be fully connected to the Farcaster protocol. Readers can choose the Farcaster protocol to log in to the rhythm app, and then they can comment and forward the content, which will also be reflected in your Farcaster account. I hope this article can contribute to readers' understanding of the Farcaster protocol and the technical details behind it.


Related reading: "Rhythm fully integrates Farcaster protocol, bringing a new Web3 content platform experience"


TL;DR

1. Farcaster's positioning and development: Farcaster is similar to the combination of Twitter and Reddit, allowing users to publish and manage content on a network without centralized control, and providing developers with the opportunity to freely build applications.


2. Decentralization challenges and solutions:Farcaster uses multiple nodes to store network data, and solves data consistency problems by introducing CRDT technology.


3. Spam management: Control spam at the protocol level through the concept of storage units and rate limits.


4. Data storage and consensus mechanism: Data is stored in an off-chain system called Hub, and a simple consensus mechanism is used to maintain data consistency and ensure the transmission speed of social content.


5. Farcaster Ecosystem: Includes building social network clients, tools and services, and borrowing the Farcaster social graph to create other social networks.


6. Comparison with other social networks: The approach to identity management and content fragmentation is different from other decentralized social networks such as Mastodon.


7. Farcaster's future development direction: Including the possibility of moving some functions to the blockchain, such as channel management and account recovery, as well as continuous improvements to user experience and security.


The following is the original content:


Anna Rose: Today, Tarun and I are joined by Varun Srinivasan, co-founder of Farcaster. Welcome to the show, Varun.


Varun Srinivasan: Hey, thanks for having me. I've been a long-time listener to the show and I'm really excited to be here today talking to you all.


Anna Rose: I have to admit, I was pretty late to the party. Maybe someone mentioned it to me last year, but I didn't pay attention until this year. When I joined, it felt like the party had already started a long time ago. I felt a little out of touch and like I was missing out. Tarun, I assume you've been using Farcaster for a while now? You joined before me.


Tarun: Yeah, but I wasn't one of the earliest users and my Farcaster ID wasn't very low. But I had a few friends who were very early users and kept recommending it to me, so I joined. At this point, I'm not entirely sure what my social media habits will look like in 2024. I feel like social media in general feels completely different now than it did two years ago.


Varun Srinivasan: The interesting thing is, we've been developing Farcaster for over three years now. Every year, every season, there are always people who feel like you. But by the next year, they're "old hands." I think we're still in the very early stages, and there's a lot that's going to happen. So even if you feel like you're late to the party, I can guarantee that hopefully in a few years you'll feel like an early user.

Anna Rose: I think it's important for us to introduce Farcaster to our listeners. Although we just talked about our experience, let's assume that our listeners don't know that this is about a social application. So what exactly is Farcaster? Varun Srinivasan: Farcaster is a decentralized social network. If you download one of the apps that connects to the network, called Warpcast, and use it today you'll see something that feels like 80% Twitter and 20% Reddit. There's a stream of information, people are posting content and interacting with each other. It's primarily text-based, but there are also communities where people can organize into subgroups and do interesting things in more niche categories. That's what Farcaster feels like, but the reality of it, and the decentralized part, is that there's no one server controlling or running Farcaster.


There are literally hundreds or even thousands of different nodes that all have a copy of the Farcaster network, which means that for developers and people who build on the network, they have sovereignty and freedom to build the applications that they want because nobody can cut off their API access or shut them down.


That's why we call Farcaster an open or programmable social network, because you can build on top of it and you can be confident that the things that you build and the applications that you create will be able to reach your users without any intermediary parties getting in the way.


Anna Rose: Mastodon has emerged as an alternative to social media that is also decentralized but more federated, and I used that a long time ago. I remember the problem at the time was that you could almost have duplicate identities in different servers and there was no unified sense of reality. But with Farcaster, at least it seems that there is, is it built in a completely different way?


Varun Srinivasan: Yes, social media is the only form of communication or media that is not actually decentralized. Think about everything else, email, the internet, TV, radio, text messaging, they all have this protocol and multi-party communication, and that has never existed in social, it's always been a single player. If you want texts, you go to Twitter; if you want friends, you go to Facebook, or now maybe Snapchat.


I think the reason for this has been that technology has lagged far behind what people want and has largely been unable to build a good social network experience.


The traditional way social networks are decentralized is you can think of it as federated, like I run a server, you run a server, maybe Tarun runs a server that we all like to connect to and use. This leads to the fragmented identity problem you mentioned, you need to know how to find them on different servers, how to connect to them, and this also introduces some very subtle data collection challenges.


From an application developer's perspective, one of the biggest problems in building a decentralized social network is that I need fast and simple consensus. The Internet is another decentralized network that is federated, and Google solved this problem. The difficulty is that there are millions of servers generating different content, and being able to crawl all of this data, collect it, deal with all the inconsistencies and challenges, and say what people are actually talking about is very difficult.


The second way is to use blockchains, such as Bitcoin and Ethereum, which solve the problem of how to take all the data and put it on a single machine. When you run an Ethereum node, you actually have every transaction that has ever happened in the history of that machine. There is no fragmented identity problem, you don't need to ask where the data is, it's all on your machine.


However, the challenge of putting all social content on the blockchain is that first of all, it's expensive, you need to pay for every transaction. If you tell users that they have to pay for every post, it adds a sense of friction that they are not happy to accept. People want these operations to be smooth and interactive, you want to encourage people to communicate with each other.


The second challenge is that platforms like Twitter, people post about 100,000 updates per second, even the fastest blockchain today is 100 times slower than this, so doing this today actually doesn't work very well.


Some people will say that blockchains will become faster and cheaper, so why not play the long game? Why not wait for it to improve?


A 100x improvement is possible in the next three to five years. I think this creates an interesting second-order challenge.


First, blockchains have to solve the double-spending problem - you can't allow the same money to be spent twice, so this limits the consensus strategies you can use, and social networks don't have this problem.


The second challenge is that blockchains are inherently financial. When you build a Turing-complete programmable chain, people can do whatever they want on it. So fees go down, and someone might build something financialized, which creates a lot of demand, drives up prices, and causes network congestion. You can see this happening already.


It would be very frustrating if you were trying to post something on a social network and the system told you, "Sorry, you can't post because someone is buying this NFT." So separating the social data layer from the financial layer seems like something you have to do to provide a good user experience.


Why Farcaster?


Anna Rose: There are a lot of questions and topics I want to dig into in what you just said, but before I do that, I want to get a sense of how you got started in the first place. Why are you working on this project? Did you work at Twitter before?


Varun Srinivasan: No, but I did spend a fair amount of time developing social applications in college. In 2007, we built a little application called Moocher on Facebook's PHP application development platform. It would scrape all of your Facebook events in college and create a free food calendar. So if you wanted to eat pizza all day without spending any money, you could do that.


This simple app went viral and a lot of people used it because it was so easy to distribute. This idea made me realize that interesting ideas can scale and spread quickly through the social graph, which is very powerful.


But in the next few years, all these social networks, Facebook, Twitter, etc., shut down their APIs. We entered the dark ages of social developers because you couldn't control the API, and the dream was shattered.


My co-founder Dan and I had both worked at Coinbase for about five years, and we knew each other there. After leaving Coinbase, if we wanted to make a ten-year bet and build something that we thought was very important to the world and society. We were thinking about what excited us and what we wanted to build and work on next.


The two of us got a lot of energy from thinking about social networks. Why is this the only communication system that is not decentralized? Why hasn't this happened yet? As we started to dig deeper, it felt like the time was right.


Ethereum and blockchain had solved the core consensus problem and showed that you could actually have a global state model with a single node, and it seemed really cool if we could somehow apply that to social networks. At the same time, it felt like there was an increasing demand for decentralized networks. We felt like this was the most interesting thing we could do.

Anna Rose: Just wondering where you guys started, you had this idea for a social network, now you have some scaling tools. But if you're talking about three years ago, were rollups already available then? Even the tech stack that you guys are building today, I don't know if it already existed. Varun Srinivasan: No, it didn't exist then. When we started to work on this idea in 2020, L2 technologies were not something that people were using in general. They were very early, not even ready for mainnet. We started with a couple of different approaches. First, we realized that you couldn't store all your data on Ethereum at that time, it was too expensive, too volatile, and other networks had the same problems. So we said at the beginning that we had to find a way to decouple the data layer from the blockchain. We could use the blockchain for core things like registration, but we had to move the data off.


V1 of Farcaster actually took this federated approach that we talked about earlier, similar to what other networks were doing, and put identity on the blockchain. So you didn't have a fragmented identity problem with your username, the account you signed up for, but everyone ran their own servers and stored their data.


After a few months, we quickly ran into the problem that these servers started to diverge a little bit. It became increasingly difficult to maintain these servers over time, which was obviously not ideal. So we started thinking about the evolution of Farcaster v2, which borrowed the idea of Ethereum nodes: you can run a hub, and it will sync with all the other hubs and have a copy of every message in the world.


In exchange, it puts some limits on the amount of data you can generate, because if everyone can generate an unlimited amount of data, it won't fit into that hub. At the same time, it has an economic model where you need to pay a fee to get storage space and store some data. So that's how Farcaster V2 came about, but this was built through a lot of trial and error, where we kept developing, getting feedback from users and developers, realizing why it wasn't working, and then repeating that cycle.


Anna Rose: So where is this data stored?


Varun Srinivasan: It's stored in one of our off-chain systems called a "Hub," which is actually a node in the network. You can download a Hub today and run it, and in an hour and a half it's synced with all the other Hubs and downloaded 140GB of data. That's the entirety of Farcaster, that's every message that's ever been published, and you have this data on your local machine right now.


If you send a new message, you can send it to any hub, it will accept it and verify that it is from your identity, check the signature, etc., and then pass it on to every other hub. So if you run a hub, you can also guarantee that you will get all this data in real time to populate your applications and databases.


Anna Rose: So the comment about consensus, is that specifically referring to consensus on the hub data?


Varun Srinivasan: Exactly. Let's say you want to publish a "hello world" message, and then you want to delete it. So how do these operations work? What happens if they are reversed in order? You first create a "hello world" message, sign it, publish it. Now all the hubs have this "hello world" message, and then you decide to delete it and publish another message saying "this message was deleted."


Ideally, the add message arrives first, and then the delete message arrives, so that every hub knows that the message was added first and then deleted. But what if these messages arrive in the opposite order? Some hubs might see the delete message before they see the add message, so how do you decide which message is the original?


Farcaster actually uses a very simple consensus mechanism based on a technology we call CRDT (Conflict-Free Replicated Data Types). The term sounds complicated, but it's actually a very simple concept.


What this means is that it has simple rules by which each node can decide what the final state should be. In this case, the simple rule is that if you delete your message, the state of the message is always deleted, even if you added it.


We apply this simple rule to more complex situations, like when you reply to yourself, when you have too many messages, and so on. Each hub can receive and reach consensus on its own, it does not need to communicate with any other hub in the network to determine the state, which is what you have to do in crypto and financial systems because you need strict ordering and need to know that Alice paid Bob before Bob paid Charlie.


How to solve the problem of online spam


Tarun: There is an interesting view that blockchain is concerned with the problem of spam to some extent, such as anti-Sybil attacks, which emphasizes that spam will not be tolerated without payment. Spam also occurs in social networks, but it occurs at a different level, right? It does not appear directly in transaction-level activities.


How do you think about the distinction between properties like Sybil resistance that need to be enforced in a network through consensus mechanisms and those that don't? How do you choose between these properties in social networks and financial networks?


Varun Srinivasan: Yes, there is such a distinction, but it's not entirely correct. There are two types of spam in the network that are bad. One is protocol-level spam, and the other is application-level spam. Protocol-level spam is when someone logs into the network and then sends a lot of messages. But everyone has to store these messages, which is bad, and this is the type of spam we want to prevent.


Anna Rose: Is this on the application front or at the protocol level?


Varun Srinivasan: This is protocol-level spam. You come into the network and are able to send so many messages that the people who are running the hubs can no longer run those hubs, and we need to prevent that.


Application-level spam is more subtle, where people run LLM bots that read your content, post messages, and respond. Some people do this in the hope that, “Maybe one day I’ll get an airdrop,” or to try to influence the political narrative.


Anna Rose: Wow, this is a vortex.


Varun Srinivasan: Exactly, this is not about generating billions of messages, but about invading your private space. For example, you post a question about this podcast, “Who listened to this?” and then a bot pops up to respond, which is a bit uncomfortable.


They’re not violating the protocol rules, and they’re not posting billions of messages, but it’s something you don’t want to see in an application, and it’s very important that the application filter it.


Anna Rose: Yes, how do you deal with these issues?


Varun Srinivasan: At the protocol level, we've introduced a concept called storage or storage leasing. This is philosophically similar to the idea of leasing in Solana and some other blockchains, but implemented in a way that makes sense for a social network.


When you join Farcaster, you pay a fee, which is currently about $3 per year, which gives you one storage unit. When you own a storage unit, you purchase it on the blockchain, and the Hub or Farcaster node will allow you to store a certain number of messages. For example, you can store a thousand messages or publish a thousand messages.


What's interesting is what happens when you post the thousandth and first message. Our design is that it automatically expires your oldest message and inserts the new message. So it's not like traditional storage where you have to pay more. This design allows you to continue to participate in the network and continue to interact in the network.


There are two advantages to this. First, the user experience is still great. In most social networks, the latest content is the most important. Even if you don't want to pay extra, you can still keep the messages from the past six months to a year, but the older messages will expire. Or you can pay more and store two years of messages.


Another advantage is that this model actually conforms to the principle of consensus without coordination. It's very simple to implement this rule in CRDT. You just look at the timestamp, and if there are messages that are out of date, throw away the oldest one. So all nodes can agree on this point.


The way we prevent someone from posting five billion messages is to tell them that you pay $3 for a storage unit and you can store 3,000 messages. As more messages are published, old messages expire. If you want to store more, you pay more. This keeps the amount of spam within reason.


Another way to solve this is to control throughput, which is the amount of content that is sent. We set rate limits for each node, such as 500 messages per user per hour, and messages beyond this number are considered unreasonable, and these limits are tied to storage units.


If you buy five storage units, maybe your rate limit will increase to 2,000 or 3,000 messages, but we set an upper limit on the number of messages that can be sent per minute or hour, and we constantly fine-tune it. The two combined prevent any one participant from flooding and overwhelming the network.


Farcaster Hub and Storage


Anna Rose: Suppose you have ten times more real users, rather than speculative users, how many hubs do you need to support 10 times the expansion?


Varun Srinivasan: There are two different answers to this question. First, the current consensus mechanism is both very fast and very slow. What I mean by this is that when you publish a message to a hub, the hub reaches consensus immediately. So anyone listening to the hub will confirm the message immediately, there is no 15 second wait for the block to be confirmed.


The broader, slower consensus is how different hubs communicate with each other, which can take anywhere from a few seconds to a minute to ensure that 99% of the network has seen the message.


Social networks, especially public-facing ones, are not that demanding of how fast messages are sent out relative to blockchains. If your tweet or Farcaster message shows up 30 seconds late, hardly anyone will notice. Because the speed of the network is somewhere between one and five minutes. If it's more than five minutes, people will notice. So this relaxed consensus mechanism is very suitable for social networks.


When our network is running really well, messages can propagate in just one second. When the network is not running well, it can take a minute, but hardly anyone will notice the difference between a second and a minute.


The second thing about the Hub is that one of the very interesting things about Farcaster is that the security of our network is not actually managed by the Hub, but by the L2 that we use. Your identity, signing keys, etc. are all established on the blockchain, and the Hub is really just a data availability layer that makes your signed messages available to other people.


So, unlike blockchains where you need a certain number of nodes to ensure that no single actor can forge data or generate invalid transactions, Farcaster is guaranteed by L2, and you need Hubs just for distributed data availability. If we shut down our Hub or all the Amazon servers go down, there are other Hubs on the network that are running and processing data.


I think the ideal number of Hubs is probably between 100 and 1,000, distributed in different data centers around the world, so that no single event can bring down all the Hubs. In fact, we don't need to add more Hubs as the number of users increases, we just need these Hubs to be able to process more data at the same time.


Anna Rose: I'm curious about how you think about the scaling issue. Because blockchain people are very concerned about this, and they will argue about the hardware requirements and levels. For Hubs, at what scale will it change the way you calculate?


Varun Srinivasan: I think our architecture will change at a certain scale. Farcaster has about 100,000 daily active users today, and I think this network architecture can scale fairly linearly until we get to the range of about 1 million to 10 million daily active users, and then we need to change the way some of the Hubs work.


The biggest constraints on blockchains tend to be compute, bandwidth, and storage, three resources that are constantly being optimized on Ethereum. For the Hubs, it's almost entirely storage and bandwidth, and we focus less on compute. There's not a lot of computation going on other than checking signatures, which are generally very fast. And we don't care about the Hubs as a vector of network security, they're really just storing user data and making that data widely available.


So as the network grows, the amount of data that has to be stored becomes so large that you can't rent a box in the cloud to hold all the data. For example, when the data reaches 30TB, that's a big increase, but then you need to think about other technologies. Sharding is a common idea, and I think it will help us scale.


One of the very good aspects of our consensus model is that it adapts very easily to sharding. Since there is no cross-transaction consensus, all FIDs from 1 to 50,000 run on Hub type A, and all FIDs from 50,000 to 100,000 run on Hub type B, and you can have both type A hubs and type B hubs at the same time.


Anna Rose: That sounds like a really flexible and powerful system.


Varun Srinivasan: That's a very simple version of sharding that is very easy to implement. I think once we get to 1 million to 10 million users, we'll have to do that.


Anna Rose: People sometimes dig up stuff they've posted in the past, but I was wondering if there could be a mechanism where you could highlight and keep the old stuff that's important, while the rest of the stuff automatically expires even if you haven't hit your storage limit. Have you considered that approach?


Varun Srinivasan: We did think about it, and it would be a bit like a mix of Twitter and Snapchat. This would be easy to do in an app, and you could make it a feature in any app, have old messages expire and delete, and buy enough storage to keep newer messages.


Farcaster and Developers


Anna Rose: When someone wants to interact with Farcaster, they usually need to download something, not download Farcaster directly. So what is this app? Does it run a Hub? What are the mechanisms behind all of this?


Varun Srinivasan: There are several categories of developers building things on Farcaster. One category is the people who build Farcaster clients, who are actually building a social networking application for connecting to the network, posting messages, and so on.


The second category of developers are building tools and utilities related to social networks to improve your social networking experience. Like an app that focuses on letting you schedule posts and has all these advanced features.


There's an app called Supercast that does this really well and has a lot of advanced users using it. There are also tools that analyze your followers and see who your biggest fans are. These are very useful tools, but not necessarily full clients.


The other category is people who are building other social networks that create content on their own networks but use Farcaster to distribute it. An example of this is Drakula, which is a Web3 TikTok-like app that has its own social network but borrows Farcaster's social graph.


When you log into Drakula, you're actually logged in with your Farcaster account, and all your friends are there. You record videos, post them on Drakula, and then you can post them back to Farcaster to share with your friends. The power is that when someone signs up, they don't need to start from scratch to find friends and build a network.


These three types of developers have different ways of interacting when building the network, and there are two ways to do this.


One way is that you can run your own hub, which is a hardcore mode, like I know what I'm doing and run my own hub on my device, get all the data, build everything underlying.


The other is that there are services like Alchemy now, such as AirStack, Neynar, etc., which will run the hub for you and provide beautiful APIs, making it easy for you to make a little concession on decentralization in order to build applications faster.


Anna Rose: Does the content published through these services eventually land on a canonical base chain or zone?


Varun Srinivasan: Yes, everything will eventually reach these hubs.


Regarding the small question you just mentioned, considering the history of social networks, one of the problems that is always criticized is: it is difficult to build applications, you will be locked, the platform will say you can't use our data, etc. But if we look to the future, in decentralized social networks, there will be no such problems.


Anna Rose: For social apps, what do you think the app ecosystem will look like? How do they interact with each other now, and what drives the network effects between these apps?


Varun Srinivasan: It's still early days, but I think there are three things that are starting to emerge.


One, access to the social graph, which is extremely important, doesn't exist today. If you go to Twitter and say I want an API to get all of Anna's followers, the documentation says that this exists, but if you try to use it, it was shut down a year and a half ago.


Any other social network doesn't even offer that anymore, they've flatly said, no, you can't have our social graph, which is our most valuable asset. So that's the hardest problem for any developer trying to build a social app. If someone new comes in, I can't even tell you who to follow or reach out to.


So this is probably one of the most valuable reasons for people to log in with Farcaster, because when you connect, you can immediately start recommending content to people, telling them these are the friends you said they were. It's like a public good that helps Drakula and all the other networks grow faster.


The second reason is distribution, if you can use your app to publish content from this person's account back to Farcaster or the Hub, you now have some content that's visible to all of their followers. That's the power of the framework we've built, it lets developers bring their apps into the user's feed, where the user is more likely to interact and use it.


So as a developer, you don't have to solve the hard problem of how to get people to your website. If you build content that goes viral on a social network, you can actually get your app in front of them, which is often much easier than getting them to visit your website, especially if you have a compelling product.


The last point comes from the compounding effect and ecosystem benefits of creating decentralized tools. If you look at tools like Nenar and Airstack and Pinata today, it's getting easier and easier to build on top of them, just like the evolution of Alchemy and Infura.


Day one, these were just Hub APIs and you didn't have to run infrastructure. Day two, it started to feel like we had all these smarter APIs that let you search and pull content. Day three, it became really sophisticated and easy to use, and you could set up web hooks and so on. So it's easier than ever to build a social network now because the tooling and the developer ecosystem is constantly improving.

Anna Rose: Varun, as you talk about these possibilities, I can't help but think back to my past experience running a video SaaS business that used the YouTube API and other web APIs, and the challenge was that this combination could only exist in our own player, and we couldn't put it back on YouTube or other platforms. Farcaster opens up a lot of creative space for app developers to own the social graph and start integrating their own applications into it. However, do you worry that it will become a little messy? Are you worried that too much cross-promotion will make it too noisy or what? Varun Srinivasan: Openness does bring a lot of challenges. You have more applications, some of which are low-quality; you have more users, some of which are low-quality. Decentralization itself means that if you pay a fee and become an equal participant, the network will not judge the value of your transaction. Similarly, the Farcaster protocol does not judge the value of your data. If you pay a fee, you can store your messages on the chain.


But users care about quality, and they actually want a quality filter and a quality standard. That's where apps really need to make a strong stance.


They need to decide: What should I show the user? What should I filter out? What should I present as a notification? What should I put at the bottom of the page to reduce distractions? This is slowly happening in our apps and in other apps on the web.


You'll start to see things like, these are the most interesting replies, and here are a bunch of other replies that might not be as interesting to you, so we'll put them at the bottom of the page and you can expand them.


A similar approach needs to be taken in apps and clients, just like the app store, where you can browse and someone has taste and tells you these are the most interesting reviewed apps. And here are another bunch of apps that you can try if you want.


Currently, the way clients work is that when you publish actual data, casts, or messages, it's all generated in a format that is synced across all the Hubs. The main benefit is that all of this data is always equally accessible and created, and displayed in a standardized way across the clients.


In Farcaster, we built the underlying protocol, the technology that makes all of this work, and we also built the first front-end application, Warpcast. We call this approach to rapid prototyping and development of new features product-led protocol development.


When we come up with a new feature, we actually prototype it in a centralized way in our clients to test whether users like it. If it takes off and is successful, which happens about 10 to 20 percent of the time, we turn it into a protocol-level feature and ship it.


If it doesn’t work, which happens a lot in social networks because you don’t always know exactly what users want, we go back to the drawing board and redesign it.


This pattern probably exists across all clients. People will try out some new feature, and if it works for their users and looks cool, they’ll try to make it into the protocol so it works in all clients. Sometimes these experiments succeed and create something really cool, and sometimes they don’t, and people go back and iterate on it.


Farcaster frames


Anna Rose: What about frames, which were experiments in Warpcast, have they now been rolled out everywhere? Or is it still in the experimental stage?


Varun Srinivasan: Frame actually became a really good example, and when we built it, it was completely open and protocolized, which is one of the things that made Frame really cool.


The history of Frame is actually really interesting. It started as a really simple idea that evolved from people sharing NFTs on Farcaster. In 2023, we noticed a lot of people posting NFTs that they were collecting. When they showed up in the feed, it looked a little bit cluttered because Facebook has an open graph standard for rendering links, which are always big square images and titles.


What we figured out was that if you share a link to Zora or another NFT platform, we could take the image, display it in a better format, and add a mint button that takes you directly to the minting page.


So we released this change that said in your HTML markup, you have the standard Facebook Open Graph tags, just add a couple more tags declaring this is an NFT, and we will render it better in the client. It's just a very simple modification to the HTML standard.


Anna Rose: You keep mentioning Facebook, so I'm curious, is this the original Facebook standard?


Varun Srinivasan: Yeah, Facebook pioneered this open graph standard in 2005 or 2006, and they said if you add these meta tags to your website, we will render an image instead of a normal link.


The standard has remained relatively unchanged for the past 15 years, but when we released this NFT change, Zora immediately integrated it. What was very cool was that within a day every other NFT platform integrated it. Because it was so easy to implement and it gave them more distribution channels for their products.


Anna Rose: How do you think frames will grow over time, will people use them as small embedded applications, or do you think people will start gluing them together into long-term experiences, because I've always wondered if this will change the gaming element of social networks, where it's almost long-term interactions, like a game. Or will it be very short-term, like click here to claim your Degen, and how do you think about the duality of those two?


Varun Srinivasan: When we launched frames, we hoped that there would be two kinds of applications. The first was on-chain transactions, because historically it's been very difficult to get people to do on-chain operations on mobile apps. We wanted to build the best way to bring transactions to you, connect to your wallet, and let you perform this cycle efficiently.


That part is actually working pretty well, there are a lot of frames for transactions. There are a lot of actions like claiming airdrops, but there are also bots like Payflow and Paybot that make it easy to do things like send funds to others as easily as Venmo.


The second part that we also hope will take off, but has not yet fully materialized, is applications that extend the social experience. These include things like creating polls to more easily query your audience or inline articles. I say it's not yet fully materialized, but there are actually some, just not as widely distributed as we would like.


Anna Rose: The features you mentioned do have great potential, not only making it easier for users to conduct on-chain transactions, but also enriching the social interaction experience. I think these features will become more and more accepted and used over time, especially as you continue to improve and promote these tools.


Varun Srinivasan: Yes, that's right. We will continue to optimize and promote these features so that more developers and users can see their value and hope that they can be more widely used. In this way, the Farcaster ecosystem will be richer and more interesting.


For example, SurveyCaster or Pondered have built a lot of these survey bots, Paragraph has built a lot of functionality for reading articles inline. The biggest challenge we've noticed is that people want a tool that's like a frame builder or creator.


What we're looking at is how to actually provide distribution for these applications so that someone can easily plug into this application when they're writing something. We may have something coming out in the next few weeks to make that process easier.


The third thing is to make frames composable with each other, which is technically possible, but we haven't seen a lot of that happen yet. I think one of the reasons is that the performance is a little slow because of the way frames are built.


Every time you click on a frame, the way frames work is that they generate an image for each page of the frame. This is actually a little bit of a slow process. When you have to deal with more than three or four or five pages, it starts to become very cumbersome.


Being used to mobile apps, things happen immediately when you click. So we're thinking about building a new rendering interface where you're no longer generating images, but you're able to generate small web pages or iframe-type things, which are very fast. I think that's a big barrier to these long frame experiences, today it's too slow for people to stick with it.


Tarun: How do you think about the isolation and non-isolation mechanisms inside the frame? For example, if you have persistent keys stored in the frame or signatures that need to be invalidated, how do you deal with potential security risks such as XSS attacks or code injection?


Also, how do you balance the issue of cryptographic security with the poor mobile security, especially when it comes to lifecycle management and key management? How do you deal with these additional security burdens while building the best user experience?


Varun Srinivasan: Yeah, the way frames work with the image model actually makes it relatively simple from a security perspective. First of all, when you're looking at the frame, the frame doesn't even know you're looking at it. So there's no privacy breach when you're just looking at the frame in the feed.


But when you click it, you send a signed payload that says, "I'm Anna, I clicked this button, and this transaction went through." You do get a signed payload, but it's designed to be very explicit that you clicked the button, and it proves to the user that it can't be used for anything else.


There's currently no way to use this to unlock funds or do other more complex or dangerous operations. So you just get these signatures that verify that you did something. The frame can then return a transaction to you.


This is where security can get a little scary because you can have a malicious frame that returns a wallet stealer or encourages you to do something bad.


The way we deal with this is we insert transaction scanning, using tools like Blowfish and Blockade, which are very effective at identifying transactions that steal funds and warn you before the user clicks on them.


We often see people in the backend come in, try to test a stealer and release it, and then when they fail, they never try to release it again. People do want to do these things, but they realize it's not that easy anymore. This is the current model.


I think if we went to the iframe model, things would get a little more complicated because you can do a lot more things there, you can store data, you can have background content. We don't have a good answer right now to build that isolation, to be honest.


That's one of the reasons why we might choose to use a very simple SVG or HTML CSS interface instead of an iframe, because it allows us to constrain the security model a little bit better. Also, iframes have performance challenges on mobile, especially if there are three or four of them, it's pretty hard to render them quickly.


Anna Rose: When will there be zkFrame? What exactly does zkFrame mean?


Varun Srinivasan: When we talked about ZK and Farcaster, I think there are two interesting applications. The first is literally zero-knowledge, meaning you have a popular social media account and people know you're the founder of a famous podcast in the crypto space.


But you want to be able to post content without revealing your identity because you have something really sharp to say. Some way to prove your identity with zero knowledge that this post is from a verified person.


I think this is a really cool idea to explore. We tried it in 2021, but it was too complex and hard to implement quickly, which led to people not using it much. Because it's a feature you use once a month or a year, you don't often say something particularly sharp.


We haven't fully implemented it yet, but as ZK becomes easier and faster, in the next six months to two years, this will be built as a feature in some application, and people will use it, and it will be very cool.


The second application, I think, is at the protocol level. As blockchains become cheaper and cheaper, as we are able to do more ZK in terms of verifiable computation, and as Layer 2 becomes more and more efficient, there may be a hybrid hub model where we use a fast consensus model to quickly store all this data.


But we also have an archive model where the blockchain is used for backup purposes, storing older historical data, and using the ZK network to store and process this data because they have actually reduced the storage and consensus and processing time fast enough that some of this data can actually fit. Those are two ways I think ZK can come into Farcaster.


Anna Rose: When I execute a frame, this is all done on the client, there is no storage on the hub, does the frame save any storage or computation on the hub? Varun Srinivasan: No, the frame is actually the interaction between you and the server that runs the frame, and what happens as a result of that. Simply put, the frame is a slice of their webpage that is specifically designed to look like what you see. You give me an image and four buttons, and I can click on them. When you click on them, it just goes back to that hub like an HTTP request. The cool thing is, that request is cryptographically signed with your Ethereum Farcaster identity key, so that server always knows that you are interacting with it. And then you just interact back and forth with that application, and it's all private and only between you and that application. As a result, you might get a transaction, and the application might say, okay, now you go to the blockchain to make this purchase or send this money, which of course is committed to the chain. So, the interaction with the frame is very secure and private, and every step you take with the server that runs it is cryptographically protected to ensure that you don't leak any sensitive information while using it.


All interactions between frame servers are purely between you and the frame server. The only part on the Hub is the link to the frame, indicating that this frame exists in this post and comes from this website, and can be reconstructed.


All social networks that exist today can be thought of as a spectrum from private to public. On the left you have Snapchat, Facebook, where you communicate primarily with people you know, and you expect that content not to be leaked. On the right you have TikTok, Twitter, where you want that content to spread as much as possible.


Farcaster's architecture doesn't make it easy to build the former today, everything is public and unencrypted, which makes it hard to actually do some things.


But I think privacy, whether it's through some form of ZK or other forms of encryption, is going to become increasingly important, especially as we get into private messaging services and when I want to have private groups with my friends. Those don't exist at the protocol level. So I think this is a very interesting and important area of research for building more types of social networks.


Farcaster and Blockchain


Anna Rose: I heard that Farcaster's activities were influenced by Base, so are you building on Base? Varun Srinivasan: One way to think about the Farcaster lifecycle is that when you sign up and create an account, the first thing you do is make a transaction to the blockchain. We actually use the OP Mainnet, which is part of the Optimism stack, which Base is also part of. When you create your account, you get an account ID, public key, and private key, and that's basically the only time you need to interact with the blockchain when using Farcaster. Anna Rose: So that means that other than creating an account, all other activities and interactions are between the Hub and the frame servers. Varun Srinivasan: Yes, it is. Account creation and key management are done on the blockchain to ensure security and immutability. But the actual message publishing and interactions are handled between the Hub and the frame servers, which allows for more efficient handling of large amounts of data and interactions.


Other than that, all you do is sign messages using the keys you set and send them to the Hub. So they are never blockchain transactions, but rather what we call Farcaster messages. They are sent completely off-chain and at no cost.


But the cool thing about Farcaster is that you can integrate with anything you like right inside the app. There's so much activity and growth in the Base ecosystem, especially around NFTs, artists, trades, and projects, and a lot of that has made its way into Farcaster through frames.


Farcaster is very popular in the Base ecosystem, and the Base channel is one of the largest channels in Farcaster, so it's actually absorbed that philosophy.


But Farcaster also supports, for example, Solana, and you can connect a Solana address and transact on that blockchain. So while the identity layer is built here, we can interoperate with any blockchain and make your experience and transactions on that chain feel very native in your social app.


Anna Rose: So why did you choose Optimism? Would you consider switching? Varun Srinivasan: Honestly, we can build on any blockchain right now that's cheap enough and it will work fine and people won't notice the difference. So if we switch from Optimism to Base or Solana, it will work reasonably well. These chains are fast enough that most of the costs and execution are not noticeable to the user or don't change the experience. Our thinking is, we want to be on a chain that has low transaction costs so that when you sign up, the fees are not prohibitive, and the network is fast enough, scalable enough, decentralized enough that you have credible ownership of your stuff. Another benefit is that we are not tied to a certain chain. Let's say tomorrow we decide that we have to migrate to another chain, something serious has happened or some other great thing that we need to go over, then we can migrate. We can say, okay, we're going to migrate our data to this new chain, copy all the data, resync everything.


One of the reasons we chose Optimism and Base is because the communities are very aligned with the philosophy of Farcaster and have been very supportive and engaged in the early Farcaster discussions, and a lot of our early users came from these communities.


Anna Rose: That's interesting, would you consider having your own L2?


Varun Srinivasan: That's actually something we've thought about because other Optimism projects like Worldcoin are now doing their own L2. I think in a world where we generate a lot of transactions, it would make financial sense to have our own L2 because being able to capture those fees would allow us to keep costs down for our users.


So if we had about a million signups a day, we would say, hey, it's actually more cost-effective to run the L2 for ourselves and then pass those savings back to the users. But in the current world, it's more cost-effective to build your own L2 than to build it on the OP mainnet or on these chains, rather than spend more time, effort, and trouble to build your own L2.


Anna Rose: It sounds like your only interaction with the chain is when you sign up, not in the texts and messages that you send and receive.


Varun Srinivasan: Exactly.


Anna Rose: Can you imagine other on-chain activities outside of signups being incorporated into this system in the future?


Varun Srinivasan: There are a few things that are already happening. One is account recovery, which is a classic social problem, and everyone has lost a crypto wallet at least once in their life. It's very painful if you lose your followers and have to rebuild from scratch. So today when you sign up on Farcaster, you can nominate a second wallet that controls your identity and say this is my backup. This recovery actually happens on-chain.


There may be more parts of Farcaster that move to chain in the future. One area that we are actively decentralizing is channels, where you can create and publish content around a specific topic in these channels or communities. This product is in the early stages and is still a feature of Warpcast at the moment, but we are trying to move it to chain so that the ownership of the channel is actually something on-chain.


If you develop and create a community and then one day you want to give it to someone else or sell it or share it with your partners, this is an on-chain artifact or contract that you can transfer ownership of, which is something we may do on-chain soon.


Anna Rose: There is a very large ZK channel, and I have been wondering if this can be found in many different applications, but it sounds like it only exists in Warpcast at the moment.


Varun Srinivasan: This content lives in all applications. When you publish in a ZK channel, you are actually creating a cast, tagging it as ZK and publishing it there.


The part that is unique to Warpcast is the management and ownership of channels. Who has the power to decide what appears in the feed? Think of channels as curated spaces. Anyone can post in a channel, but the leaders or moderators decide what appears in the home feed, so they are a refined presentation of the content. Moving this auditing part to chain is something we are focusing on right now because it gets into how all the data is exposed, how ownership is tracked, etc.

Anna Rose: I remember at one point identity existed in multiple places, like Solana and Optimism, is that correct? Varun Srinivasan: We started originally on Testnet, I think it was Sipolia, and then we moved to Optimism. So we've always existed on a single chain at some point in time, but we moved between chains. What you might think of is that we allow you to connect your wallet to your Farcaster identity. So you have one main Farcaster account, but you can say, hey, I own this Solana wallet, I own this Ethereum wallet. Anna Rose: Like if there was enough demand to sync across multiple chains, what would it take to get to that point? Varun Srinivasan: That's a good question. I think the main reason is that you want to build a smart contract that needs to check identities in real time in the path of a transaction to do something interesting. If you wanted to do that, it's only possible today on Optimism because no other chain has the true state of the Farcaster identity.


What you could do is build a mirror contract that you trust and say, hey, I'm going to proxy the state changes of each Farcaster identity contract to another chain. It's certainly possible to bridge the state of Farcaster identities between multiple chains in this way so that they can be combined with all of these contracts, but that requires some trust properties to make sure that nobody breaks the rules.


Network Operations at Farcaster


Anna Rose: There was a lot of movement to Farcaster earlier this year, and I was no exception, and I jumped on the bandwagon when everyone was talking about it. I think it was in January or February. But since then, there's been at least one narrative that people are returning to crypto Twitter. I'm curious, from your perspective, what the trends are actually like? Was there really a big increase in January? What caused that? And what the trends are like in general?


Varun Srinivasan: If you look at the growth chart for Farcaster, we were basically flat for most of the last year. Frames launched in January and that was a lightbulb moment for a lot of people, with a lot of hype and excitement.


Then Farcaster DAU growth went parabolic, we grew 10x in about two weeks, which was pretty good. I think as the frenzy died down, a lot of the people who joined because of the excitement found that there wasn't really anything for them here, and they went back elsewhere.


I think we're still about 4 to 5 times higher than when we first started, but we did have some people going back to Twitter or other apps.



Fundamentally, I think it's very hard for Farcaster to compete directly with another social network. In fact, I think that attempt has never really worked. You can't be an alternative to Twitter and beat it at its game. Farcaster has to be attractive and different and stand on its own merits.


So the things that we're investing in now and that we think will drive growth for Farcaster are making blockchain transactions native and powerful, making blockchain identities feel like first-class citizens in applications. You own NFTs, they're part of your collection. You have trades, you can do that in your feed. You want to send money to people on Ethereum, you can do that directly from your Farcaster app. All of that is very different from interacting on Twitter, and the blockchain component feels like a native part of your everyday experience.


Our focus is on the people who are doing these things or want to do these things today, how they use Farcaster. We want to make Farcaster an attractive platform for those users by providing these unique features and experiences.


For people who want PvP, I think crypto Twitter will continue to exist for a long time. I don't think people are going to suddenly migrate to Farcaster and start all these discussions there. What's really attracting people to Farcaster is the more local crypto content that's not happening on crypto Twitter.


Tarun: What's interesting is if you think about Twitter, its origins were really as a place to get news earlier than other places right? What do you think is the factor that makes people go to Farcaster in the first place for information or knowledge, because I feel like different social networks will always have some advantages in that regard.


Varun Srinivasan: We haven't really figured that out yet, to be honest. People joined Farcaster in the first year just because it felt like a fun group chat. It was a group of people who were about two or three degrees of connection, like Dan or myself, doing similar things in the crypto space, and it felt like a fun place to be. I think the momentum of that group chat has grown and coalesced, and now instead of 100 people a day, we have about 10,000 people a day.


But I would still say that you won’t hear about the latest crypto project launch by coming to Farcaster first, you’ll see it on Twitter first, or it will be cross-posted very quickly. So I don’t think we’re going to beat Twitter for news, at least not in the near term.


I think we’ll win on unique content, things you can’t do elsewhere. For example, if someone launches an interesting on-chain token or on-chain thing that you can interact with, you’ll come to Farcaster because you can click a button in the app and do that thing on chain, which you can’t do on Twitter. This kind of content will drive activity on Farcaster and give users a reason to use Farcaster every day.


Anna: Are you concerned about the need to build similar moderation mechanisms, at least for the client side. We just talked about spam, but we didn’t really talk about, for example, scams or malicious content that is common in social media projects.


Varun Srinivasan: I think that’s a very important part of what we do, and we have to do it well.


If you think about the challenges of moderation, I think there are a few different categories. First, the most commonly talked about is really bad content. Farcaster is a text-only decentralized network, which means it does not directly store images, videos, or other data files.


Instead, it only stores links or pointers to these contents. This design makes Farcaster's data storage more lightweight and also reduces the burden of storing and transmitting large files.


It turns out that most video and image hosting sites do a very good job, such as Cloudflare, providing powerful content filtering capabilities. Users can choose to filter out unwanted content, such as certain sensitive or inappropriate images and videos. This feature did not exist a few years ago, but it has become a common service for cloud service providers.


This means that applications built on Farcaster can take advantage of these existing filtering mechanisms to process and filter content. This is different from traditional social media platforms, such as Facebook and Twitter, which usually need to build their own content moderation and filtering systems from scratch.


The second level is that for spam content, we need to build a lot of reporting, review, and control tools on the Internet, and we have already started to do some work in this regard.


Because all the data is open, people are actually building open source tools to help solve these problems. There is a company called OpenRank that is building ranking data for Farcaster. If you are building a new application, you can directly access OpenRank's rankings and immediately know which are high-quality users, which are spam users, and how to generate my content flow.


So I think a very powerful feature is that there are a lot of people looking at this problem and there is a financial incentive to build, which means you can start directly with something that is already available, while a lot of other smart people are spending all their time optimizing this stuff.


Tarun: I think open source means fairness, a lot of people are working on this problem, but what if there is a large group of people who have some kind of intention or ulterior motive?


Varun Srinivasan: Will this very decentralized community be able to prevent something like this from happening? The answer to this question really depends on which way you think the problem is solved more efficiently.


Do you think these problems are best solved by a company like Twitter or Facebook, who have an internal team analyzing all this data and have very tight controls that can shut everything down? Or do you think it's better to have everything out in the open and have a group of smart people analyze it and come up with the best solution?


I think historically, in the short term, the centralized, fast company always wins. But in the long run, open decentralized protocols get better and better over time and will ultimately win for a longer period of time, and that's what we believe.


Yes, there will always be attempts. If a social network is successful enough, there will always be people trying to manipulate attention and control how people interact. But if you make the data public and make it easier to find, adopt and modify, then that may be more effective in catching and identifying these problems than relying on a single party operating behind the scenes.


I always feel that the most effective decentralization is when there are some guiding principles, or rules of conduct, culture, etc. to keep it a little balanced. If I have a public database, then the question is more who wrote the query? What view did they show me? I tend to think that in certain interactions, open public frameworks are much better than those where I don't know what view I'm getting.


Look at the history of social networks, like MySpace, which chose many of the query parameters that the database provides to people, like I chose the videos on my page, I chose the user interface layout.


On Facebook, I don’t choose any UI, I just choose a picture and a little text, very limited choices.


On TikTok, Instagram, I basically don’t choose the content flow anymore. I don’t actually influence the content I see, it’s not linear or clear to me at all.


We went through this process where I had the database, I had a set of queries and views, and I had less and less control over those queries. That's a very abstract way to explain it, but it's a great framework that shows the fluidity of choice in social networks, always decreasing.


I think the right answer is not to go back to a model where users have complete control over everything, because people don't want that. The right answer is to give people choice, because there's going to be 10% of users who have staked their lives on social networks, who make a lot of money, who care very, very much about these issues, who want those switches, and who should have the choice.


Then there's the 90% of users who are casual users who just want the simplest experience, who just want to use the app, have a generally positive experience, and don't want to think about those switches.


There's a running meme on Farcaster about the preference of declaration versus disclosure. We kept running these little experiments, and we found a few things out of that. One of the most common things people would say is I want complete control over who I follow, I just want to show what I follow. That seems like a reasonable request, right?


But here’s the thing. Dan posted a tweet asking if you recently stopped using Farcaster, please give us some honest feedback on why you stopped and what bothered you. Four of the many people who responded said “I saw a lot of DEGEN stuff in my content stream, and I wasn’t really interested in DEGEN tokens, so I stopped using the app.”


I went to check out the four users, and each of them followed the DEGEN channel, followed the DEGEN founder, and followed a bunch of DEGEN tokens. This wasn’t the user’s fault, but the nature of social is such that you follow someone because something made sense at a certain point in time.


We can’t expect users to process this every week, we have to infer your interests based on your behavior and use your following as declared preferences, and then find the revealed preferences from that and turn it into a graph.


I think this is the ideal experience for 90% of users. But the 10% who want full control, different clients, all the features, should be able to get that. And both types of users should coexist on the same social network.


Anna: If you can choose, for example, you can choose the features you want, if you don't want private likes, then use a client that shows who liked it; but if you want private likes, use a client that never shows likes. This freedom is missing in a lot of social networks, but I think the problem is that content curation in a decentralized network is very difficult.


How do you think content flow in the decentralized web will evolve in the long term? This is obviously a highly speculative perspective, but how will recommendations, content flow, automation change in decentralized social networks?


Varun Srinivasan: The way we've worked so far is that we started with a very simple, literally reverse chronological content flow of followers. And then we evolved that into an affinity-based content flow, where we say, "Hey, these are the people you follow, but these are the people you interact with the most."


So if you have a thousand unread messages, we'll pop the content of your favorite people to the top. You'll still get the same content flow, but there will be a ranking.


We've now evolved into a smarter machine learning model that takes into account more parameters and is smarter about how it handles unread content, shows it to you, and starts adding secondary content. For example, “Hey, Anna and Tarun liked this, you follow them, you might also want to see this post.”


Content stream generation is really, really hard, and I don’t think we can expect every client to build this thing from scratch. Some companies are evolving in this area, like OpenRank is already doing this, Neynar is also doing it, but now there are companies that provide content stream APIs, you can give them a user account, and they will give you a content stream. When you start building your client, there is already a ready-made content stream, which I think is very important, like building infrastructure.


Anna: Do you think social networks should have a unified objective function, or should they have different objective functions for different user groups? For example, platforms like TikTok will classify users according to their interests and optimize different objective functions for each category: users who like dance videos have engagement as the main goal, while users who like to watch restaurant reviews have browsing speed as the main goal because the platform makes money from it. How do you see this evolution, and the trend of social networks needing to customize objective functions for small communities?


Varun Srinivasan: I think that's a really good insight that your revenue model often drives you to optimize your content, which in turn drives how the content stream works.


At the global content stream level, I think there will be clients that are focused on different ways of growing and making money. There are some clients that are designed for premium users, about $100 a month, because you use all the premium features. All of their revenue comes from these premium users, so they will give you all the granular control that you want because they do want to give you control.


There are also clients that make money through advertising and they will say, this is more like Facebook, we optimize for click-through rate, engagement, page views, our model is built around that, so those clients will focus more on that.


Anna: I think one interesting aspect of Farcaster is the channels, each channel is a community built around a topic, and the channel administrators can curate how these channels run. This is one of the most interesting or differentiating aspects compared to Twitter, there will be these sub-streams of content that are curated by individuals using various tools. They will apply different levels of moderation, style and filters to give you different experiences, which I think will be a very cool experience.


Tarun: I feel like there's more to dive into here, like identity and proof of some of the actions that you actually do on Farcaster to further write an identity program, are you exploring anything in that regard?


Varun Srinivasan: I think identity is a building block that's emerging now. My view is that good identity systems always evolve from widely used products. It's very rare that someone can say I'm going to create an identity system and then have it be widely adopted.


Of course, if you're a government you can monopolize something and say everyone needs a passport, but other than that, every universal identity system, like email, Facebook login, Google login, all started as a consumer product and gained value because enough people used it to be used to log into other things.


And Farcaster is starting to get to that point where we now have enough users that a lot of companies are integrating Farcaster login. I think that's a very powerful building block because now you can start with your profile photo, start with your follow graph, start with all of that data, and it can enhance any identity you already have.


So I think over the next year Farcaster identity will evolve and more and more people will probably integrate Farcaster login because it makes their applications better and their new user experience feels a lot better when they can get data from you.


Original link


欢迎加入律动 BlockBeats 官方社群:

Telegram 订阅群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方账号:https://twitter.com/BlockBeatsAsia

举报 Correction/Report
PleaseLogin Farcaster Submit a comment afterwards
Choose Library
Add Library
Cancel
Finish
Add Library
Visible to myself only
Public
Save
Correction/Report
Submit