FIP: Primary Address Verification #141
Replies: 4 comments
-
LGTM - only feedback is that it may be nice to have a fallback primary designated when That said, this could be done by just having the client prompt the user and send a Either way, documenting the expected behavior for clients on edge cases like removing a primary address will take care of this 👍 |
Beta Was this translation helpful? Give feedback.
-
If we are going to do this, would it be good to replace For now, we could treat |
Beta Was this translation helpful? Give feedback.
-
One small suggestion once this change goes live - include the primary flag in SIWF returned verifications meta) |
Beta Was this translation helpful? Give feedback.
-
This sounds like
Could we introduce a new message to set this flag instead? |
Beta Was this translation helpful? Give feedback.
-
FIP: Primary Address Verification
Title: Primary Address Verification
Type: Implementation FIP
Authors: @horsefacts, @sanjay
Abstract
Extend verifications to designate a "primary" address.
Problem
Users may create many verifications associated with their fid, but they cannot indicate which is their preferred address. This is frustrating for developers and users. Developers don't know which address to use in their applications, and users don't know where to look for token transfers associated with their fid.
Goals
Specification
Extend
VerificationAddEthAddressBody
with a newis_primary
field:Since existing verification signatures remain valid, users may send another
VerificationAddAddressBody
message with a new value ofis_primary
. Only EOA verifications may be designated as primary. Users may have one primary verification per protocol.When a Hub receives a
VerificationAddEthAddressBody
message, it must:VerificationAddEthAddressBody
.verification_type
isEOA
ifis_primary
istrue
, otherwise reject the message.protocol
alreadyis_primary
, otherwise reject the message.To change primary address, users must remove their primary address verification before designating another. Clients can hide this complexity from users by sending a remove followed by an add with the user's new primary address.
Application developers SHOULD use the primary address for interactions on all chains when present.
Rationale
This proposal meets most of our goals:
Why not support primary verifications per-chain now?
We can further extend these changes to support per-chain verifications (See "Extending to per-chain verifications" below), but designating a single primary EOA is better than the status quo and can ship fast. Additionally, this design avoids requiring users to re-sign existing verifications.
Release
Changes are backwards compatible and can go out in a patch relase.
Include changes formally in the
2024.02.21
release.Appendix: Extending to per-chain verifications
We propose shipping the simple "primary EOA" model described above first, but it's possible to extend to per-chain verifications. The following changes are NOT part of this proposal, but describe how we can further extend primary verifications.
Currently, all EOA verifications have
chain_id
0, while smart contract verifications havechain_id
1 (ETH mainnet) or 10 (OP mainnet).To enable per-chain verifications we can:
When hubs receive a
VerificationSetPrimaryAddressBody
message with a nonzero chainId and EOA verification type, they must remove any “cross-chain” verifications with the same address.Users who want to configure per-chain addresses will need to sign once per chain to create a new verification.
Note: Extending smart contract verifications to to additional chains requires Hubs to have access to an RPC provider for each chain. We limited contract verifications to ETH mainnet and OP mainnet for this reason. We'll have to think about this.
Beta Was this translation helpful? Give feedback.
All reactions