owned this note changed 3 years ago
Published Linked with GitHub

Smart Contract Wallets for Farcaster

Users who sign up for Farcaster today go through a flow like this:

  1. The Merkle Farcaster app creates a new EOA for the user
  2. The EOA is used to register an fid and an fname
  3. The EOA signs a message which authorizes an EdDSA key pair as a signer

A few people have suggested using smart contract wallets with EIP-1271. The assumption is that users already have an EOA (Metamask, Rainbow etc) which can be re-used. The flow would look like this instead:

  1. User deploys a contract from their EOA wallet
  2. As part of the deploy, the contract registers an fid and an fname
  3. The EOA signs a message which authorizes an EdDSA key pair as a signer

Pros

The main benefits of this approach are:

  1. Users who have an EOA don't need to back up a new seed phrase.
  2. Social apps don't need to implement EOA functionality and can be more lightweight
  3. The wallet can implement a more customizable recovery system.

Cons

However, there are some significant drawbacks:

  1. Signup costs increase by 3x - 5x due to contract deployment, which users are sensitive to.
  2. Users without an EOA must set up a wallet first, which is a very bad user experience.
  3. Authorizing an EdDSA key pair must go through the EIP-712 process which is still very opaque to the average user. Social EOA wallets can implement a much better EdDSA approval process similar to OAuth.

Conclusion

Using smart contract wallets would make Farcaster more expensive, less accessible to non-Ethereum users and less user friendly when authorizing social apps. The downsides seem to significantly outweigh the upsides for now.

Select a repo