Summary

In this week’s episode, Anna and Tarun meet with Varun Srinivasan, co-founder of Farcaster. They explore the Farcaster project, discussing the ideas that prompted its inception and what separates it from existing social media networks. The conversation explores the design space that Farcaster opens up for devs and the kinds of applications that can be built on top of it.

Here’s some additional links for this episode:

ZK Hack Montreal is happening Aug 9 – 11! Apply to join the hackathon here.

Episode Sponsors

Gevulot is the first decentralized proving layer. With Gevulot, users can generate and verify proofs using any proof system, for any use case.

Gevulot is offering priority access to ZK Podcast listeners, register on gevulot.com and write “ZK Podcast” in the note field of the registration form!

Aleo is a new Layer-1 blockchain that achieves the programmability of Ethereum, the privacy of Zcash, and the scalability of a rollup.

As Aleo is gearing up for their mainnet launch in Q1, this is an invitation to be part of a transformational ZK journey.

Dive deeper and discover more about Aleo at http://aleo.org/.

If you like what we do:

Transcript
[:

Welcome to Zero Knowledge. I'm your host, Anna Rose. In this podcast, we will be exploring the latest in zero-knowledge research and the decentralized web, as well as new paradigms that promise to change the way we interact and transact online.

This week, Tarun and I talk with Varun from Farcaster. Farcaster is a Web3-native social network which open sources a social graph enabling app developers to build on top of it without a controlling intermediating party. We discuss what inspired the project, how different Farcaster is from existing social media platforms, what design space this opens up, and what kind of applications could be built on this in the future.

Now, before we kick off, I want to let you know about ZK Hack Montreal. It's an IRL ZK-focused hackathon happening on August 9th to 11th. ZK Hack is another project that I'm involved in. It's a hub for ZK learning and as part of this we produce hackathons. ZK Hack Montreal is our fourth time hosting this hackathon series and our first time hosting it in North America. Some of you may be attending SBC the week leading up to the ZK Hack weekend. Luckily, it's just an hour flight to Montreal from New York, so you can easily do both events. Plus you get to hang out in beautiful Montreal for the weekend and hack on ZK tools, meet experts in the field, and hopefully meet your future collaborators and co-founders at ZK Hack Montreal. We already have some amazing partners like RISC Zero and Polygon lined up and many more. So you should keep your eye on zkmontreal.com for more info about the event. Applications are open and we hope to see you there.

Now Tanya will share a little bit about this week's sponsors.

[:

Gevulot is the first decentralized proving layer. With Gevulot, users can generate and verify proofs using any proof system for any use case. You can use one of the default provers from projects like Aztec, Starknet and Polygon, or you can deploy your own. Gevulot is on a mission to dramatically decrease the cost of proving by aggregating proving workloads from across the industry to better utilize underlying hardware while not compromising on performance. Gevulot is offering priority access to ZK podcast listeners. So if you would like to start using high performance proving infrastructure for free, go register on gevulot.com and write ZK podcasts in the note field of the registration form. So thanks again Gevulot.

Aleo is a new Layer 1 blockchain that achieves the programmability of Ethereum, the privacy of Zcash, and the scalability of a rollup. Driven by a mission for a truly secure Internet, Aleo has interwoven zero-knowledge proofs into every facet of their stack, resulting in a vertically integrated Layer 1 blockchain that's unparalleled in its approach. Aleo is ZK by design. Dive into their programming language, Leo, and see what permissionless development looks like, offering boundless opportunities for developers and innovators to build zkApps. This is an invitation to be part of a transformational ZK journey. Dive deeper and discover more about Aleo at aleo.org.

And now, here's our episode.

[:

Today, Tarun and I are here with Varun Srinivasan, cofounder of Farcaster. Welcome to the show, Varun.

[:

Hey, thanks for having me. I've been a long-time listener and it's exciting to be on, actually talking with y'all.

[:

I have to admit to you, just to start, I am a very much a latecomer to Farcaster. I had people pinging me about it maybe last year, and I didn't respond until this year. And I really did feel when I joined, like the party had started. I felt like there was a lot of action, I felt a little bit out of it, and I was like, oh, wow, I've been missing it all this time. Tarun, I think you've been on for a while, though. You've been signed up for longer than me.

[:social media diet will be in:[:

Interesting.

[:

One of the funny things, I mean, we've been working on Farcaster for a little over three years now. Every year, every season, there's always someone who feels this way, and by the next year, they're the OGs. And I think we're still very, very early in a lot of ways, and there's a lot more stuff to happen. So even if you feel like you're late to the party, I can guarantee you, I can hope that you're going to feel very, very early in a few years.

[:

I have classified myself as a... what is it? Late-early adopter or an early-late adopter. Like, I'm definitely not early-early adopters, usually just generally of products and stuff. I'd say the same for blockchain. The only one where I could say there's an exception is ZK, I think I was a pretty early adopter.

[:

Yes.

[:

But the only one, I mean.

[:

You committed to doing a podcast extremely early. I mean, what was... other than Groth16, the paper being out, plus a couple test implementations from Starkware, was there... What was alive when this podcast started?

[:

So I don't think Starkware was alive, actually.

[:

Okay. Very good.

[:

But Bulletproofs existed, as far as I know. So there were a few variations on the concept.

[:So that was what,:[:

2017 was when the show technically started.

[:Oh,:[:Knowledge Podcast in January:[:

Got it.

[:then the ZK Summit was March:

I think it's important for us to introduce for the audience what Farcaster is. I know we just kind of talked about our own experience with this, I'm assuming our audience is aware that it's something to do with a social app, but, yeah, what is Farcaster?

[:

So Farcaster is a decentralized social network, and if you download one of the apps that connect to the network, Warpcast, and use it today, you'll see something that looks and feels like 80% Twitter, 20% Reddit. There's a feed, people are posting stuff, they're talking to each other. It's primarily text-based. And there's also communities where people can organize into subgroups and do interesting things in more niche categories. That's what Farcaster feels like.

But what it is, and the decentralized component of it is that there's no one server that controls or runs Farcaster. There's actually many hundreds or thousands of different nodes that all have a copy of the Farcaster network. And what that means is for developers and people building on the network, they have sovereignty and freedom to be able to build the applications that they want, knowing that there's no one that can cut off their API access or shut them down. And that's one of the reasons that Farcaster, we call it the open or the ‘programmable social network’, is like you can actually build on top of it, and you have confidence that the things you're building and the apps you're creating are going to be able to reach your users and there's no intermediating party that sits in between.

[:

There's like Mastodon, which has kind of come out as this alternative to social media, also decentralized but more federated. I actually used that a long, long time ago. I remember the issue there was that you could almost have duplications of your identity in these different servers. It was like no unified sense of truth. But in the case of Farcaster, at least it seems like there is. Is there? Is it just built completely differently?

[:y. I mean, it started back in:[:

Yeah, yeah, yeah.

[:

And then we had Mastodon ActivityPub. There's been Secure Scuttlebutt. There have been a bunch of very interesting approaches that have tried to decentralize it in different ways. The other very interesting thing is social media is kind of the one form of communication or media that isn't actually decentralized. Because if you think about everything else, email, the Internet, television, radio, SMS, they all have this sort of protocol and multi-party communication, and that's never existed for social. It's always been single player. If you want text, you go to Twitter, if you want your friends, you go to Facebook, or maybe it's Snapchat now. And I think the reason for that has always been that technology has lagged behind what people wanted in quite a significant way, where it wasn't really possible to build a lot of the stuff that makes a good social networking experience. Because the traditional way that social networks decentralized was what you can think of as federation.

So this is the idea that like, I run a server, you run a server, maybe Tarun runs a server that we both connect to and use. But this leads to the fragmented identity problem that you talked about where you now have to know that someone lives on a different server and how to reach them and how to connect to them. It also introduces some very subtle challenges with how you collect data. So one of the biggest problems in building a decentralized social network from an application developer's perspective is I want quick and easy consensus. I want to be able to ask the question, what are the last ten things that somebody said, and be able to get that answer definitively and quickly. And if you look at the Internet, which is another federated decentralized network, that's actually a really hard problem. Google solved that problem. And the reason it's hard is because there are hundreds or thousands of millions of servers that are all producing different content and being able to fetch all that data, collect it together, deal with all the inconsistencies and challenges, and say, this is what actually people are talking about, is really, really hard to get right. And so that's kind of been the challenge with using federation.

The second approach is to use blockchains where you can say, like, hey, Bitcoin and Ethereum have actually figured out how to get all of this data and put it on a single machine. So when you run an Ethereum node, you actually have quite literally every single transaction in the world that has ever happened on one box. And then you don't have fragmented identities, you don't have to ask the questions of where is this data? It's all here in your machine. And so it's this very nice, convenient location. The challenge with blockchains, or just putting everything social on a blockchain is, one, it's expensive. You actually have to pay for every transaction. And if you go and tell a user, hey, you have to pay for every post, that's actually a level of friction that they're not excited about. People want these actions to be fluid, interactive. You want to encourage people to talk to each other. The second challenge tends to be that if you look at something like Twitter, people are posting about 100,000 updates a second. That's how many operations are happening in real time. And even the fastest blockchain today is like 100x slower than that. So doing that today is not really going to work that well.

And one thing that people say is like, look, blockchains are going to get faster and they're going to get cheaper, so why not play the long game? Why not wait it out? 100x will come in the next two, three, five years. And I think there's an interesting second order challenge there, which is, one, blockchains have to deal with double spend. You can't allow the same money to be spent twice. And so that limits the strategies that you can use for consensus. Social networks don't quite have that problem. The second challenge is blockchains are inherently financialized. When you build a sort of Turing-complete programmable chain, people can do whatever they want on it. And so even if fees go down, someone might build something that is financialized, that is orthogonal, that creates a lot of demand and drives up prices and makes the network congested. I mean, you can see how this happened with Bitcoin Ordinals, with other things. And so it would be very frustrating if you're on a social network and you're trying to post and it's like, sorry, you can't post, somebody's buying this NFT. And so separating the social data layer from the financial layer seems like actually a very required thing for the user experience to feel good.

[:

I mean, in what you've just said, I have so many questions and sort of threads I want to pull. But actually, before I do that, I want to understand a little bit about what got you into this in the first place. Why are you working on this? Like have you worked at Twitter or something before?

[:led Moocher. This was back in:[:

Yeah.

[:

But I think over the next few years, all of these social networks, Facebook, Twitter, everybody kind of shut off their APIs and we kind of went into the dark days of social developers and it became clear that it was infeasible to build a business. You saw Zynga became this huge public company and then nearly get killed by Facebook and all of this stuff, and it became this like... well, nobody serious builds on a social network because you don't have control over the APIs, and that dream sort of died out.

And I think after leaving Coinbase... So my cofounder, Dan and I both worked at Coinbase for about five years. That's where we met each other. We were thinking about what got us excited and what we wanted to go build and work on next. Like if we wanted to take a 10-year bet on building something that we thought would be very important for the world and for society, I think both of us got a lot of energy from thinking about social. And it's like, why is this consistently the only system that isn't decentralized as far as communication system goes? And why hasn't this happened yet?

And as we started to pull the threads, it felt like the timing was right. Like Ethereum and blockchains had solved sort of these core consensus problems and showed that you could actually have the single node global state model, which seemed really cool if we could adapt that to social in some ways. And it also felt like the timing was right in terms of people's desire to want to be on decentralized networks. And we just felt like this is the most interesting thing we could be working on. And so we've been doing that for the last three years.

[:

Cool. I want to understand where you start from, though. So you start... you have this idea that you're going to be doing a social network. There's now some scaling tools. But I think if you're talking about three years ago, even had the rollups been rolled out? Like even the stack you're built on today, I don't know if it already existed or it was sort of still a dream.

[:

No, it didn't.

[:

Okay.

[:ed kicking around the idea in:

And so we started off by saying, okay, we have to figure out a way to separate the data layer from the blockchain. We can use the blockchain for core things like registration signups, but we have to actually move the data off. And v1 of Farcaster, we actually took that federated approach that we talked about, similar to what these other networks did. We said basically, hey, let's put identities on the blockchain. So your username, your account that you register, so there's no fragmented identities. But then everyone runs their own server and stores their data. And within a few months, we quickly ran into the problems of like, hey, all of these servers are starting to diverge a little bit, it's getting hard to maintain them. This seems really not ideal.

And so we evolved into thinking about Farcaster v2, which was this borrow from the Ethereum node philosophy of you can run a box and that will sync with every other box and have a copy of every message in the world. In exchange, it places some constraints on how much data you can produce, because if everybody could produce an infinite amount of data, well, it wouldn't fit in that box. And it has an economic model where you have to pay to get storage and store some data. And that's how Farcaster v2 came out. But it was really through a lot of trial and error and building the thing, getting users and developers realizing why it didn't work, and then repeating that cycle again.

[:

Where was the data being stored?

[:

So it's our own off-chain system. So we call it a hub, and it's effectively a node in the network. So you could go today, download a hub and run it, and in an hour and a half it would sync with all the other hubs and it would download 140 gigs of data, and that's the entirety of Farcaster. That's every message that has ever been posted, and you now have that on your local machine. And if you send a new message, you can send it to any hub and it will accept it, it will verify that it's from your identity, it will check the signatures and all of that good stuff and then beam it out to every other hub. So if you're running a hub, you also have this guarantee that in real time you're getting all of this data that you can use to populate your app and your database.

[:

So then that kind of comment about consensus, is it consensus of the hub data specifically that that's where you're kind of building something different.

[:

Exactly. So to give you an example, let's say you wanted to post "Hello World" and then you wanted to delete it. So one question is, how do these operations happen? What happens if they come out of order? So you start off by creating a message that says "Hello World", you sign it, you put it out there. Now all the hubs have this "Hello World" message, it's great. You decide you want to delete it. You go and say, delete this message, I didn't want to say this. You post another message saying, hey, this just got deleted. Now, in an ideal world, the add arrives and then the remove arrives, and so every hub kind of knows, okay, this was added and then this was deleted. But what happens when those messages arrive in the opposite order? Some hub ends up seeing the remove message first, and then the add message, how do you decide which one is the origin?

And Farcaster actually uses a very simple consensus mechanism built on what we call CRDTs, or Conflict-free replicated data types. It's a bit of a mouthful, and it's actually a very simple concept with a very complicated term. But it means that it has simple rules that every node can decide what the final state should be based on this. So the simple rule in this case is if you have removed your message, even if you've added it, the state of the message is always deleted. So very simple concept. Two messages come in at the same time. They always converge to the same thing. And we take this sort of simple rule set and apply it to more complex situations, like when you're replying to yourself, when you have too many messages and all of that. And so the cool thing is you can just blast out these messages to everybody and each hub can get them, and it can reach consensus by itself. It never has to communicate with any other hub in the network to figure out what the state is, which is something you have to do with crypto and financial systems because you need strict ordering, and you have to know that Alice sent money to Bob before Bob could send it to Charlie.

[:

One interesting kind of thing, at least since we're talking about consensus in social protocols versus financial protocols, is there's sort of a notion of blockchain care about spam in a certain way. Right? Sybil resistance is like I care about spam being not tolerated unless you pay a certain amount. In social networks, spam shows up, but it shows up in a sort of different layer. It's not showing up in the transaction level types of things. How do you think about what types of things you want the equivalent of sybil resistance, like some properties you want in the network that need to be enforced by consensus versus properties that aren't. And how do you choose those for social networks versus financial networks? Because it does feel like for financial transactions, there is this fundamental thing about like, I really need to make sure that if you're spamming, you have to pay for it.

[:

Right?

[:

Yeah, but here that's not totally true. And I'm just kind of, yeah, would love to have your... get your philosophy on that.

[:

So there are two kinds of spam that are bad for the network. One is, I would think of it as like protocol-type spam, and the other one is application-type spam. So protocol-type spam is somebody who just logs onto the network and then just blasts it with a billion messages. So I come in, this is a social network... I said earlier, Farcaster doesn't have a fee for every transaction or every message, so great, let me post "Hello World" 5 billion times, and now everybody has to store this, and that's awful. So that's one level of spam, and we want to prevent that.

[:

That's on the application front, or would that be on the...

[:

This is the protocol-level spam. It's like you come into the network and you're able to douse the network with so many messages that the people running the hubs can't run the hubs anymore.

[:

Got it.

[:

Application-level spam is a little more subtle. You actually see pretty sophisticated versions of this on the apps today, and we do a lot to reduce the amount of spam there, but people run LLM bots that will take your cast, read it, post a message, and reply to it. And there's sort of this hope of maybe I'll get an airdrop one day, maybe something will happen, or you're trying to shift the political narrative. Social networks like Twitter have always had spam, and crypto has always had a lot of spam, and so social networks built on crypto at the intersection of attracting everybody. And this is less like...

[:

The vortex.

[:

Exactly. But this is less like they're generating billions of messages and more of, they're intruding on your private spaces. So you post a question about this podcast, you're like, hey, who listened to this? And some LLM bot jumps into the replies, and it's just a little icky. You're like, why is this here? I don't want this on my feed. And so that's, I think, they're not violating the protocol rules, they're not posting a billion messages, but it is not something that you want to see in your application, and it is something that apps have to filter out and very important to get right. So those are the two problems. I can talk a little bit about how we do that, if you like.

[:

Yeah, exactly. How do you think about that? Because it does seem like it influences your notion of consensus, right?

[:l say, okay, you get to store:at happens when you post your:, you get:[:

But couldn't they still be running bots just to spam for the user? They'd see a lot of messages, but then older messages would just be wiped out, but nobody's paying attention to the old ones anyway.

[:our rate limits go up to like:[:

One other kind of benefit that seems to come from something like this is that your old messages get burned. As you described that, I was like, oh, that's actually kind of an interesting idea that your old tweets disappear anyway or your old Farcast casts, you know?

[:you only have to update after:[:

I think there's two different answers to that. One is the way consensus works right now is it is simultaneously both very fast and very slow. And what I mean by that is when you post a message to a hub, that hub is immediately at consensus. So anybody listening to that hub, it is immediately confirmed. There is no 15 seconds wait for a block to figure out if this was accepted, it's just done. There's a set of rules. It processes them in a few hundred milliseconds, and if it's done, it's finished. There's a broader, slower consensus, which is how do different hubs come into contact with each other? And that can take several seconds or up to a minute before you kind of have this guarantee that 99% of the network has seen it.

The interesting thing about social networks, particularly public facing social networks, is you are actually quite relaxed in how fast messages have to come through relative to something like a blockchain. If your tweets or your casts show up 30 seconds late, almost nobody will notice that because the speed of the network is around one to five minutes. If you start getting slower than five minutes, people will notice. And so this relaxed consensus actually works really nicely for social networks. Like when our network is operating super well, it's at like 1 second and everything propagates. When it's having a rough day, it's like 1 minute, but almost nobody notices the difference between a second and a minute. So this relaxed consensus model works well there.

[:

Wow.

[:to:[:

Yeah, I guess that's sort of my question, though there is some sort of limit to that performance-wise. And I'm just kind of curious how you view the scaling of that, because people in blockchains, they care so much about this and they're willing to die and fight over what hardware is required, what level of... So I'm just kind of curious how you think about that. Because I assume it's more relaxed in hubs, obviously for a lot of reasons, but, at what size does it change your calculus, like network size?

[:

I think about... the short answer is I think our architecture will change at like... So we have about 100,000-ish daily active users today, give or take a little bit. I think this network architecture will scale quite linearly until we get to somewhere between a million to 10 million daily users. And then I think we have to change the way some of these hubs work. And the biggest constraint on hubs... so if you think about blockchains, the biggest constraints tend to be compute, bandwidth and storage. Those are kind of the three resources that you're constantly optimizing for on Ethereum. With hubs, it's almost entirely storage and bandwidth, and we don't care as much about compute. We don't actually do a lot of compute beyond checking signatures, which is usually pretty fast. And we don't also care about hubs as being a vector for security for the networks. They're really all about storing data for users and making that data widely available.

So the biggest challenge is, as the network grows, the sheer amount of data that it has to store gets so big that you literally cannot rent a box in the cloud that will fit all your data. This is like you get to like 30 terabytes. Now, that's quite a big way off from where we are. But at that point, you have to consider a bunch of other techniques. You can... Sharding, I think, is one of the most common ideas that's been bandied around, and I think that will actually help us scale. And the very nice thing about our consensus model is it is very easily adaptable to sharding. Again, because there is no cross-transaction consensus, you can very easily say, hey, all FIDs from one to 50,000, you run on hub type A, and all FIDs from 50,000 to 100,000, you run on hub type B. And you can just have hub types A and hub type B. This is like a very naive version of sharding, but it is very trivial to implement, and I think it's something we'll have to do once we get to the 1 million, 10 million user set.

[:

Have you thought of just pruning the old stuff? Because this is something about social networks where it's like, yes, sometimes people dig up old things that they've tweeted, but I almost wonder, like a model where you highlight the ones you want to keep from the past and then you let the rest... Even if you're not past your own individual limit. Have you thought of that?

[:

We have.

[:

It's like, would be a mixture of Twitter and Snapchat or something. I don't know.

[:

We have... It would actually be very trivial to implement this as an app. You could just build it in as a feature to any app to expire older messages, and they would just get kind of purged out and you could buy enough storage so that your newer messages get set. So I think this would be quite easily implementable as an idea on top of the protocol today.

[:

You mentioned sort of these actors, the hubs, but you also mentioned the hosts, and I'm kind of curious about the apps. When someone wants to interface with Farcaster, they often have to find something to download, and it's not Farcaster. So what is that agent? What is that application? And does it run a hub? Like, yeah, what's happening under the hood of those?

[:

Yeah. There's a few types of developers that are building things on Farcaster. So one type is, I'm building a Farcaster client. I'm literally building a social networking app. This is meant to be used to connect to the network, post your messages, and do all this stuff. There's a second class of developers that are building social network, orthogonal stuff. So this is like tools and utilities to make your life better on social networks. So an app focused on like, oh, you can schedule your posts and have all these advanced features and do stuff. There's an app called Supercast that does this really, really well and has a bunch of power users using it. Or there are tools for analyze your following and see who your biggest followers are. So all these adjacent things that people build that are not necessarily full-fledged clients, but are very useful tools.

The other category is people building other social networks that are creating content on their networks, but using Farcaster for distribution. So Drakula is an example of this, which is like a Web3-TikTok type app that has its own social network, but bootstraps off a Farcaster social graph. So when you log into Drakula, you actually sign in with your Farcaster account, and all of your friends are there, and you record videos, you post them on Drakula, and you can publish them back to Farcaster to share them with your friends. And the powerful thing for Drakula is when someone signs up, you're not having them find their friends and start their network from scratch. You immediately have their profile picture, you know who they're following that's already on the network, and you're able to get them started in this thing.

So each of these three classes of developers, I think, has a different interaction with how they build on the network. And there's two ways you can do it. One is you can run your own hub. So this is kind of the hardcore mode of like, I know what I'm doing, and I run my own hub on my box, I get all my data, I build everything very low level. The other is there are now Alchemy-like services. So there's Airstack, Neynar and Pinata, which are like, hey, we'll run the hubs for you, we'll actually get all this data into nice APIs, and you can very easily trade a little bit of decentralization for the ability to build your app a lot faster. And so a large number of developers are choosing services like that to start building on top of.

[:

That's so interesting. Anything posted through these though, do they all end up on a canonical base chain or area?

[:

Yes.

[:

Okay.

[:

They all end up on these hubs. So basically message comes down, propagates to one hub, spreads to every other hub, and then you can pull every hub and you get a copy of these messages.

[:

So one tiny thing related to what you just said is, I think obviously, given the history of social networks, one of the things that has always been revealed is that like, hey, it's really hard to build apps, you get locked out. The platform says you can't use our data, dot dot dot dot dot. We know these history of all...

[:

Changes the APIs.

[:

Failures. But if we look maybe in a more forward-looking light, there's sort of this sense in which, hey, in a decentralized social network, you don't have those problems, but you're going to have a very different ecosystem of applications than the traditional social networks. And in the same way, if I look at DeFi, DeFi has a very different set of financial applications than traditional finance, but they seem to work better because you get composability. Like, okay, this is a very inefficient way to do a trade, but because I can compose it with a loan and I have no risk in this kind of atomic bundle, it actually is fine. I'm willing to take some inefficiency somewhere else to gain sort of an aggregate benefit.

There's something that I've kind of been curious about, but I don't have enough educated thoughts on, which is in social apps, these people building on top, now they get these guarantees, they could have composability. Someone like Drakula now gets some extra benefits. So what do you think the app ecosystem looks like, and how do they interact with each other now, if they have a common substrate. You know, the same way that DeFi protocols, they had this common substrate that allowed them to make more complicated things out of simple things, it sort of feels like... Maybe this is asking for too much, but it's sort of like what is the thing that causes this network effect amongst the apps that build on top. Like, what do you speculate it is?

[:

Yeah, it's still early, but I think there are three things that are starting to emerge. The first one is access to social graph, which I think is extremely important and today does not exist. So if you go to Twitter and you say, I want an API, and I want this API to get all of Anna's followers, the documentation actually says this exists, but if you go try and use it, it was shut down a year and a half ago. And no other social network even offers this anymore. They're just straight up like, no, you just cannot have our social graph. This is our most valuable asset.

And so to any developer building, if you try to build a social app, that is the hardest problem. It's the cold start of someone comes in and I can't even tell you who to follow or who to access. And so that is probably the single most valuable reason why people use ‘sign in with Farcaster’ because when you connect, you can immediately start recommending stuff to people saying, hey, these are people you've said are your friends, and that is just like a public good that is there and helping Drakula and helping all these other networks, et cetera. The second reason is, I think distribution, because if you can publish something back to Farcaster, back to the hubs from this person's account, using your app, you now have something that is visible to all their followers. And so this is where like Frames, which is the building block that we built to let you put transactions and other things in apps, has been really powerful because it gives developers a way to take their app and bring a slice of it to you in your feed, where you are more likely to interact with it and use it. And so you as a developer, don't have to solve the hard problem of how do I get someone to come to my website? You can actually take your app to them if you build something that goes viral on social. Which tends to be a lot easier to do, especially if you have a compelling product.

AndI think the last bit comes from just compounding, tooling and ecosystem benefits of creating decentralized tools. If you go look at Neynar and Airstack and Pinata and some of these tools today, it is getting incrementally easier and easier and easier to build on top of it. Like on day one, it sort of parallels the evolution of Alchemy and Infura. On day one, it was like, these are literally just the hub APIs, you just don't have to run the infrastructure. On day two, it starts to feel like, oh, we have all these smarter APIs that will let you search for stuff and pull it. And on day three, it gets really, really fancy and easy, which is here you can set up webhooks and all of this stuff. It is easier and easier and easier than ever to build a social network because the tools in the developer ecosystems are also getting better.

[:

Wow. Varun, as you go through kind of what's possible, I'm getting flashbacks to, and I don't even know if the audience knows this, but I used to run a SaaS business, a video SaaS business that used YouTube APIs and other web APIs and tried to connect them. And so I was like, we were totally at the whim of them changing APIs. It was totally challenging because that combination could only exist in our own players. We couldn't put it back into YouTube or whatever. We'd add this extra layer of context on top of video, but it could only exist outside of it.

So that speaks to me, basically what you're saying, like that in a way meant that the business I built a long time ago was very limited in terms of how it could be used, here it opens up a lot of creative space for app developers to just think of like, yeah, all of a sudden they have this social graph, they can start integrating their own applications into it. Do you worry though that it would become kind of junky at some point, because that was the other thing about, like when it's very limited and it's also kind of, I mean, it's minimal. So what is allowed in is somewhat minimal. And yeah, I just wonder if you're worried of too much kind of cross-pollination and that it becomes too loud or something.

[:

I think openness has a lot of challenges that come with it. Right? So one thing, and Tarun alluded to this earlier, which is that there's actually a lot of application-level spamminess or LLMs and other stuff that come across. And this sort of problem is pervasive across all angles. Right? It's like you have more apps and some of these apps are low quality, you have more users and some of these users or low quality. And so I think that is actually going to be an important problem for the network to try and solve because decentralization by definition means that, hey, if you pay the fee and you are an equal participant, like Ethereum does not judge the worthiness of your transaction. If you paid for it, you get to include it. In the same way, Farcaster, the protocol, does not judge the worthiness of your data. If you pay for it, you get to store your messages on the chain.

But users care about quality. They actually want a quality filter and a quality bar. And so this is where applications really come in and have to take a strong POV on like, okay, what do I show you as the user? What do I filter out? What do I surface as notifications? What do I put beneath the fold and take away from you? And that's slowly happening on our app and other apps on the network, where you're starting to see things like, okay, these are the most interesting replies, look at them. And here's a bucket of other replies that may be less interesting to you, so we'll put them under the fold and you can expand to see them. Similar approaches, I think, will need to be taken with apps and clients and other things where they're sort of an App Store where you can browse and someone has taste and is saying, these are the most interesting reviewed apps, and here's the other bucket. You can go try them if you'd like.

[:

Interesting. I'm kind of curious if someone is using a particular client and there's sort of groups on that particular client, is that in any way canonical, or is that always just app specific?

[:

The way the clients work today is when you publish the actual data, the casts or the messages, they're all produced in a format that syncs across all the hubs. So the main benefit is like, hey, all of this data is always equally available, to create it and get it on clients, it has to be standardized. Now, one of the things we do, especially in Farcaster... So we build Farcaster, the protocol, which is the underlying technology that makes all this work, and we also build one of the first apps called Warpcast, which is the app used to connect to the network. So one of the ways in which we prototype and move quickly, we call this product-led protocol development, is when we come up with a new feature, we actually prototype it in our client as a centralized, like only in this app does this work, to test and see if people actually like it.

[:

I see. I see.

[:

If it takes off and it clicks, which happens 10 to 20% of the time, we then say, okay, how do we turn this into a protocol-level feature and go ship it. And if it doesn't, which actually happens a lot in social because you don't always know exactly what people want, we say back to the drawing board, let's go and do this. And that modality will likely exist across all clients. People will try out some new feature, it'll work for their users, it seems cool. Then they'll try to incorporate into the protocol, so it works across all clients. Sometimes those experiments will work out and create really cool things, sometimes they won't. And people go back and iterate on stuff.

[:

Are Frames... I mean, Frames, I guess, were experimented in Warpcast. Are those now rolled out everywhere or are those still in experimental phase?

[:

So Frames actually ended up being this very nice thing that when we built was actually fully open and protocolized.

[:

Okay.

[:

That was actually kind of what made Frames really cool.

[:

Exceptional.

[:NFTs on Farcaster. So back in:[:

You keep saying Facebook. So I'm just curious, was it a Facebook standard originally or something?

[:

Yeah. So Facebook back in I think '05 or '06 pioneered this open graph standard where they said if you just add these few Meta tags in your website, we will then render an image instead of just a plain old link. And that's basically been stagnant for the last 15 years. It hasn't really changed that much. But now when we ship this NFT change, like ZORA shipped it and what was really cool was within a day, every other NFT platform had integrated it because, A, it was so easy to do, and B, it gave them a lot more distribution on the product. And so that was the earliest proto Frames and we just took that and extended it and started adding more features. And so it actually started as a very open protocol that worked everywhere on Farcaster.

[:

That's cool.

[:

I guess one question I have is, when you look at some of the growth of Frames initially from people, I guess this is the benefit and the curse of the open network, but people figuring out how to do airdrops and people figuring out how to take advantage of kind of the blockchain things. How do you view the overall growth in Frames over time? Do you view it as like people use it as a way of doing smaller kind of little inset applications, or do you view it as like people will start gluing them together and making sort of longer term experiences out of sequences of Frames? Because I've always wondered if like, if you think of this as sort of a... it changes a gaming element of social networks in that it could be very long term in that there's a lot of sequential interaction, almost like a game, or it could be very short term. Right? Like click here and claim your Degen. So how do you view the duality of those two?

[:

So I think when we shipped Frames, we kind of hoped that two kinds of applications would emerge as a result. The first one was on-chain transactions, because historically it's just been very hard to get someone on a mobile app to do something on-chain, and we said we want to build the best possible way to bring that transaction to you, bridge it to your wallet and let you execute that cycle pretty efficiently. That part, I think, has actually worked quite well in that there are a lot of Frames that do transactions. So there's a lot of like claim your airdrops, but there's also bots like Payflow and Paybot that make it easy to do Venmo, like sending money to other people and things like that.

The part that we also hoped would take off but hasn't yet happened, is people building applications that extend the social experience. So these are things like building in polls to actually make it easier to query your audience about something, or Inline articles and things like that. And I say it hasn't happened, but it actually has happened. It's just not as widely distributed as we'd like. So for example, Surveycaster or Ponder builds a lot of these survey bots. Paragraph builds a lot of like read articles inline. And the biggest challenge we've noticed with this, which is something that we're working on right now, is people need sort of a Frame builder or a Frame creator where it's like, hey, I want to create a poll, I want to do this. And there's actually no good entry point or mechanism in the Frame spec to start by creating something that you put in your message.

Frames have always been, I discover this in my feed, I click on a button which has all been always been good for like claim your airdrop or check this thing, but it's locked it out of these set of experiences. And so one of the things we're working on is how do you actually give these applications distribution, so when someone is writing something, they're able to just insert this app. And we actually might have something launching in the next few weeks that makes this a lot easier.

[:

Might.

[:

I think there's a lot of experimentation around what is the exact entry point and how do we make this as easy as possible, both for users who want to insert something and for developers who want to build these experiences and have control and feel like, hey, my app is actually getting distribution in this protocol. And so there are a couple of things that we're cooking there. The third thing I think is making Frames composable with each other, which is technically possible today, but we haven't seen a ton of that happening yet. And I think one of the reasons is performance of Frames, because of the way it's built, is kind of slow. Every time you click on a Frame... The way a Frame works effectively is you generate an image for every page of the Frame. And that's actually kind of a slow piece.

And so when you have to go through more than 3 or 4 or 5, it starts to get very tedious, it feels slow. You're used to mobile apps where you tap and stuff happens immediately. And so we're thinking about building a new rendering surface where you're not generating images, but you're able to actually generate like mini web pages or iFrame-type things that will be super fast. And I think that's a big blocker to these longer Frame experiences, is it's just too slow today for people to stick around.

[:

Actually, a very related question, since you brought up iFrames, is security wise, how do you think about isolation versus not isolation within Frames? In the sense of maybe I have a key that persists in one Frame or there's a signature somewhere that maybe needs to die. Because I feel like obviously mobile security is bad and there's tons of ways people exploit things like XSS stuff or injections, things like that. But I feel like crypto security is even worse because like, oh, I have all these things that I've signed payloads that maybe need to get destroyed in some way, and maybe the Frame has to persist them, stuff like that. There's all sorts of lifetime management, key management type of stuff that exists. So how do you think about that and how do you reason about, like you want to build the best product experience, but you also have to deal with these kind of extra security overhead?

[:

Yeah. So the way Frames work today with the image model, is it actually keeps things fairly simple from a security perspective. So when you interact with a Frame, A, when you look at a Frame, the Frame doesn't even know you're looking at it. So there's no privacy leakage when you're simply looking at a Frame in your feed. But the moment you click on it, you send a signed payload saying, “I'm Anna, I clicked on this button and this transaction came through”. So you do get a signed payload, but it is designed to be very much an intent of I clicked a button that proves to the user it can't be used for anything else. So there's no way to unlock money or do anything more fancy or more dangerous with this right now. So you just get these signatures that are verifications that you took an action.

And then Frames can return transactions to you. And this is kind of the one part where things do get a little scary from a security perspective because you could have a bad Frame that returns a wallet drainer or encourages you to do something. The way we've approached this bit is by saying, okay, we are actually going to insert transaction scanning. So using tools like Blowfish and Blockade, which have actually been surprisingly effective at identifying transactions that are drainers and just warning users before they click on it. We actually see on our backend, every so often someone will come in, try to test a drainer and post it and see that it fails, and then they just never bother to post it again. Like they come to our test tools and try it out and realize they're not going to get through and then just go away. So people want to do this, but they realize it doesn't really work that well anymore.

So that's the current model. I think if we go to an iFrame model, things get a little fancier and a little more complicated because you can do a lot more stuff in there. You can store data, you can have things on the backend. And I don't think we honestly have a great answer right now for how we build that isolation. That's one of the reasons why we might choose to go with a sort of very simple SVG or HTML, CSS surface instead of an iFrame, because it lets us constrain that security model a lot more. There's also performance challenges with the iFrame, especially on mobile. If you have three or four of those, rendering them quickly is pretty tough. So we may end up on the HTML side of things for that reason.

[:

Interesting. We had a question from a co-host who is not here, a sometimes co host of the show, Kobi, and he asked “when ZK Frames?” and so I just thought I'd ask it now. Is that a thing? And what is that? What actually does that even mean? A ZK Frame?

[:ink we actually tried that in:[:

Interesting.

[:

The second application, I think, is more at the protocol level, which is, I think as blockchains get cheaper and cheaper, as we're able to do sort of more the verifiable compute aspect of ZK, and as Layer 2s get more and more efficient, there might be a hybrid hub model where we use our fast consensus model for storing all of this data quickly, but we actually have an archive model where there's a blockchain that stores older historical data for backup purposes, that is actually using a ZK network to store and processes stuff because they've actually brought down storage and consensus and processing times fast enough that some of this would actually fit it. That's a little bit more out there and researchy. I don't think there's a clear, like here's how we would apply it today, but those are the two ways in which I think ZK can come to Farcaster.

[:

Interesting.

[:

Well, I guess another question and maybe we covered this. So apologies if I totally didn't get this, but when I do execution for a Frame that's all client-side, none of it is stored on the hub. Is there any remnant storage or compute for a Frame that is kept on hubs other than just the storage div?

[:

No. So a Frame is effectively an interaction between you and the server that the Frame is running on, and things that happen as a result of that. So the simple way to think about it is a Frame is effectively a slice of their webpage that's specifically designed to fit into this model of you give me an image and four buttons and I can click on them. And when you click on them it makes just like an HTTP request back to that hub. The cool thing is that request is cryptographically signed with your Ethereum Farcaster identity key, so that person always knows that you're interacting with it.

So it's almost like I OAuth'd into this application and I'm now clicking on this as Anna or as Tarun, so we now have this interactive thing. And then you just kind of go back and forth with that application and it's all private. So it's purely between you and that application. Now you might get a transaction as a result of it. So the app might say okay, now you go and do this like buy on the blockchain or you send this money, that of course gets committed to the chain. But everything that happens between is purely between you and the Frame server. And the only part that's on hubs is the link to the Frame that says hey, this Frame exists in this post and comes from this website which can hydrate that Frame.

[:

Yeah, I guess when I was hearing ZK Frame, I was just assuming maybe there's some execution trace of the Frame that the parties post to a hub and now they have some guarantee that they actually did this. When you ask what is the ZK Frame?

[:

Yeah.

[:

Which it seems like you could do today.

[:

I think there are cool... And I sort of said this as a general Farcaster thing, but you could also apply it to Frames. I think there are very interesting privacy sensitive applications that you can't really build today because Farcaster is effectively a public social network, right? So one way to think about all the social networks that exist today is they're on a spectrum of private to public. So on the left side you sort of have your Snapchats, your Facebooks, where you are largely talking to people you now, and your expectation is that this stuff does not get out anywhere. And on the other side, you have your Tiktoks and your Twitters, where it's, I want this out in front of as many people as possible.

Farcaster's architecture today does not make it easy to build the former. Everything is public, everything's unencrypted, everything's private and out there, which makes it very, very hard to actually do some of this stuff. But I think privacy, whether it's through partial ZK forms or other forms of encryption, is going to become increasingly important as we get into things like offering direct messaging, as we get into, I want to have private groups that I have with my friends. Those are not things that exist at the protocol level today, and so that's, I think, a very interesting and important area of research for building more types of social networks.

[:

So I want to understand a little bit about where it lives. You had sort of mentioned the hubs, but then you also mentioned a blockchain. And I always heard that the activity of Farcaster had influenced Base. So are you built on Base?

[:

The way to think about the lifecycle of Farcaster is when you sign up and create an account, the first thing, the very first thing you do is you make a transaction to the blockchain. We actually use OP Mainnet, which is part of the Optimism Stack that Base is also a part of. And what you do is you create your account. So you get an account ID, you get your public and private key which says, hey, these are the keys that I'm going to use to create and sign messages. And that's it. That's pretty much the only time you have to interact with the blockchain to use Farcaster. Beyond that, everything that you do is you use those keys that you've set up to sign messages and you send them to hubs. So they're never blockchain transactions, they are sort of Farcaster messages, as we call them, and they're just sent entirely off-chain, there's no cost, et cetera, et cetera.

But the cool thing about Farcaster is you can integrate with anything that you like inside the application. So there's been a lot of growth in activity on Base, particularly around NFTs, around artists, around transactions and projects, and a lot of that has come into Farcaster through Frames, through people sharing it. And so Farcaster is very popular in the Base ecosystem. The Base channel is one of the biggest channels in Farcaster, and so it's actually sort of taken up with the ethos of that. But Farcaster also supports for example, Solana. Like, you can connect Solana addresses and do transactions on that blockchain. And so it's really like the identity layer is built here, but we can interop with any blockchain and make it so that your experiences on that chain and transactions feel really, really native inside your social app.

[:

So you built it on Optimism. Why did you choose Optimism? And would you ever switch?

[:

I think the truly honest answer is we could probably build it on any sufficiently cheap blockchain right now and it would be fine and people would not notice the difference. So if we shifted from Optimism to Base or Optimism to Solana, it would work reasonably well. These chains are fast enough that most of the costs in execution are not that exposed to users or changing the experience. The way we thought about it is, look, we want to be on a chain where transaction costs are low so that when you sign up, it's not prohibitively expensive, and the network is fast enough and scalable enough and decentralized enough that you have credible ownership over your thing.

The other nice property is, we are not tied to a chain. Let's say tomorrow we decided that we had to move to a different chain. Something terrible was happening, or something great was happening over there, and we needed to go, it would be possible to say, okay, we're going to do a migration, we're going to take this and move it over here and put it on this other chain and copy all the data, resync everything and do it. The honest reason why we're on Optimism and why we're on Base is I think the community felt very, very Farcaster aligned, and was very supportive and participative in the early Farcaster discussions, just like a lot of our early users came from those communities. And because we said, like, hey, this is a credibly decentralized project, it was fast enough, good enough, and the people are aligned with building on using Farcaster, it just felt like the right place to start.

[:

That's interesting. Would you ever have your own L2, though?

[:

There's actually been something we've thought about, right? Because there are other Optimism projects like Worldcoin, that actually are now doing their own L2. I think having our own L2 makes financial sense in a world where we are generating so many transactions that the savings on the sequencer from being able to capture those fees would let us reduce costs for our users. So I think if we were getting like, I don't know, 1 million sign ups a day or something like that, we would say, hey, it's actually cost efficient for us to go run our own L2 and then pass those savings back to users. But I think in the current world, it's just a lot more time, energy and hassle and building on OP Mainnet or building on Base or these chains is a lot better and easier for us.

[:

And it sounds like the only interaction with the chain is on that signup moment. Right? It's not in the texts and the casts that you're sending back and forth.

[:

Exactly.

[:

But could you imagine other on-chain activity that you could incorporate into future iterations of this beyond just signing up?

[:

So there are a few things that already happen. So one is account recovery. So if you lose access to your account, classic social problem, everyone's lost at least one crypto wallet in their lifetime. It's very painful if you lose your following and have to rebuild it from scratch. So one of the things you can do in Farcaster today when you sign up is you can nominate a second wallet to control your identity and say, this is my backup, if I go down, you can use this to do things. So that, actually that recovery happens on-chain. So when you sign up, you associate another wallet. So if you lose your account, you do this. And we process hundreds of recoveries each day where people are having to recover their account. So that happens on-chain.

There are likely going to be more parts of Farcaster that move on-chain. One of the things we are actively in the process of decentralizing is channels where you can create these groups or these communities that are focused around a specific topic and you can post in them. This is very early in that product phase where it is still a Warpcast feature, but we are trying to move it so that the ownership of a channel is actually something that's on-chain. So if you build and create a community, and then one day you want to hand it off, or you want to sell it, or you want to share it with someone else, that is actually like an on-chain artifact or contract that you can transfer ownership of. And so that's something that we might do on-chain soon.

[:

There's one insanely large ZK channel that I'm in, and I've always sort of wondered if that was something you could find across many different applications, but it sounds like right now it only lives in Warpcast.

[:

The content lives across all applications. So when you post in the ZK channel, you're actually creating a cast, tagging it with ZK and posting it there. The part that is Warpcast only is management and ownership of the channel. Like who is the person that gets to decide what shows up in the feed? The way to think about channels is they are curated spaces. So anyone can post in a channel, but the lead or the moderator gets to decide what shows up on the home feed. So they're sort of like tasteful renditions of the content in there. And moving that moderation piece on-chain is the part that we are focused on right now. Because there's actually a certain amount of nuance of how do you expose all of this data? How do you track ownership and all of that stuff?

[:

One thing I've actually... is kind of related to what we were just talking about, but I remember there was a point at which the identities lived in multiple places. So, like Solana and Optimism, is that correct?

[:

We originally started on Testnet, so I think it was Sepolia back in the day, and then we moved to Optimism. So we've always existed on a single chain at a single point in time, but we've moved between chains. The thing that you might be thinking of is we do allow you to connect wallets to your Farcaster identity. So you sort of have a primary Farcaster account, but you can say, hey, I own this Solana wallet, I own this Ethereum wallet, I own this other thing.

[:

Oh, I see. I see. You do like an attestation.

[:

Exactly.

[:

Yeah, I see. Because I was sort of wondering how that worked because I didn't quite look at exactly how it was implemented, but that makes sense. And do you foresee that ever changing where, let's suppose, say, there was sufficient demand to have some synchrony across multiple chains? What would it take to get to that point that you would want to do that?

[:

I think it's a good question. So I think the main reason for it is you actually want to build a smart contract that needs to check the identity live in the path of the transaction to do something interesting. If you wanted to do that, you could only do it on Optimism today, because no other chain sort of has a truthy state of Farcaster identities. What you could do is you could build mirrors. So you could effectively build like a mirror contract that you trust that says, hey, I am going to proxy every state change of the Farcaster identity contract onto this other change. I believe this actually exists for some ERC-20s. You can actually mirror them on L3s and L2s, where you trust a party to proxy all the things, and you can, of course, verify them in real time. But something like that would let you bridge the state of Farcaster identities across so they're composable to all of these contracts. Modulo some trust property of like I trust that this person isn't violating that rule.

[:

Right.

[:

Earlier this year, there was this moment where just a ton of people were moving over to Farcaster. I am guilty of being one of those people who yoloed in when everyone was talking about it. I think it was like January / February. But since then, there has been sort of at least a narrative of people returning to crypto Twitter. I'm just curious, on your side, from where you're sitting, what does the trend actually look like? Was there a major spike in January? What caused that? And also just the general larger trend, what it looks like?

[:

Yeah. So if you kind of look at the growth graph of Farcaster, we were sort of flat and growing a little bit for most of last year. Frames happened in January, and that was like a big aha moment for a lot of people where there was a lot of hype, a lot of excitement, and it sort of went parabolic, where I think we 10x'd in like two weeks and things went really high. And I think as the euphoria settled, a lot of folks who jumped in because it was exciting were like, okay, there's not actually something here for me, and it sort of settled back down. I think we're still at about 4x to 5x higher than where we were when we first started, but there has sort of been a trending back down of like some people have retained, found a home and found it fun to be on Farcaster, some people have kind of returned to Twitter or to other apps or whatever.

Fundamentally, I think Farcaster, it is very hard to compete with another social network directly. In fact, I don't think that's ever really succeeded. Like you can't be a Twitter replacement and sort of beat Twitter at the game. Farcaster has to be something compelling and different and that stands on its own merit, that actually feels different to Twitter. And so the things that we're investing in now and the things that we think will drive growth for Farcaster are, one, making blockchain transactions super native and super powerful. And blockchain identities feel like first class citizens in the app. So you own NFTs, they're part of your collection. You have transactions, you can do them within your feed. You want to send money to people on Ethereum, you can do that right from your Farcaster app. Like, all of that stuff is sufficiently different from interacting on Twitter, where the blockchain components feel native to your day-to-day experience.

And so our focus is really on what are the people that are doing those things or who want to do those things today, and how can we get them to use Farcaster? And for the set of people who want crypto Twitter for more of its p2p nature and the arena and fighting there, I think crypto Twitter will be that for a while to come. I don't think Farcaster is going to be the place where people suddenly migrate to and start having all these discussions. I think it's the more crypto native stuff that's not happening on crypto Twitter that will actually be why people use Farcaster.

[:

Well, an interesting thing, if you think about Twitter overall, was Twitter sort of genesis stemmed from really being a place to get news before everywhere else, right? Like what do you think the thing is that will be like, I go to Farcaster first to kind of really get information or knowledge about something before anywhere else. Because I do feel like there is a sense in which that always seems to be true for different social networks.

[:

I think the honest answer is we haven't really cracked that yet. If you look at the reason why people joined Farcaster in year one is it just felt like a fun group chat. It was a bunch of people that were, like, two to three degrees separated from Dan or myself, who were in crypto doing similar things, and it just felt fun to be here. And I think that group chat momentum has grown and coalesced a little more, and it's now, 10,000 people every day instead of 100 people every day. But I would still say that you don't find out about the newest project launch in crypto by coming to Farcaster first. You'll often find it on Twitter first or soon after, and it's like cross-posting.

So I don't think we are going to beat Twitter on news, at least not in the near future. I think where we are going to win is sort of unique content, things that you're going to be able to do here that you can't do anywhere else. So an example of something might be if someone launches an interesting on-chain token or an on-chain thing that you can interact with, you come to Farcaster because you click a button in your app and you're able to do that thing on-chain. You don't get to do that on Twitter, you can't do that on Twitter. And so that's the kind of stuff that we think will drive Farcaster activity and create something where it's like, this is my reason to be on Farcaster every day.

[:

Are you worried about having to build out the moderation side of this, at least for the client, as you describe these things like just... We talked about spam, but we didn't really talk about scams or terrible things that often flow into social media projects.

[:

I think it's going to be a very, very important part of what we're doing, and it's actually something that we have to get right. So if you think about like, what are the challenges with moderation? I think there's a few different categories. Right? So first off, one of the things that you talk about most often is really terrible stuff, like CSAM, all the stuff on the edge. The thing about Farcaster is Farcaster is a purely text based decentralized network. No images or video or data are actually stored on the hubs. It's just pointers to those items. And it turns out that most video and image hosting sites like Cloudflare actually do a pretty amazing... You can literally check a button that says, get rid of all of this stuff and they will just filter it out for you. So literally, every application that builds on this has a built-in filtering mechanism for the really bad stuff, which didn't exist five years ago. Like Facebook and Twitter basically built all of this from scratch. Now it's a feature in a cloud service provider. I think the second... The level that will actually be very interesting and challenging is the spammy content, which is...

[:

Scams.

[:

And the spam... Yeah, both of them. The spams and the scams. Right? How do you get all of that locked down? I think with both of those, there's a decent amount of reporting, moderation, controls, tooling that we have to build on top of the network, and we've already started doing some of that. The really cool thing about Farcaster is because all of the data is open, people are actually building open source tools to help with some of this stuff. So there's this company called OpenRank that's actually building ranking data for Farcaster, where if you're building a new app, you can just plug into OpenRank's rankings and you will immediately say, okay, these are the high quality users, these are the spammy users, this is how I can generate my feed. So I think one of the things that will be really powerful is having many eyes on this and having financial incentives to go build that, means there will be a lot of stuff that you can just use out of the box to get you bootstrapped, that a bunch of other smart people are spending all of their time optimizing.

[:

I mean, I see two futures. One is I think the open-sourceness means there's going to be a fairness and a lot of people to work on this problem. But what if there was just a massive group of people who had an intention or an ulterior motive? Would the community, this very decentralized community, be able to sort of prevent stuff like that?

[:

The answer to that question really comes down to what you believe is more efficient at solving problems. Do you think that those kinds of problems are best solved by a company like a Twitter or Facebook that has an internal team that's analyzing all of this data, that has super tight control over it and can shut everything down, or do you think it's best solved by putting everything out in the open and having a bunch of different smart people go over and analyze and come up with the best solutions? And I think historically the answer has been, in the short run, centralized faster companies always win, but in the long run, over building... Over enough time, the open decentralized protocols get better and better and better and compound and actually end up beating and winning in the longer timeframe. And so that's what we believe, right? It's like, yes, there will always be attempt... if a social network is successful enough, there will always be attempts to manipulate attention and to control how people are interacting. But if you make that data open and public and make it easier to find, adopt and modify that, that is probably going to be much more effective at catching and identifying some of this stuff than relying on a single party doing it behind closed doors.

[:

I always get the sense the decentralization that works best, like most effectively if there's sort of some set of guidelines, or even if it's behavioral rules, culture, something to sort of keep it a little bit in check. But yeah, interesting.

[:

Yeah, I mean, this just gets back to this idea that if I have a common public database, then it's just more a question of who writes the queries and what views are they giving me. And I tend to think that there's some set of interactions where clearly the open common framework is going to be a lot better than the ones where I don't know what view I'm getting. If I look at the history of social networks, it's like, MySpace... I'm choosing a lot of the query parameters that the database is serving people. Right? Like I'm choosing the video on my page, I'm choosing the UX layout. Facebook, I don't choose any of the UX. I only choose like an image, I only choose a small amount of text, I choose a very restricted set of things. TikTok, Instagram, I kind of don't choose the feed anymore. I don't really influence... actually, the stuff I see is very not linear and completely not clear to me. So I don't know what view I'm even getting. TikTok, I explicitly have a non-deterministic view of the network. Right? There's been this kind of sequence of things where we've gone for like, I have the database, I have a set of queries and views I get, and I have less and less and less and less control over those queries. That's a very abstract way of viewing it. But I feel like there's obviously some sort of...

[:

Same like website servers and stuff. It sounds like a similar pattern almost, like giving it up. Yeah.

[:

This is a good framework for the sort of flow of choice in social networks, which has always shifted lower and lower. I think the correct answer is not ‘return to a mode where user has full control over everything and toggles and buttons’, because people don't actually want that. The correct answer is give people a choice because there will be 10% of users who've actually staked their life on the social network, are making a lot of money, care deeply, deeply about it, and want those toggles and should have the optionality to be there. And there's like your 90% of users who are casual, who just want the easiest possible experience, who just want to use the app and have a generally positive experience and don't want to think about those toggles at all.

In fact, there's this running meme on Farcaster of this, like stated versus revealed preference. We constantly have these little experiments where we discover these things. So one of the most common things is people are like, I want to have full control over my following. I only want to show you exactly what I follow. This seems like a reasonable ask, right? But here's what happens. So Dan put out this cast on... or tweet on Twitter and said, hey, if you've stopped using Farcaster recently, give us some honest feedback about why you stopped and what was annoying. A lot of the people that messaged back about four of them said, hey, I just see a lot of Degen stuff in my feed, I'm not really interested in Degen the token, and I kind of stopped using the app. And I went in and looked at all of those four users. Each and every one of them followed the Degen channel and followed the founder of Degen and followed a bunch of Degen tokens. And this is not a user error, right? It's not their fault. But the nature of social is like, you follow somebody because something is something at a point in time, it morphs, it changes, you are no longer interested in it, and we can't expect you to go and do work every week to be like, oh, I now no longer care about this and keep tweaking it. We have to infer that based on the way you're acting and sort of take your follow as your stated preference and then figure out the reveal preference from it and turn that into the graph.

So I think that is the ideal experience for 90%, but then the 10% want their full control, different client, all bells and whistles, and they should be able to get that. And both of these users should coexist on the same social network.

[:

Well, I think that the parable I was getting... trying to get to is there's a notion in which there's only one query, one view of the database that's given to you and you can't choose one. But imagine if you could choose one. And I feel like that to me, has always been the dream of decentralized social. It's like you can choose the set of... You don't want private likes, great, then use the client that shows you who likes something. But you want private likes, okay, use the client that never shows you likes. Right? Somehow that is the kind of freedom that feels like it's missing in a lot of social networks. But the problem I guess I see is the curation aspect is just so hard in decentralized networks. How do you view feeds in decentralized networks in the long run? How do they evolve? Obviously, this is taking a huge speculative...

[:

Yeah.

[:

Lens on it. But how do kind of recommendations, feeds, automation, how does that change for decentralized social networks?

[:

So the way it's worked so far for us is we started with a very simple, quite literal, reverse chronological feed of the people you follow. We evolved that into what we called an affinity-based feed where we said, 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, let's pop the stuff from the people you like the most to the top. So you still get the same feed, but you kind of get a ranking. We've now evolved to a more machine learning model where it takes in a lot more parameters and it's a lot smarter about like... Again, taking all the stuff that you haven't read, but surfacing it to you and starting to add second degree stuff. It's like, hey, Anna and Tarun, like this, you followed them, you probably want to see this post as well. And doing that.

Where I think it evolves from here is very interesting. I think there's two things that need to happen. One is feed generation is really, really, really hard. I don't think we can expect every single client to go and invent this from scratch. It is actually like a pretty sophisticated problem, and I think you will see companies evolving. I mean, OpenRank is already doing this and Neynar is doing this, but there are companies that are now providing feed APIs where you can give them a user account and they will give you a feed, so when you start building your client, you kind of have like a feed ready to go. That I think is going to be super important, like builder infrastructure. The crazy version of feed generation is actually something like, it's actually something like a Kaggle competition or what Numerai is doing, where you can create a feed algorithm and it can run in our infrastructure and we can offer it as a service to users. So you can tap a button, connect to something, and immediately get access to the correct feed that you want, or fine-tune and pick between different feed models.

[:

Yeah, I guess the problem I see is when I think about people I know who work on this type of stuff is like, generally there's no single objective function, even for a single company. Like TikTok will segment the users first and be like, for this segment, this is the objective function we optimize. Like for this segment, which is people who like watching dance videos, their objective function is pure engagement. But for people who use TikTok for watching restaurant reviews, actually the objective function is not how long they're using the app, but how fast they cycle through different views. How long until they hit one where they're like, okay, I'm going to go and convert. And part of the reason for that is TikTok makes revenue off of those, so they actually change how they serve things to you based on whether they're getting paid for something or not, and also by bucketing users into categories. And so I'm kind of curious how you think about social networks eventually just can't have these global kind of single objective functions that people are competing on, let's say, that it does feel like they have to have these little community-based ones. And yeah, how do you kind of view that evolving?

[:

I think that's a very good insight, which is that your revenue model often drives what you're optimizing for, which drives how the feed works. And so on one level, just at the global feed, I think there will be clients that are focused on different ways of growing and making money. There's going to be clients that are just power user clients that charge like $100 a month because you're using all the bells and whistles. They make all of their money off of just the revenue, and so they will give you all the fine-tuned controls you want because they actually want give you control. There's going to be clients that make money off advertising and they'll say like, hey, this is going to be more like Facebook, we optimize for clicks, engagements, views, page views, and our model is built around that. And so that's going to be more focused on that.

I think the one interesting aspect of Farcaster is there are also channels, and each channel is sort of its own community built around a topic, and the channel moderator can curate how that works. This is, I think one of the things that's going to be most interesting or most differentiated relative to a Twitter is like, you are going to have these sub-feeds that are curated by individuals using whatever tools they have, and they're going to apply different levels of moderations and styles and filters and give you different cuts into that world, which I think is going to be a really cool experience.

[:

I feel like there's more to dig into here also on identity and the proof of some behavior that you're doing actually on Farcaster to further write an identity program. Are you exploring that at all? We're kind of out of time, so I realize that's a bigger topic, but I just wanted to get that in.

[:

I think identity is one of those things that is now emerging as a building block. So my POV on identity has always been good identity systems always evolve from well-used products. It's exceptionally rare that someone says, I'm going to create an identity system and then gets it adopted. I mean, it happens if you're a government and you have a monopoly on something and you can say, everyone needs a passport, but otherwise, every common identity system, email, login with Facebook, login with Google, has always started from a consumer product that people use, which now you have enough people using it, it's valuable to use that to log into other things.

And Farcaster is, I think, starting to get to that point where now we have a sufficient number of users that a lot of companies are integrating sign-in with Farcaster, bring your identity here. And I think it's a very powerful building block because you can now get this, like start with your profile picture, start with your follow graph, start with all of this data, and get started, and you can augment whatever identity you have. So that's kind of how I think Farcaster identity will evolve over the next year, is more and more people will likely integrate the sign in with Farcaster because it makes their apps better and their new user experience feel a lot better when and they can pull in that data from you.

[:

Cool. So, Varun, thanks so much for coming on the podcast and sharing with us sort of the whole story of Farcaster. This has been a really interesting conversation, a little different than what we usually cover. It's very application-focused. It's very much looking... I mean, just talking about social media hasn't been something we've covered a ton. So, yeah, thanks so much for coming on.

[:

No, this has been really fun. Thank you guys so much for having me.

[:

Yeah. Always good to have guests who have a very high overlap linguistically with my name.

[:

Tarun and Varun.

[:

Even though they mean very different things.

[:

Really.

[:

It's only one letter, but...

[:

What is the meaning of Tarun? I actually don't know.

[:

Youth.

[:

Ooh.

[:

Youth. Okay.

[:

And Varun?

[:

It's the God of rain.

[:

Very different.

[:

Slightly, slightly different connotations there.

[:

All right, thanks so much. I want to say thank you to the podcast team, Henrik, Rachel, and Tanya. And to our listeners, thanks for listening.

Transcript
[:

Welcome to Zero Knowledge. I'm your host, Anna Rose. In this podcast, we will be exploring the latest in zero-knowledge research and the decentralized web, as well as new paradigms that promise to change the way we interact and transact online.

This week, Tarun and I talk with Varun from Farcaster. Farcaster is a Web3-native social network which open sources a social graph enabling app developers to build on top of it without a controlling intermediating party. We discuss what inspired the project, how different Farcaster is from existing social media platforms, what design space this opens up, and what kind of applications could be built on this in the future.

Now, before we kick off, I want to let you know about ZK Hack Montreal. It's an IRL ZK-focused hackathon happening on August 9th to 11th. ZK Hack is another project that I'm involved in. It's a hub for ZK learning and as part of this we produce hackathons. ZK Hack Montreal is our fourth time hosting this hackathon series and our first time hosting it in North America. Some of you may be attending SBC the week leading up to the ZK Hack weekend. Luckily, it's just an hour flight to Montreal from New York, so you can easily do both events. Plus you get to hang out in beautiful Montreal for the weekend and hack on ZK tools, meet experts in the field, and hopefully meet your future collaborators and co-founders at ZK Hack Montreal. We already have some amazing partners like RISC Zero and Polygon lined up and many more. So you should keep your eye on zkmontreal.com for more info about the event. Applications are open and we hope to see you there.

Now Tanya will share a little bit about this week's sponsors.

[:

Gevulot is the first decentralized proving layer. With Gevulot, users can generate and verify proofs using any proof system for any use case. You can use one of the default provers from projects like Aztec, Starknet and Polygon, or you can deploy your own. Gevulot is on a mission to dramatically decrease the cost of proving by aggregating proving workloads from across the industry to better utilize underlying hardware while not compromising on performance. Gevulot is offering priority access to ZK podcast listeners. So if you would like to start using high performance proving infrastructure for free, go register on gevulot.com and write ZK podcasts in the note field of the registration form. So thanks again Gevulot.

Aleo is a new Layer 1 blockchain that achieves the programmability of Ethereum, the privacy of Zcash, and the scalability of a rollup. Driven by a mission for a truly secure Internet, Aleo has interwoven zero-knowledge proofs into every facet of their stack, resulting in a vertically integrated Layer 1 blockchain that's unparalleled in its approach. Aleo is ZK by design. Dive into their programming language, Leo, and see what permissionless development looks like, offering boundless opportunities for developers and innovators to build zkApps. This is an invitation to be part of a transformational ZK journey. Dive deeper and discover more about Aleo at aleo.org.

And now, here's our episode.

[:

Today, Tarun and I are here with Varun Srinivasan, cofounder of Farcaster. Welcome to the show, Varun.

[:

Hey, thanks for having me. I've been a long-time listener and it's exciting to be on, actually talking with y'all.

[:

I have to admit to you, just to start, I am a very much a latecomer to Farcaster. I had people pinging me about it maybe last year, and I didn't respond until this year. And I really did feel when I joined, like the party had started. I felt like there was a lot of action, I felt a little bit out of it, and I was like, oh, wow, I've been missing it all this time. Tarun, I think you've been on for a while, though. You've been signed up for longer than me.

[:social media diet will be in:[:

Interesting.

[:

One of the funny things, I mean, we've been working on Farcaster for a little over three years now. Every year, every season, there's always someone who feels this way, and by the next year, they're the OGs. And I think we're still very, very early in a lot of ways, and there's a lot more stuff to happen. So even if you feel like you're late to the party, I can guarantee you, I can hope that you're going to feel very, very early in a few years.

[:

I have classified myself as a... what is it? Late-early adopter or an early-late adopter. Like, I'm definitely not early-early adopters, usually just generally of products and stuff. I'd say the same for blockchain. The only one where I could say there's an exception is ZK, I think I was a pretty early adopter.

[:

Yes.

[:

But the only one, I mean.

[:

You committed to doing a podcast extremely early. I mean, what was... other than Groth16, the paper being out, plus a couple test implementations from Starkware, was there... What was alive when this podcast started?

[:

So I don't think Starkware was alive, actually.

[:

Okay. Very good.

[:

But Bulletproofs existed, as far as I know. So there were a few variations on the concept.

[:So that was what,:[:

2017 was when the show technically started.

[:Oh,:[:Knowledge Podcast in January:[:

Got it.

[:then the ZK Summit was March:

I think it's important for us to introduce for the audience what Farcaster is. I know we just kind of talked about our own experience with this, I'm assuming our audience is aware that it's something to do with a social app, but, yeah, what is Farcaster?

[:

So Farcaster is a decentralized social network, and if you download one of the apps that connect to the network, Warpcast, and use it today, you'll see something that looks and feels like 80% Twitter, 20% Reddit. There's a feed, people are posting stuff, they're talking to each other. It's primarily text-based. And there's also communities where people can organize into subgroups and do interesting things in more niche categories. That's what Farcaster feels like.

But what it is, and the decentralized component of it is that there's no one server that controls or runs Farcaster. There's actually many hundreds or thousands of different nodes that all have a copy of the Farcaster network. And what that means is for developers and people building on the network, they have sovereignty and freedom to be able to build the applications that they want, knowing that there's no one that can cut off their API access or shut them down. And that's one of the reasons that Farcaster, we call it the open or the ‘programmable social network’, is like you can actually build on top of it, and you have confidence that the things you're building and the apps you're creating are going to be able to reach your users and there's no intermediating party that sits in between.

[:

There's like Mastodon, which has kind of come out as this alternative to social media, also decentralized but more federated. I actually used that a long, long time ago. I remember the issue there was that you could almost have duplications of your identity in these different servers. It was like no unified sense of truth. But in the case of Farcaster, at least it seems like there is. Is there? Is it just built completely differently?

[:y. I mean, it started back in:[:

Yeah, yeah, yeah.

[:

And then we had Mastodon ActivityPub. There's been Secure Scuttlebutt. There have been a bunch of very interesting approaches that have tried to decentralize it in different ways. The other very interesting thing is social media is kind of the one form of communication or media that isn't actually decentralized. Because if you think about everything else, email, the Internet, television, radio, SMS, they all have this sort of protocol and multi-party communication, and that's never existed for social. It's always been single player. If you want text, you go to Twitter, if you want your friends, you go to Facebook, or maybe it's Snapchat now. And I think the reason for that has always been that technology has lagged behind what people wanted in quite a significant way, where it wasn't really possible to build a lot of the stuff that makes a good social networking experience. Because the traditional way that social networks decentralized was what you can think of as federation.

So this is the idea that like, I run a server, you run a server, maybe Tarun runs a server that we both connect to and use. But this leads to the fragmented identity problem that you talked about where you now have to know that someone lives on a different server and how to reach them and how to connect to them. It also introduces some very subtle challenges with how you collect data. So one of the biggest problems in building a decentralized social network from an application developer's perspective is I want quick and easy consensus. I want to be able to ask the question, what are the last ten things that somebody said, and be able to get that answer definitively and quickly. And if you look at the Internet, which is another federated decentralized network, that's actually a really hard problem. Google solved that problem. And the reason it's hard is because there are hundreds or thousands of millions of servers that are all producing different content and being able to fetch all that data, collect it together, deal with all the inconsistencies and challenges, and say, this is what actually people are talking about, is really, really hard to get right. And so that's kind of been the challenge with using federation.

The second approach is to use blockchains where you can say, like, hey, Bitcoin and Ethereum have actually figured out how to get all of this data and put it on a single machine. So when you run an Ethereum node, you actually have quite literally every single transaction in the world that has ever happened on one box. And then you don't have fragmented identities, you don't have to ask the questions of where is this data? It's all here in your machine. And so it's this very nice, convenient location. The challenge with blockchains, or just putting everything social on a blockchain is, one, it's expensive. You actually have to pay for every transaction. And if you go and tell a user, hey, you have to pay for every post, that's actually a level of friction that they're not excited about. People want these actions to be fluid, interactive. You want to encourage people to talk to each other. The second challenge tends to be that if you look at something like Twitter, people are posting about 100,000 updates a second. That's how many operations are happening in real time. And even the fastest blockchain today is like 100x slower than that. So doing that today is not really going to work that well.

And one thing that people say is like, look, blockchains are going to get faster and they're going to get cheaper, so why not play the long game? Why not wait it out? 100x will come in the next two, three, five years. And I think there's an interesting second order challenge there, which is, one, blockchains have to deal with double spend. You can't allow the same money to be spent twice. And so that limits the strategies that you can use for consensus. Social networks don't quite have that problem. The second challenge is blockchains are inherently financialized. When you build a sort of Turing-complete programmable chain, people can do whatever they want on it. And so even if fees go down, someone might build something that is financialized, that is orthogonal, that creates a lot of demand and drives up prices and makes the network congested. I mean, you can see how this happened with Bitcoin Ordinals, with other things. And so it would be very frustrating if you're on a social network and you're trying to post and it's like, sorry, you can't post, somebody's buying this NFT. And so separating the social data layer from the financial layer seems like actually a very required thing for the user experience to feel good.

[:

I mean, in what you've just said, I have so many questions and sort of threads I want to pull. But actually, before I do that, I want to understand a little bit about what got you into this in the first place. Why are you working on this? Like have you worked at Twitter or something before?

[:led Moocher. This was back in:[:

Yeah.

[:

But I think over the next few years, all of these social networks, Facebook, Twitter, everybody kind of shut off their APIs and we kind of went into the dark days of social developers and it became clear that it was infeasible to build a business. You saw Zynga became this huge public company and then nearly get killed by Facebook and all of this stuff, and it became this like... well, nobody serious builds on a social network because you don't have control over the APIs, and that dream sort of died out.

And I think after leaving Coinbase... So my cofounder, Dan and I both worked at Coinbase for about five years. That's where we met each other. We were thinking about what got us excited and what we wanted to go build and work on next. Like if we wanted to take a 10-year bet on building something that we thought would be very important for the world and for society, I think both of us got a lot of energy from thinking about social. And it's like, why is this consistently the only system that isn't decentralized as far as communication system goes? And why hasn't this happened yet?

And as we started to pull the threads, it felt like the timing was right. Like Ethereum and blockchains had solved sort of these core consensus problems and showed that you could actually have the single node global state model, which seemed really cool if we could adapt that to social in some ways. And it also felt like the timing was right in terms of people's desire to want to be on decentralized networks. And we just felt like this is the most interesting thing we could be working on. And so we've been doing that for the last three years.

[:

Cool. I want to understand where you start from, though. So you start... you have this idea that you're going to be doing a social network. There's now some scaling tools. But I think if you're talking about three years ago, even had the rollups been rolled out? Like even the stack you're built on today, I don't know if it already existed or it was sort of still a dream.

[:

No, it didn't.

[:

Okay.

[:ed kicking around the idea in:

And so we started off by saying, okay, we have to figure out a way to separate the data layer from the blockchain. We can use the blockchain for core things like registration signups, but we have to actually move the data off. And v1 of Farcaster, we actually took that federated approach that we talked about, similar to what these other networks did. We said basically, hey, let's put identities on the blockchain. So your username, your account that you register, so there's no fragmented identities. But then everyone runs their own server and stores their data. And within a few months, we quickly ran into the problems of like, hey, all of these servers are starting to diverge a little bit, it's getting hard to maintain them. This seems really not ideal.

And so we evolved into thinking about Farcaster v2, which was this borrow from the Ethereum node philosophy of you can run a box and that will sync with every other box and have a copy of every message in the world. In exchange, it places some constraints on how much data you can produce, because if everybody could produce an infinite amount of data, well, it wouldn't fit in that box. And it has an economic model where you have to pay to get storage and store some data. And that's how Farcaster v2 came out. But it was really through a lot of trial and error and building the thing, getting users and developers realizing why it didn't work, and then repeating that cycle again.

[:

Where was the data being stored?

[:

So it's our own off-chain system. So we call it a hub, and it's effectively a node in the network. So you could go today, download a hub and run it, and in an hour and a half it would sync with all the other hubs and it would download 140 gigs of data, and that's the entirety of Farcaster. That's every message that has ever been posted, and you now have that on your local machine. And if you send a new message, you can send it to any hub and it will accept it, it will verify that it's from your identity, it will check the signatures and all of that good stuff and then beam it out to every other hub. So if you're running a hub, you also have this guarantee that in real time you're getting all of this data that you can use to populate your app and your database.

[:

So then that kind of comment about consensus, is it consensus of the hub data specifically that that's where you're kind of building something different.

[:

Exactly. So to give you an example, let's say you wanted to post "Hello World" and then you wanted to delete it. So one question is, how do these operations happen? What happens if they come out of order? So you start off by creating a message that says "Hello World", you sign it, you put it out there. Now all the hubs have this "Hello World" message, it's great. You decide you want to delete it. You go and say, delete this message, I didn't want to say this. You post another message saying, hey, this just got deleted. Now, in an ideal world, the add arrives and then the remove arrives, and so every hub kind of knows, okay, this was added and then this was deleted. But what happens when those messages arrive in the opposite order? Some hub ends up seeing the remove message first, and then the add message, how do you decide which one is the origin?

And Farcaster actually uses a very simple consensus mechanism built on what we call CRDTs, or Conflict-free replicated data types. It's a bit of a mouthful, and it's actually a very simple concept with a very complicated term. But it means that it has simple rules that every node can decide what the final state should be based on this. So the simple rule in this case is if you have removed your message, even if you've added it, the state of the message is always deleted. So very simple concept. Two messages come in at the same time. They always converge to the same thing. And we take this sort of simple rule set and apply it to more complex situations, like when you're replying to yourself, when you have too many messages and all of that. And so the cool thing is you can just blast out these messages to everybody and each hub can get them, and it can reach consensus by itself. It never has to communicate with any other hub in the network to figure out what the state is, which is something you have to do with crypto and financial systems because you need strict ordering, and you have to know that Alice sent money to Bob before Bob could send it to Charlie.

[:

One interesting kind of thing, at least since we're talking about consensus in social protocols versus financial protocols, is there's sort of a notion of blockchain care about spam in a certain way. Right? Sybil resistance is like I care about spam being not tolerated unless you pay a certain amount. In social networks, spam shows up, but it shows up in a sort of different layer. It's not showing up in the transaction level types of things. How do you think about what types of things you want the equivalent of sybil resistance, like some properties you want in the network that need to be enforced by consensus versus properties that aren't. And how do you choose those for social networks versus financial networks? Because it does feel like for financial transactions, there is this fundamental thing about like, I really need to make sure that if you're spamming, you have to pay for it.

[:

Right?

[:

Yeah, but here that's not totally true. And I'm just kind of, yeah, would love to have your... get your philosophy on that.

[:

So there are two kinds of spam that are bad for the network. One is, I would think of it as like protocol-type spam, and the other one is application-type spam. So protocol-type spam is somebody who just logs onto the network and then just blasts it with a billion messages. So I come in, this is a social network... I said earlier, Farcaster doesn't have a fee for every transaction or every message, so great, let me post "Hello World" 5 billion times, and now everybody has to store this, and that's awful. So that's one level of spam, and we want to prevent that.

[:

That's on the application front, or would that be on the...

[:

This is the protocol-level spam. It's like you come into the network and you're able to douse the network with so many messages that the people running the hubs can't run the hubs anymore.

[:

Got it.

[:

Application-level spam is a little more subtle. You actually see pretty sophisticated versions of this on the apps today, and we do a lot to reduce the amount of spam there, but people run LLM bots that will take your cast, read it, post a message, and reply to it. And there's sort of this hope of maybe I'll get an airdrop one day, maybe something will happen, or you're trying to shift the political narrative. Social networks like Twitter have always had spam, and crypto has always had a lot of spam, and so social networks built on crypto at the intersection of attracting everybody. And this is less like...

[:

The vortex.

[:

Exactly. But this is less like they're generating billions of messages and more of, they're intruding on your private spaces. So you post a question about this podcast, you're like, hey, who listened to this? And some LLM bot jumps into the replies, and it's just a little icky. You're like, why is this here? I don't want this on my feed. And so that's, I think, they're not violating the protocol rules, they're not posting a billion messages, but it is not something that you want to see in your application, and it is something that apps have to filter out and very important to get right. So those are the two problems. I can talk a little bit about how we do that, if you like.

[:

Yeah, exactly. How do you think about that? Because it does seem like it influences your notion of consensus, right?

[:l say, okay, you get to store:at happens when you post your:, you get:[:

But couldn't they still be running bots just to spam for the user? They'd see a lot of messages, but then older messages would just be wiped out, but nobody's paying attention to the old ones anyway.

[:our rate limits go up to like:[:

One other kind of benefit that seems to come from something like this is that your old messages get burned. As you described that, I was like, oh, that's actually kind of an interesting idea that your old tweets disappear anyway or your old Farcast casts, you know?

[:you only have to update after:[:

I think there's two different answers to that. One is the way consensus works right now is it is simultaneously both very fast and very slow. And what I mean by that is when you post a message to a hub, that hub is immediately at consensus. So anybody listening to that hub, it is immediately confirmed. There is no 15 seconds wait for a block to figure out if this was accepted, it's just done. There's a set of rules. It processes them in a few hundred milliseconds, and if it's done, it's finished. There's a broader, slower consensus, which is how do different hubs come into contact with each other? And that can take several seconds or up to a minute before you kind of have this guarantee that 99% of the network has seen it.

The interesting thing about social networks, particularly public facing social networks, is you are actually quite relaxed in how fast messages have to come through relative to something like a blockchain. If your tweets or your casts show up 30 seconds late, almost nobody will notice that because the speed of the network is around one to five minutes. If you start getting slower than five minutes, people will notice. And so this relaxed consensus actually works really nicely for social networks. Like when our network is operating super well, it's at like 1 second and everything propagates. When it's having a rough day, it's like 1 minute, but almost nobody notices the difference between a second and a minute. So this relaxed consensus model works well there.

[:

Wow.

[:to:[:

Yeah, I guess that's sort of my question, though there is some sort of limit to that performance-wise. And I'm just kind of curious how you view the scaling of that, because people in blockchains, they care so much about this and they're willing to die and fight over what hardware is required, what level of... So I'm just kind of curious how you think about that. Because I assume it's more relaxed in hubs, obviously for a lot of reasons, but, at what size does it change your calculus, like network size?

[:

I think about... the short answer is I think our architecture will change at like... So we have about 100,000-ish daily active users today, give or take a little bit. I think this network architecture will scale quite linearly until we get to somewhere between a million to 10 million daily users. And then I think we have to change the way some of these hubs work. And the biggest constraint on hubs... so if you think about blockchains, the biggest constraints tend to be compute, bandwidth and storage. Those are kind of the three resources that you're constantly optimizing for on Ethereum. With hubs, it's almost entirely storage and bandwidth, and we don't care as much about compute. We don't actually do a lot of compute beyond checking signatures, which is usually pretty fast. And we don't also care about hubs as being a vector for security for the networks. They're really all about storing data for users and making that data widely available.

So the biggest challenge is, as the network grows, the sheer amount of data that it has to store gets so big that you literally cannot rent a box in the cloud that will fit all your data. This is like you get to like 30 terabytes. Now, that's quite a big way off from where we are. But at that point, you have to consider a bunch of other techniques. You can... Sharding, I think, is one of the most common ideas that's been bandied around, and I think that will actually help us scale. And the very nice thing about our consensus model is it is very easily adaptable to sharding. Again, because there is no cross-transaction consensus, you can very easily say, hey, all FIDs from one to 50,000, you run on hub type A, and all FIDs from 50,000 to 100,000, you run on hub type B. And you can just have hub types A and hub type B. This is like a very naive version of sharding, but it is very trivial to implement, and I think it's something we'll have to do once we get to the 1 million, 10 million user set.

[:

Have you thought of just pruning the old stuff? Because this is something about social networks where it's like, yes, sometimes people dig up old things that they've tweeted, but I almost wonder, like a model where you highlight the ones you want to keep from the past and then you let the rest... Even if you're not past your own individual limit. Have you thought of that?

[:

We have.

[:

It's like, would be a mixture of Twitter and Snapchat or something. I don't know.

[:

We have... It would actually be very trivial to implement this as an app. You could just build it in as a feature to any app to expire older messages, and they would just get kind of purged out and you could buy enough storage so that your newer messages get set. So I think this would be quite easily implementable as an idea on top of the protocol today.

[:

You mentioned sort of these actors, the hubs, but you also mentioned the hosts, and I'm kind of curious about the apps. When someone wants to interface with Farcaster, they often have to find something to download, and it's not Farcaster. So what is that agent? What is that application? And does it run a hub? Like, yeah, what's happening under the hood of those?

[:

Yeah. There's a few types of developers that are building things on Farcaster. So one type is, I'm building a Farcaster client. I'm literally building a social networking app. This is meant to be used to connect to the network, post your messages, and do all this stuff. There's a second class of developers that are building social network, orthogonal stuff. So this is like tools and utilities to make your life better on social networks. So an app focused on like, oh, you can schedule your posts and have all these advanced features and do stuff. There's an app called Supercast that does this really, really well and has a bunch of power users using it. Or there are tools for analyze your following and see who your biggest followers are. So all these adjacent things that people build that are not necessarily full-fledged clients, but are very useful tools.

The other category is people building other social networks that are creating content on their networks, but using Farcaster for distribution. So Drakula is an example of this, which is like a Web3-TikTok type app that has its own social network, but bootstraps off a Farcaster social graph. So when you log into Drakula, you actually sign in with your Farcaster account, and all of your friends are there, and you record videos, you post them on Drakula, and you can publish them back to Farcaster to share them with your friends. And the powerful thing for Drakula is when someone signs up, you're not having them find their friends and start their network from scratch. You immediately have their profile picture, you know who they're following that's already on the network, and you're able to get them started in this thing.

So each of these three classes of developers, I think, has a different interaction with how they build on the network. And there's two ways you can do it. One is you can run your own hub. So this is kind of the hardcore mode of like, I know what I'm doing, and I run my own hub on my box, I get all my data, I build everything very low level. The other is there are now Alchemy-like services. So there's Airstack, Neynar and Pinata, which are like, hey, we'll run the hubs for you, we'll actually get all this data into nice APIs, and you can very easily trade a little bit of decentralization for the ability to build your app a lot faster. And so a large number of developers are choosing services like that to start building on top of.

[:

That's so interesting. Anything posted through these though, do they all end up on a canonical base chain or area?

[:

Yes.

[:

Okay.

[:

They all end up on these hubs. So basically message comes down, propagates to one hub, spreads to every other hub, and then you can pull every hub and you get a copy of these messages.

[:

So one tiny thing related to what you just said is, I think obviously, given the history of social networks, one of the things that has always been revealed is that like, hey, it's really hard to build apps, you get locked out. The platform says you can't use our data, dot dot dot dot dot. We know these history of all...

[:

Changes the APIs.

[:

Failures. But if we look maybe in a more forward-looking light, there's sort of this sense in which, hey, in a decentralized social network, you don't have those problems, but you're going to have a very different ecosystem of applications than the traditional social networks. And in the same way, if I look at DeFi, DeFi has a very different set of financial applications than traditional finance, but they seem to work better because you get composability. Like, okay, this is a very inefficient way to do a trade, but because I can compose it with a loan and I have no risk in this kind of atomic bundle, it actually is fine. I'm willing to take some inefficiency somewhere else to gain sort of an aggregate benefit.

There's something that I've kind of been curious about, but I don't have enough educated thoughts on, which is in social apps, these people building on top, now they get these guarantees, they could have composability. Someone like Drakula now gets some extra benefits. So what do you think the app ecosystem looks like, and how do they interact with each other now, if they have a common substrate. You know, the same way that DeFi protocols, they had this common substrate that allowed them to make more complicated things out of simple things, it sort of feels like... Maybe this is asking for too much, but it's sort of like what is the thing that causes this network effect amongst the apps that build on top. Like, what do you speculate it is?

[:

Yeah, it's still early, but I think there are three things that are starting to emerge. The first one is access to social graph, which I think is extremely important and today does not exist. So if you go to Twitter and you say, I want an API, and I want this API to get all of Anna's followers, the documentation actually says this exists, but if you go try and use it, it was shut down a year and a half ago. And no other social network even offers this anymore. They're just straight up like, no, you just cannot have our social graph. This is our most valuable asset.

And so to any developer building, if you try to build a social app, that is the hardest problem. It's the cold start of someone comes in and I can't even tell you who to follow or who to access. And so that is probably the single most valuable reason why people use ‘sign in with Farcaster’ because when you connect, you can immediately start recommending stuff to people saying, hey, these are people you've said are your friends, and that is just like a public good that is there and helping Drakula and helping all these other networks, et cetera. The second reason is, I think distribution, because if you can publish something back to Farcaster, back to the hubs from this person's account, using your app, you now have something that is visible to all their followers. And so this is where like Frames, which is the building block that we built to let you put transactions and other things in apps, has been really powerful because it gives developers a way to take their app and bring a slice of it to you in your feed, where you are more likely to interact with it and use it. And so you as a developer, don't have to solve the hard problem of how do I get someone to come to my website? You can actually take your app to them if you build something that goes viral on social. Which tends to be a lot easier to do, especially if you have a compelling product.

AndI think the last bit comes from just compounding, tooling and ecosystem benefits of creating decentralized tools. If you go look at Neynar and Airstack and Pinata and some of these tools today, it is getting incrementally easier and easier and easier to build on top of it. Like on day one, it sort of parallels the evolution of Alchemy and Infura. On day one, it was like, these are literally just the hub APIs, you just don't have to run the infrastructure. On day two, it starts to feel like, oh, we have all these smarter APIs that will let you search for stuff and pull it. And on day three, it gets really, really fancy and easy, which is here you can set up webhooks and all of this stuff. It is easier and easier and easier than ever to build a social network because the tools in the developer ecosystems are also getting better.

[:

Wow. Varun, as you go through kind of what's possible, I'm getting flashbacks to, and I don't even know if the audience knows this, but I used to run a SaaS business, a video SaaS business that used YouTube APIs and other web APIs and tried to connect them. And so I was like, we were totally at the whim of them changing APIs. It was totally challenging because that combination could only exist in our own players. We couldn't put it back into YouTube or whatever. We'd add this extra layer of context on top of video, but it could only exist outside of it.

So that speaks to me, basically what you're saying, like that in a way meant that the business I built a long time ago was very limited in terms of how it could be used, here it opens up a lot of creative space for app developers to just think of like, yeah, all of a sudden they have this social graph, they can start integrating their own applications into it. Do you worry though that it would become kind of junky at some point, because that was the other thing about, like when it's very limited and it's also kind of, I mean, it's minimal. So what is allowed in is somewhat minimal. And yeah, I just wonder if you're worried of too much kind of cross-pollination and that it becomes too loud or something.

[:

I think openness has a lot of challenges that come with it. Right? So one thing, and Tarun alluded to this earlier, which is that there's actually a lot of application-level spamminess or LLMs and other stuff that come across. And this sort of problem is pervasive across all angles. Right? It's like you have more apps and some of these apps are low quality, you have more users and some of these users or low quality. And so I think that is actually going to be an important problem for the network to try and solve because decentralization by definition means that, hey, if you pay the fee and you are an equal participant, like Ethereum does not judge the worthiness of your transaction. If you paid for it, you get to include it. In the same way, Farcaster, the protocol, does not judge the worthiness of your data. If you pay for it, you get to store your messages on the chain.

But users care about quality. They actually want a quality filter and a quality bar. And so this is where applications really come in and have to take a strong POV on like, okay, what do I show you as the user? What do I filter out? What do I surface as notifications? What do I put beneath the fold and take away from you? And that's slowly happening on our app and other apps on the network, where you're starting to see things like, okay, these are the most interesting replies, look at them. And here's a bucket of other replies that may be less interesting to you, so we'll put them under the fold and you can expand to see them. Similar approaches, I think, will need to be taken with apps and clients and other things where they're sort of an App Store where you can browse and someone has taste and is saying, these are the most interesting reviewed apps, and here's the other bucket. You can go try them if you'd like.

[:

Interesting. I'm kind of curious if someone is using a particular client and there's sort of groups on that particular client, is that in any way canonical, or is that always just app specific?

[:

The way the clients work today is when you publish the actual data, the casts or the messages, they're all produced in a format that syncs across all the hubs. So the main benefit is like, hey, all of this data is always equally available, to create it and get it on clients, it has to be standardized. Now, one of the things we do, especially in Farcaster... So we build Farcaster, the protocol, which is the underlying technology that makes all this work, and we also build one of the first apps called Warpcast, which is the app used to connect to the network. So one of the ways in which we prototype and move quickly, we call this product-led protocol development, is when we come up with a new feature, we actually prototype it in our client as a centralized, like only in this app does this work, to test and see if people actually like it.

[:

I see. I see.

[:

If it takes off and it clicks, which happens 10 to 20% of the time, we then say, okay, how do we turn this into a protocol-level feature and go ship it. And if it doesn't, which actually happens a lot in social because you don't always know exactly what people want, we say back to the drawing board, let's go and do this. And that modality will likely exist across all clients. People will try out some new feature, it'll work for their users, it seems cool. Then they'll try to incorporate into the protocol, so it works across all clients. Sometimes those experiments will work out and create really cool things, sometimes they won't. And people go back and iterate on stuff.

[:

Are Frames... I mean, Frames, I guess, were experimented in Warpcast. Are those now rolled out everywhere or are those still in experimental phase?

[:

So Frames actually ended up being this very nice thing that when we built was actually fully open and protocolized.

[:

Okay.

[:

That was actually kind of what made Frames really cool.

[:

Exceptional.

[:NFTs on Farcaster. So back in:[:

You keep saying Facebook. So I'm just curious, was it a Facebook standard originally or something?

[:

Yeah. So Facebook back in I think '05 or '06 pioneered this open graph standard where they said if you just add these few Meta tags in your website, we will then render an image instead of just a plain old link. And that's basically been stagnant for the last 15 years. It hasn't really changed that much. But now when we ship this NFT change, like ZORA shipped it and what was really cool was within a day, every other NFT platform had integrated it because, A, it was so easy to do, and B, it gave them a lot more distribution on the product. And so that was the earliest proto Frames and we just took that and extended it and started adding more features. And so it actually started as a very open protocol that worked everywhere on Farcaster.

[:

That's cool.

[:

I guess one question I have is, when you look at some of the growth of Frames initially from people, I guess this is the benefit and the curse of the open network, but people figuring out how to do airdrops and people figuring out how to take advantage of kind of the blockchain things. How do you view the overall growth in Frames over time? Do you view it as like people use it as a way of doing smaller kind of little inset applications, or do you view it as like people will start gluing them together and making sort of longer term experiences out of sequences of Frames? Because I've always wondered if like, if you think of this as sort of a... it changes a gaming element of social networks in that it could be very long term in that there's a lot of sequential interaction, almost like a game, or it could be very short term. Right? Like click here and claim your Degen. So how do you view the duality of those two?

[:

So I think when we shipped Frames, we kind of hoped that two kinds of applications would emerge as a result. The first one was on-chain transactions, because historically it's just been very hard to get someone on a mobile app to do something on-chain, and we said we want to build the best possible way to bring that transaction to you, bridge it to your wallet and let you execute that cycle pretty efficiently. That part, I think, has actually worked quite well in that there are a lot of Frames that do transactions. So there's a lot of like claim your airdrops, but there's also bots like Payflow and Paybot that make it easy to do Venmo, like sending money to other people and things like that.

The part that we also hoped would take off but hasn't yet happened, is people building applications that extend the social experience. So these are things like building in polls to actually make it easier to query your audience about something, or Inline articles and things like that. And I say it hasn't happened, but it actually has happened. It's just not as widely distributed as we'd like. So for example, Surveycaster or Ponder builds a lot of these survey bots. Paragraph builds a lot of like read articles inline. And the biggest challenge we've noticed with this, which is something that we're working on right now, is people need sort of a Frame builder or a Frame creator where it's like, hey, I want to create a poll, I want to do this. And there's actually no good entry point or mechanism in the Frame spec to start by creating something that you put in your message.

Frames have always been, I discover this in my feed, I click on a button which has all been always been good for like claim your airdrop or check this thing, but it's locked it out of these set of experiences. And so one of the things we're working on is how do you actually give these applications distribution, so when someone is writing something, they're able to just insert this app. And we actually might have something launching in the next few weeks that makes this a lot easier.

[:

Might.

[:

I think there's a lot of experimentation around what is the exact entry point and how do we make this as easy as possible, both for users who want to insert something and for developers who want to build these experiences and have control and feel like, hey, my app is actually getting distribution in this protocol. And so there are a couple of things that we're cooking there. The third thing I think is making Frames composable with each other, which is technically possible today, but we haven't seen a ton of that happening yet. And I think one of the reasons is performance of Frames, because of the way it's built, is kind of slow. Every time you click on a Frame... The way a Frame works effectively is you generate an image for every page of the Frame. And that's actually kind of a slow piece.

And so when you have to go through more than 3 or 4 or 5, it starts to get very tedious, it feels slow. You're used to mobile apps where you tap and stuff happens immediately. And so we're thinking about building a new rendering surface where you're not generating images, but you're able to actually generate like mini web pages or iFrame-type things that will be super fast. And I think that's a big blocker to these longer Frame experiences, is it's just too slow today for people to stick around.

[:

Actually, a very related question, since you brought up iFrames, is security wise, how do you think about isolation versus not isolation within Frames? In the sense of maybe I have a key that persists in one Frame or there's a signature somewhere that maybe needs to die. Because I feel like obviously mobile security is bad and there's tons of ways people exploit things like XSS stuff or injections, things like that. But I feel like crypto security is even worse because like, oh, I have all these things that I've signed payloads that maybe need to get destroyed in some way, and maybe the Frame has to persist them, stuff like that. There's all sorts of lifetime management, key management type of stuff that exists. So how do you think about that and how do you reason about, like you want to build the best product experience, but you also have to deal with these kind of extra security overhead?

[:

Yeah. So the way Frames work today with the image model, is it actually keeps things fairly simple from a security perspective. So when you interact with a Frame, A, when you look at a Frame, the Frame doesn't even know you're looking at it. So there's no privacy leakage when you're simply looking at a Frame in your feed. But the moment you click on it, you send a signed payload saying, “I'm Anna, I clicked on this button and this transaction came through”. So you do get a signed payload, but it is designed to be very much an intent of I clicked a button that proves to the user it can't be used for anything else. So there's no way to unlock money or do anything more fancy or more dangerous with this right now. So you just get these signatures that are verifications that you took an action.

And then Frames can return transactions to you. And this is kind of the one part where things do get a little scary from a security perspective because you could have a bad Frame that returns a wallet drainer or encourages you to do something. The way we've approached this bit is by saying, okay, we are actually going to insert transaction scanning. So using tools like Blowfish and Blockade, which have actually been surprisingly effective at identifying transactions that are drainers and just warning users before they click on it. We actually see on our backend, every so often someone will come in, try to test a drainer and post it and see that it fails, and then they just never bother to post it again. Like they come to our test tools and try it out and realize they're not going to get through and then just go away. So people want to do this, but they realize it doesn't really work that well anymore.

So that's the current model. I think if we go to an iFrame model, things get a little fancier and a little more complicated because you can do a lot more stuff in there. You can store data, you can have things on the backend. And I don't think we honestly have a great answer right now for how we build that isolation. That's one of the reasons why we might choose to go with a sort of very simple SVG or HTML, CSS surface instead of an iFrame, because it lets us constrain that security model a lot more. There's also performance challenges with the iFrame, especially on mobile. If you have three or four of those, rendering them quickly is pretty tough. So we may end up on the HTML side of things for that reason.

[:

Interesting. We had a question from a co-host who is not here, a sometimes co host of the show, Kobi, and he asked “when ZK Frames?” and so I just thought I'd ask it now. Is that a thing? And what is that? What actually does that even mean? A ZK Frame?

[:ink we actually tried that in:[:

Interesting.

[:

The second application, I think, is more at the protocol level, which is, I think as blockchains get cheaper and cheaper, as we're able to do sort of more the verifiable compute aspect of ZK, and as Layer 2s get more and more efficient, there might be a hybrid hub model where we use our fast consensus model for storing all of this data quickly, but we actually have an archive model where there's a blockchain that stores older historical data for backup purposes, that is actually using a ZK network to store and processes stuff because they've actually brought down storage and consensus and processing times fast enough that some of this would actually fit it. That's a little bit more out there and researchy. I don't think there's a clear, like here's how we would apply it today, but those are the two ways in which I think ZK can come to Farcaster.

[:

Interesting.

[:

Well, I guess another question and maybe we covered this. So apologies if I totally didn't get this, but when I do execution for a Frame that's all client-side, none of it is stored on the hub. Is there any remnant storage or compute for a Frame that is kept on hubs other than just the storage div?

[:

No. So a Frame is effectively an interaction between you and the server that the Frame is running on, and things that happen as a result of that. So the simple way to think about it is a Frame is effectively a slice of their webpage that's specifically designed to fit into this model of you give me an image and four buttons and I can click on them. And when you click on them it makes just like an HTTP request back to that hub. The cool thing is that request is cryptographically signed with your Ethereum Farcaster identity key, so that person always knows that you're interacting with it.

So it's almost like I OAuth'd into this application and I'm now clicking on this as Anna or as Tarun, so we now have this interactive thing. And then you just kind of go back and forth with that application and it's all private. So it's purely between you and that application. Now you might get a transaction as a result of it. So the app might say okay, now you go and do this like buy on the blockchain or you send this money, that of course gets committed to the chain. But everything that happens between is purely between you and the Frame server. And the only part that's on hubs is the link to the Frame that says hey, this Frame exists in this post and comes from this website which can hydrate that Frame.

[:

Yeah, I guess when I was hearing ZK Frame, I was just assuming maybe there's some execution trace of the Frame that the parties post to a hub and now they have some guarantee that they actually did this. When you ask what is the ZK Frame?

[:

Yeah.

[:

Which it seems like you could do today.

[:

I think there are cool... And I sort of said this as a general Farcaster thing, but you could also apply it to Frames. I think there are very interesting privacy sensitive applications that you can't really build today because Farcaster is effectively a public social network, right? So one way to think about all the social networks that exist today is they're on a spectrum of private to public. So on the left side you sort of have your Snapchats, your Facebooks, where you are largely talking to people you now, and your expectation is that this stuff does not get out anywhere. And on the other side, you have your Tiktoks and your Twitters, where it's, I want this out in front of as many people as possible.

Farcaster's architecture today does not make it easy to build the former. Everything is public, everything's unencrypted, everything's private and out there, which makes it very, very hard to actually do some of this stuff. But I think privacy, whether it's through partial ZK forms or other forms of encryption, is going to become increasingly important as we get into things like offering direct messaging, as we get into, I want to have private groups that I have with my friends. Those are not things that exist at the protocol level today, and so that's, I think, a very interesting and important area of research for building more types of social networks.

[:

So I want to understand a little bit about where it lives. You had sort of mentioned the hubs, but then you also mentioned a blockchain. And I always heard that the activity of Farcaster had influenced Base. So are you built on Base?

[:

The way to think about the lifecycle of Farcaster is when you sign up and create an account, the first thing, the very first thing you do is you make a transaction to the blockchain. We actually use OP Mainnet, which is part of the Optimism Stack that Base is also a part of. And what you do is you create your account. So you get an account ID, you get your public and private key which says, hey, these are the keys that I'm going to use to create and sign messages. And that's it. That's pretty much the only time you have to interact with the blockchain to use Farcaster. Beyond that, everything that you do is you use those keys that you've set up to sign messages and you send them to hubs. So they're never blockchain transactions, they are sort of Farcaster messages, as we call them, and they're just sent entirely off-chain, there's no cost, et cetera, et cetera.

But the cool thing about Farcaster is you can integrate with anything that you like inside the application. So there's been a lot of growth in activity on Base, particularly around NFTs, around artists, around transactions and projects, and a lot of that has come into Farcaster through Frames, through people sharing it. And so Farcaster is very popular in the Base ecosystem. The Base channel is one of the biggest channels in Farcaster, and so it's actually sort of taken up with the ethos of that. But Farcaster also supports for example, Solana. Like, you can connect Solana addresses and do transactions on that blockchain. And so it's really like the identity layer is built here, but we can interop with any blockchain and make it so that your experiences on that chain and transactions feel really, really native inside your social app.

[:

So you built it on Optimism. Why did you choose Optimism? And would you ever switch?

[:

I think the truly honest answer is we could probably build it on any sufficiently cheap blockchain right now and it would be fine and people would not notice the difference. So if we shifted from Optimism to Base or Optimism to Solana, it would work reasonably well. These chains are fast enough that most of the costs in execution are not that exposed to users or changing the experience. The way we thought about it is, look, we want to be on a chain where transaction costs are low so that when you sign up, it's not prohibitively expensive, and the network is fast enough and scalable enough and decentralized enough that you have credible ownership over your thing.

The other nice property is, we are not tied to a chain. Let's say tomorrow we decided that we had to move to a different chain. Something terrible was happening, or something great was happening over there, and we needed to go, it would be possible to say, okay, we're going to do a migration, we're going to take this and move it over here and put it on this other chain and copy all the data, resync everything and do it. The honest reason why we're on Optimism and why we're on Base is I think the community felt very, very Farcaster aligned, and was very supportive and participative in the early Farcaster discussions, just like a lot of our early users came from those communities. And because we said, like, hey, this is a credibly decentralized project, it was fast enough, good enough, and the people are aligned with building on using Farcaster, it just felt like the right place to start.

[:

That's interesting. Would you ever have your own L2, though?

[:

There's actually been something we've thought about, right? Because there are other Optimism projects like Worldcoin, that actually are now doing their own L2. I think having our own L2 makes financial sense in a world where we are generating so many transactions that the savings on the sequencer from being able to capture those fees would let us reduce costs for our users. So I think if we were getting like, I don't know, 1 million sign ups a day or something like that, we would say, hey, it's actually cost efficient for us to go run our own L2 and then pass those savings back to users. But I think in the current world, it's just a lot more time, energy and hassle and building on OP Mainnet or building on Base or these chains is a lot better and easier for us.

[:

And it sounds like the only interaction with the chain is on that signup moment. Right? It's not in the texts and the casts that you're sending back and forth.

[:

Exactly.

[:

But could you imagine other on-chain activity that you could incorporate into future iterations of this beyond just signing up?

[:

So there are a few things that already happen. So one is account recovery. So if you lose access to your account, classic social problem, everyone's lost at least one crypto wallet in their lifetime. It's very painful if you lose your following and have to rebuild it from scratch. So one of the things you can do in Farcaster today when you sign up is you can nominate a second wallet to control your identity and say, this is my backup, if I go down, you can use this to do things. So that, actually that recovery happens on-chain. So when you sign up, you associate another wallet. So if you lose your account, you do this. And we process hundreds of recoveries each day where people are having to recover their account. So that happens on-chain.

There are likely going to be more parts of Farcaster that move on-chain. One of the things we are actively in the process of decentralizing is channels where you can create these groups or these communities that are focused around a specific topic and you can post in them. This is very early in that product phase where it is still a Warpcast feature, but we are trying to move it so that the ownership of a channel is actually something that's on-chain. So if you build and create a community, and then one day you want to hand it off, or you want to sell it, or you want to share it with someone else, that is actually like an on-chain artifact or contract that you can transfer ownership of. And so that's something that we might do on-chain soon.

[:

There's one insanely large ZK channel that I'm in, and I've always sort of wondered if that was something you could find across many different applications, but it sounds like right now it only lives in Warpcast.

[:

The content lives across all applications. So when you post in the ZK channel, you're actually creating a cast, tagging it with ZK and posting it there. The part that is Warpcast only is management and ownership of the channel. Like who is the person that gets to decide what shows up in the feed? The way to think about channels is they are curated spaces. So anyone can post in a channel, but the lead or the moderator gets to decide what shows up on the home feed. So they're sort of like tasteful renditions of the content in there. And moving that moderation piece on-chain is the part that we are focused on right now. Because there's actually a certain amount of nuance of how do you expose all of this data? How do you track ownership and all of that stuff?

[:

One thing I've actually... is kind of related to what we were just talking about, but I remember there was a point at which the identities lived in multiple places. So, like Solana and Optimism, is that correct?

[:

We originally started on Testnet, so I think it was Sepolia back in the day, and then we moved to Optimism. So we've always existed on a single chain at a single point in time, but we've moved between chains. The thing that you might be thinking of is we do allow you to connect wallets to your Farcaster identity. So you sort of have a primary Farcaster account, but you can say, hey, I own this Solana wallet, I own this Ethereum wallet, I own this other thing.

[:

Oh, I see. I see. You do like an attestation.

[:

Exactly.

[:

Yeah, I see. Because I was sort of wondering how that worked because I didn't quite look at exactly how it was implemented, but that makes sense. And do you foresee that ever changing where, let's suppose, say, there was sufficient demand to have some synchrony across multiple chains? What would it take to get to that point that you would want to do that?

[:

I think it's a good question. So I think the main reason for it is you actually want to build a smart contract that needs to check the identity live in the path of the transaction to do something interesting. If you wanted to do that, you could only do it on Optimism today, because no other chain sort of has a truthy state of Farcaster identities. What you could do is you could build mirrors. So you could effectively build like a mirror contract that you trust that says, hey, I am going to proxy every state change of the Farcaster identity contract onto this other change. I believe this actually exists for some ERC-20s. You can actually mirror them on L3s and L2s, where you trust a party to proxy all the things, and you can, of course, verify them in real time. But something like that would let you bridge the state of Farcaster identities across so they're composable to all of these contracts. Modulo some trust property of like I trust that this person isn't violating that rule.

[:

Right.

[:

Earlier this year, there was this moment where just a ton of people were moving over to Farcaster. I am guilty of being one of those people who yoloed in when everyone was talking about it. I think it was like January / February. But since then, there has been sort of at least a narrative of people returning to crypto Twitter. I'm just curious, on your side, from where you're sitting, what does the trend actually look like? Was there a major spike in January? What caused that? And also just the general larger trend, what it looks like?

[:

Yeah. So if you kind of look at the growth graph of Farcaster, we were sort of flat and growing a little bit for most of last year. Frames happened in January, and that was like a big aha moment for a lot of people where there was a lot of hype, a lot of excitement, and it sort of went parabolic, where I think we 10x'd in like two weeks and things went really high. And I think as the euphoria settled, a lot of folks who jumped in because it was exciting were like, okay, there's not actually something here for me, and it sort of settled back down. I think we're still at about 4x to 5x higher than where we were when we first started, but there has sort of been a trending back down of like some people have retained, found a home and found it fun to be on Farcaster, some people have kind of returned to Twitter or to other apps or whatever.

Fundamentally, I think Farcaster, it is very hard to compete with another social network directly. In fact, I don't think that's ever really succeeded. Like you can't be a Twitter replacement and sort of beat Twitter at the game. Farcaster has to be something compelling and different and that stands on its own merit, that actually feels different to Twitter. And so the things that we're investing in now and the things that we think will drive growth for Farcaster are, one, making blockchain transactions super native and super powerful. And blockchain identities feel like first class citizens in the app. So you own NFTs, they're part of your collection. You have transactions, you can do them within your feed. You want to send money to people on Ethereum, you can do that right from your Farcaster app. Like, all of that stuff is sufficiently different from interacting on Twitter, where the blockchain components feel native to your day-to-day experience.

And so our focus is really on what are the people that are doing those things or who want to do those things today, and how can we get them to use Farcaster? And for the set of people who want crypto Twitter for more of its p2p nature and the arena and fighting there, I think crypto Twitter will be that for a while to come. I don't think Farcaster is going to be the place where people suddenly migrate to and start having all these discussions. I think it's the more crypto native stuff that's not happening on crypto Twitter that will actually be why people use Farcaster.

[:

Well, an interesting thing, if you think about Twitter overall, was Twitter sort of genesis stemmed from really being a place to get news before everywhere else, right? Like what do you think the thing is that will be like, I go to Farcaster first to kind of really get information or knowledge about something before anywhere else. Because I do feel like there is a sense in which that always seems to be true for different social networks.

[:

I think the honest answer is we haven't really cracked that yet. If you look at the reason why people joined Farcaster in year one is it just felt like a fun group chat. It was a bunch of people that were, like, two to three degrees separated from Dan or myself, who were in crypto doing similar things, and it just felt fun to be here. And I think that group chat momentum has grown and coalesced a little more, and it's now, 10,000 people every day instead of 100 people every day. But I would still say that you don't find out about the newest project launch in crypto by coming to Farcaster first. You'll often find it on Twitter first or soon after, and it's like cross-posting.

So I don't think we are going to beat Twitter on news, at least not in the near future. I think where we are going to win is sort of unique content, things that you're going to be able to do here that you can't do anywhere else. So an example of something might be if someone launches an interesting on-chain token or an on-chain thing that you can interact with, you come to Farcaster because you click a button in your app and you're able to do that thing on-chain. You don't get to do that on Twitter, you can't do that on Twitter. And so that's the kind of stuff that we think will drive Farcaster activity and create something where it's like, this is my reason to be on Farcaster every day.

[:

Are you worried about having to build out the moderation side of this, at least for the client, as you describe these things like just... We talked about spam, but we didn't really talk about scams or terrible things that often flow into social media projects.

[:

I think it's going to be a very, very important part of what we're doing, and it's actually something that we have to get right. So if you think about like, what are the challenges with moderation? I think there's a few different categories. Right? So first off, one of the things that you talk about most often is really terrible stuff, like CSAM, all the stuff on the edge. The thing about Farcaster is Farcaster is a purely text based decentralized network. No images or video or data are actually stored on the hubs. It's just pointers to those items. And it turns out that most video and image hosting sites like Cloudflare actually do a pretty amazing... You can literally check a button that says, get rid of all of this stuff and they will just filter it out for you. So literally, every application that builds on this has a built-in filtering mechanism for the really bad stuff, which didn't exist five years ago. Like Facebook and Twitter basically built all of this from scratch. Now it's a feature in a cloud service provider. I think the second... The level that will actually be very interesting and challenging is the spammy content, which is...

[:

Scams.

[:

And the spam... Yeah, both of them. The spams and the scams. Right? How do you get all of that locked down? I think with both of those, there's a decent amount of reporting, moderation, controls, tooling that we have to build on top of the network, and we've already started doing some of that. The really cool thing about Farcaster is because all of the data is open, people are actually building open source tools to help with some of this stuff. So there's this company called OpenRank that's actually building ranking data for Farcaster, where if you're building a new app, you can just plug into OpenRank's rankings and you will immediately say, okay, these are the high quality users, these are the spammy users, this is how I can generate my feed. So I think one of the things that will be really powerful is having many eyes on this and having financial incentives to go build that, means there will be a lot of stuff that you can just use out of the box to get you bootstrapped, that a bunch of other smart people are spending all of their time optimizing.

[:

I mean, I see two futures. One is I think the open-sourceness means there's going to be a fairness and a lot of people to work on this problem. But what if there was just a massive group of people who had an intention or an ulterior motive? Would the community, this very decentralized community, be able to sort of prevent stuff like that?

[:

The answer to that question really comes down to what you believe is more efficient at solving problems. Do you think that those kinds of problems are best solved by a company like a Twitter or Facebook that has an internal team that's analyzing all of this data, that has super tight control over it and can shut everything down, or do you think it's best solved by putting everything out in the open and having a bunch of different smart people go over and analyze and come up with the best solutions? And I think historically the answer has been, in the short run, centralized faster companies always win, but in the long run, over building... Over enough time, the open decentralized protocols get better and better and better and compound and actually end up beating and winning in the longer timeframe. And so that's what we believe, right? It's like, yes, there will always be attempt... if a social network is successful enough, there will always be attempts to manipulate attention and to control how people are interacting. But if you make that data open and public and make it easier to find, adopt and modify that, that is probably going to be much more effective at catching and identifying some of this stuff than relying on a single party doing it behind closed doors.

[:

I always get the sense the decentralization that works best, like most effectively if there's sort of some set of guidelines, or even if it's behavioral rules, culture, something to sort of keep it a little bit in check. But yeah, interesting.

[:

Yeah, I mean, this just gets back to this idea that if I have a common public database, then it's just more a question of who writes the queries and what views are they giving me. And I tend to think that there's some set of interactions where clearly the open common framework is going to be a lot better than the ones where I don't know what view I'm getting. If I look at the history of social networks, it's like, MySpace... I'm choosing a lot of the query parameters that the database is serving people. Right? Like I'm choosing the video on my page, I'm choosing the UX layout. Facebook, I don't choose any of the UX. I only choose like an image, I only choose a small amount of text, I choose a very restricted set of things. TikTok, Instagram, I kind of don't choose the feed anymore. I don't really influence... actually, the stuff I see is very not linear and completely not clear to me. So I don't know what view I'm even getting. TikTok, I explicitly have a non-deterministic view of the network. Right? There's been this kind of sequence of things where we've gone for like, I have the database, I have a set of queries and views I get, and I have less and less and less and less control over those queries. That's a very abstract way of viewing it. But I feel like there's obviously some sort of...

[:

Same like website servers and stuff. It sounds like a similar pattern almost, like giving it up. Yeah.

[:

This is a good framework for the sort of flow of choice in social networks, which has always shifted lower and lower. I think the correct answer is not ‘return to a mode where user has full control over everything and toggles and buttons’, because people don't actually want that. The correct answer is give people a choice because there will be 10% of users who've actually staked their life on the social network, are making a lot of money, care deeply, deeply about it, and want those toggles and should have the optionality to be there. And there's like your 90% of users who are casual, who just want the easiest possible experience, who just want to use the app and have a generally positive experience and don't want to think about those toggles at all.

In fact, there's this running meme on Farcaster of this, like stated versus revealed preference. We constantly have these little experiments where we discover these things. So one of the most common things is people are like, I want to have full control over my following. I only want to show you exactly what I follow. This seems like a reasonable ask, right? But here's what happens. So Dan put out this cast on... or tweet on Twitter and said, hey, if you've stopped using Farcaster recently, give us some honest feedback about why you stopped and what was annoying. A lot of the people that messaged back about four of them said, hey, I just see a lot of Degen stuff in my feed, I'm not really interested in Degen the token, and I kind of stopped using the app. And I went in and looked at all of those four users. Each and every one of them followed the Degen channel and followed the founder of Degen and followed a bunch of Degen tokens. And this is not a user error, right? It's not their fault. But the nature of social is like, you follow somebody because something is something at a point in time, it morphs, it changes, you are no longer interested in it, and we can't expect you to go and do work every week to be like, oh, I now no longer care about this and keep tweaking it. We have to infer that based on the way you're acting and sort of take your follow as your stated preference and then figure out the reveal preference from it and turn that into the graph.

So I think that is the ideal experience for 90%, but then the 10% want their full control, different client, all bells and whistles, and they should be able to get that. And both of these users should coexist on the same social network.

[:

Well, I think that the parable I was getting... trying to get to is there's a notion in which there's only one query, one view of the database that's given to you and you can't choose one. But imagine if you could choose one. And I feel like that to me, has always been the dream of decentralized social. It's like you can choose the set of... You don't want private likes, great, then use the client that shows you who likes something. But you want private likes, okay, use the client that never shows you likes. Right? Somehow that is the kind of freedom that feels like it's missing in a lot of social networks. But the problem I guess I see is the curation aspect is just so hard in decentralized networks. How do you view feeds in decentralized networks in the long run? How do they evolve? Obviously, this is taking a huge speculative...

[:

Yeah.

[:

Lens on it. But how do kind of recommendations, feeds, automation, how does that change for decentralized social networks?

[:

So the way it's worked so far for us is we started with a very simple, quite literal, reverse chronological feed of the people you follow. We evolved that into what we called an affinity-based feed where we said, 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, let's pop the stuff from the people you like the most to the top. So you still get the same feed, but you kind of get a ranking. We've now evolved to a more machine learning model where it takes in a lot more parameters and it's a lot smarter about like... Again, taking all the stuff that you haven't read, but surfacing it to you and starting to add second degree stuff. It's like, hey, Anna and Tarun, like this, you followed them, you probably want to see this post as well. And doing that.

Where I think it evolves from here is very interesting. I think there's two things that need to happen. One is feed generation is really, really, really hard. I don't think we can expect every single client to go and invent this from scratch. It is actually like a pretty sophisticated problem, and I think you will see companies evolving. I mean, OpenRank is already doing this and Neynar is doing this, but there are companies that are now providing feed APIs where you can give them a user account and they will give you a feed, so when you start building your client, you kind of have like a feed ready to go. That I think is going to be super important, like builder infrastructure. The crazy version of feed generation is actually something like, it's actually something like a Kaggle competition or what Numerai is doing, where you can create a feed algorithm and it can run in our infrastructure and we can offer it as a service to users. So you can tap a button, connect to something, and immediately get access to the correct feed that you want, or fine-tune and pick between different feed models.

[:

Yeah, I guess the problem I see is when I think about people I know who work on this type of stuff is like, generally there's no single objective function, even for a single company. Like TikTok will segment the users first and be like, for this segment, this is the objective function we optimize. Like for this segment, which is people who like watching dance videos, their objective function is pure engagement. But for people who use TikTok for watching restaurant reviews, actually the objective function is not how long they're using the app, but how fast they cycle through different views. How long until they hit one where they're like, okay, I'm going to go and convert. And part of the reason for that is TikTok makes revenue off of those, so they actually change how they serve things to you based on whether they're getting paid for something or not, and also by bucketing users into categories. And so I'm kind of curious how you think about social networks eventually just can't have these global kind of single objective functions that people are competing on, let's say, that it does feel like they have to have these little community-based ones. And yeah, how do you kind of view that evolving?

[:

I think that's a very good insight, which is that your revenue model often drives what you're optimizing for, which drives how the feed works. And so on one level, just at the global feed, I think there will be clients that are focused on different ways of growing and making money. There's going to be clients that are just power user clients that charge like $100 a month because you're using all the bells and whistles. They make all of their money off of just the revenue, and so they will give you all the fine-tuned controls you want because they actually want give you control. There's going to be clients that make money off advertising and they'll say like, hey, this is going to be more like Facebook, we optimize for clicks, engagements, views, page views, and our model is built around that. And so that's going to be more focused on that.

I think the one interesting aspect of Farcaster is there are also channels, and each channel is sort of its own community built around a topic, and the channel moderator can curate how that works. This is, I think one of the things that's going to be most interesting or most differentiated relative to a Twitter is like, you are going to have these sub-feeds that are curated by individuals using whatever tools they have, and they're going to apply different levels of moderations and styles and filters and give you different cuts into that world, which I think is going to be a really cool experience.

[:

I feel like there's more to dig into here also on identity and the proof of some behavior that you're doing actually on Farcaster to further write an identity program. Are you exploring that at all? We're kind of out of time, so I realize that's a bigger topic, but I just wanted to get that in.

[:

I think identity is one of those things that is now emerging as a building block. So my POV on identity has always been good identity systems always evolve from well-used products. It's exceptionally rare that someone says, I'm going to create an identity system and then gets it adopted. I mean, it happens if you're a government and you have a monopoly on something and you can say, everyone needs a passport, but otherwise, every common identity system, email, login with Facebook, login with Google, has always started from a consumer product that people use, which now you have enough people using it, it's valuable to use that to log into other things.

And Farcaster is, I think, starting to get to that point where now we have a sufficient number of users that a lot of companies are integrating sign-in with Farcaster, bring your identity here. And I think it's a very powerful building block because you can now get this, like start with your profile picture, start with your follow graph, start with all of this data, and get started, and you can augment whatever identity you have. So that's kind of how I think Farcaster identity will evolve over the next year, is more and more people will likely integrate the sign in with Farcaster because it makes their apps better and their new user experience feel a lot better when and they can pull in that data from you.

[:

Cool. So, Varun, thanks so much for coming on the podcast and sharing with us sort of the whole story of Farcaster. This has been a really interesting conversation, a little different than what we usually cover. It's very application-focused. It's very much looking... I mean, just talking about social media hasn't been something we've covered a ton. So, yeah, thanks so much for coming on.

[:

No, this has been really fun. Thank you guys so much for having me.

[:

Yeah. Always good to have guests who have a very high overlap linguistically with my name.

[:

Tarun and Varun.

[:

Even though they mean very different things.

[:

Really.

[:

It's only one letter, but...

[:

What is the meaning of Tarun? I actually don't know.

[:

Youth.

[:

Ooh.

[:

Youth. Okay.

[:

And Varun?

[:

It's the God of rain.

[:

Very different.

[:

Slightly, slightly different connotations there.

[:

All right, thanks so much. I want to say thank you to the podcast team, Henrik, Rachel, and Tanya. And to our listeners, thanks for listening.