Open spengrah opened 5 months ago
todo
ChangeRecoveryAddress
event from IdRegistry
(https://docs.farcaster.xyz/reference/contracts/reference/id-registry#changerecoveryaddress)prepareToReceive
callbefore release
Step 5: Which address should be set as recovery address in Warpcast? the user's wallet or the FD contract address?
Step 5: Which address should be set as recovery address in Warpcast? the user's wallet or the FD contract address?
it's the user's wallet. They will use that wallet in step 7 to call IdRegistry.recover()
.
A significant drawback of the current onboarding flow is that migrating an existing account from Warpcast is really painful. Users need to export the seed phrase from Warpcast, find the private key of the fid custody account (derived from that seed phrase), and then import the private key into a browser wallet like metamask. This is high friction and also introduces bad op sec practices for users.
This issue describes an alternative and much improved flow that utilizes the Farcaster protocol's recovery functionality. Every fid has a recovery address, which is authorized to transfer the fid but nothing else. The key point is that Warpcast allows users to set the recovery address for their fid to any arbitrary address. For a user, this is much easier and more secure than exporting a seed phrase.
Below is what the new flow could look like. It has several key improvements:
Recommended Flow
HFD.prepareToReceive()
. Note that only one of these (ECDSA signature or prepareToReceive) needs to be done.IdRegister.recover()
with the signature from (6) as payload