farcasterxyz / contracts

Implementation of the Farcaster contracts
https://www.farcaster.xyz/
MIT License
340 stars 122 forks source link

feat: add RecoveryProxy #378

Closed horsefacts closed 1 year ago

horsefacts commented 1 year ago

Motivation

We'd like to be able to change the implementation of Warpcast recovery (for example, from a Safe multisig to a custom contract) without forcing users to update their recovery addresses. Other clients may want the same capability for their own recovery implementations.

Change Summary

Add an ownable RecoveryProxy contract with a single function that calls IdRegistry.recover. Warpcast will set this contract address as the recovery address for Warpcast-created fids. Other clients may deploy their own RecoveryProxy contracts to make use of this pattern. Note that this is an immutable contract, NOT an upgradeable proxy.

Merge Checklist

Choose all relevant options below by adding an x now or at any time before submitting for review


PR-Codex overview

Detailed summary

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

github-actions[bot] commented 1 year ago

Coverage after merging horsefacts/recovery-proxy into main will be

98.65%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
src
   Bundler.sol100%100%100%100%
   FnameResolver.sol100%100%100%100%
   IdRegistry.sol100%100%100%100%
   KeyRegistry.sol100%100%100%100%
   RecoveryProxy.sol100%100%100%100%
   StorageRegistry.sol100%100%100%100%
src/lib
   EIP712.sol50%100%50%50%19
   Signatures.sol100%100%100%100%
   TransferHelper.sol0%0%0%0%12, 17, 20, 20, 20
   TrustedCaller.sol100%100%100%100%
src/validators
   SignedKeyRequestValidator.sol100%100%100%100%