FIP: Namespaced FIDs and Address-based FIDs #102
Replies: 5 comments 5 replies
-
Thanks for the comments. Compatibility with other social networks can be achieved by wrapping FID's into some sort of DID. That's going to be a lot cheaper and easier than implementing an address based system which is expensive and has the downsides I outlined here.
I'm not opposed to adding a parallel system in the future if there are clear benefits from it.
That's only if you use an EOA wallet which has no recovery. Over 10% of Farcasters have already lost their seed phrase, so that's not a viable option for us to pursue. The address based approach can only be done with a counterfactual wallet, which may not be easily parallelizable across chains.
I can't think of a way to do it that is both secure and user-friendly. |
Beta Was this translation helpful? Give feedback.
-
Compatibility of the social graph is where Integer-based FIDs may become constraining. Link Messages will point to Integers, not DIDs. That means that different networks will need to be capable of unwrapping DIDs to verify Link messages and compose social graphs. Either:
With (a), networks need to explicitly opt-in and take on an additional technical dependency & cost to interoperate with each other's social graphs. With Address based IDs, interoperability comes at a much lower cost. In either case, technical & social complexity goes quadratic in the number of different networks in order to preserve interoperability. Flexible Storage considerations will add further constraints to interoperability. Anyway, there are certainly workarounds to these ideas, but the point is, by choosing to go with Integer based FIDs, Farcaster is making a design choice that will constrain its flexibility in the social-graph-liquidity design space. If we can find a way to solve the problems with address-based IDs and use them as the default namespace, then it means we can preserve that flexibility - especially for future work like Context Separation.
If you're referring to counterfactual smart wallets, yeah fair, I'm definitely overly/blindly optimistic that counterfactual smart wallets will eventually settle into something highly parallelizable, but tbh idk with the upcoming ZKEVMs.
Will reply properly on the new FIP re onchain signers, but basically allow the existing EOA custody address to add additional EOA-based custody addresses via offchain signatures as backups, even as m of n multisigs. |
Beta Was this translation helpful? Give feedback.
-
Using an address based system doesn't result in any practical composability - I can't jump over and post on another network with this address today, or anytime in the near future. But it does impose non-trivial costs on our users and developers, which I'd like to avoid. On a more philosophical note, I don't think there is a path to true composability between today's social protocols. Each has made different design decisions about identity, storage, consistency and features that make interop impractical. These are intentional decisions and a good thing, I think. We have very different views on what will make a decentralized social network successful, and we're testing our hypotheses. If two protocols are so similar that they are easily composable, then you probably don't need two protocols. |
Beta Was this translation helpful? Give feedback.
-
Yeah, it's not at all relevant today - the question is more regarding some potential future where there are multiple Farcaster-based networks and if that is worth building for yet or not.
Agree, though I've been imagining this mostly in the context of a multiple future Farcasteresque-based networks, rather than actually composing with Mastodon or other pre-existing protocols. I think the set of design decisions that Farcaster has made helps it stand out from many of the other pre-existing protocols, such that a version of the protocol that could run with flexible connectivity to Ethereum & cross-community-driven flexible consistency is a pretty interesting one too with regards to potential for success. |
Beta Was this translation helpful? Give feedback.
-
Thanks for the detailed proposal @musnit Ultimately, we ended up deploying integer-based fids on OP Mainnet since they provided the greatest long term flexibility (rationale in #91). Closing this for now. |
Beta Was this translation helpful? Give feedback.
-
As part of the Permissionless Onboarding FIP (#91) there has been some discussion about whether to use Address-Based FIDs or Integer-based FIDs (#91 (comment))
I think this may warrant a longer discussion with its own FIP. In my opinion, this is a significant decision that may provide additional unexpected benefits to Farcaster. I also believe there are solutions to some of the discussed trade offs of each option.
To explain, let's distinguish between FID creation/ownership-assignment and activation:
Address-based IDs unbundle Creation/Ownership-assignment from Activation. Integer based FIDs bundle them all together.
This directly relates to one of Farcaster's design qualities of "each Hub must store a copy of every user’s data", ie, there is global consensus on what the state of the Farcaster network is. It doesn't really matter that creation/ownership-assignment and activation are bundled together if global consensus is enforced on everything else anyway.
This quality imo is one critical differentiator for Farcaster's protocol from other decentralized social networks like SSB/Mastodon/etc and allows Farcaster to solve many UX issues that those networks have. However, it also results in excluding those communities due to reasons like:
This differentiator is important, but at the moment, it kills both technical interoperability and social interoperability with those networks and communities. I think Address-based IDs may be able to create frictionless technical and social interoperability with these traditional dWeb social network technologies and communities that could be a valuable unlock for Farcaster's growth and wider acceptance.
Consider the following design:
Then, this means that there could exist a non-Mainnet, federated network of Hubs that work as follows:
This could also allow Farcaster Testnets be semi-interoperable with Mainnet too. Of course it may not make sense to implement any of this now, but implementing a parallel FID system that can support future Address-based IDs enables this possibility in future.
Of course, this kind of interoperability could have a dangerous side too - if enforcement of global consensus becomes softer and more flexible than it is today, there may be, in practice, some increased risk of losing it and the benefits that come with it. It could increase the likelihood that an alternative community creates their own "Forked Mainnet" with alternative payment mechanisms, alternative whitelisted contracts or alternative bot/sybil mitigation mechanisms for activating FIDs. Reducing the technical friction and message liquidity moat for forks could be a good thing too though
Lastly, the Permissionless Onboarding FIP discusses some criteria to assess whether to choose address-based FIDs or not. Let's re-assess those with a parallel namespaced FID design in mind:
Yeah, refactor is pretty much unavoidable. Data loss may be avoidable with parallel system that allows for a backwards-compatible lane.
With a parallel fid system, address-based FIDs are more portable than integer based ids, since they can be activated via any chain/registry on the whitelist, not just a specific chain.
I suspect that there is way to introduce a new message type that would allow EOA-based FIDs to add and remove recovery keys or even configure a social recovery setup by letting them store a kind of "recovery key-chain" on Hubs, without sending any Ethereum transactions. Of course, the underlying Ethereum private key may not be recoverable, but the FID generated from it still could be. Also, perhaps something like https://darkcrystal.pw/ may be worth considering, though that may be overkill.
Yeah, counterfactual or even EOA-based are cheaper.
The parallel ID system allows for both small integer IDs and address-based IDs to coexist. Mainnet could choose to only allow integer based ones, or allow address-based fids if they pay a bit extra.
Beta Was this translation helpful? Give feedback.
All reactions