Replies: 7 comments 9 replies
-
Thanks for this excellent post @qrtp! Portability for display preferences have the potential to not only mitigate confusion stemming from inconsistent resolution but also empower users to determine their human-readable identity. Couple questions to better understand the proposal:
Also wanted to surface this related discussion around storing a different type of preferences (inbox filtering/management) - https://github.com/orgs/xmtp/discussions/33?. Important to note that the inbox filtering preferences are meant to only be readable by the user themself as opposed to the display preferences which should be readable by other clients. |
Beta Was this translation helpful? Give feedback.
-
As an aside, Unstoppable Domains has an API endpoint that supports user-preferred naming resolution. In the example below, my wallet address Example
You can try it out with one of your own addresses. This API (or one like it) would be used by an XMTP client to determine a display name that respects the user's preference. The current proposal would allow the query string value to be retrieved from the user's XMTP account, so that the display preference can persist across different XMTP clients. |
Beta Was this translation helpful? Give feedback.
-
hey @qrtp thank you for raising this issue and mentioning the #24 discussion. This is a complicated topic and I know believe that proposition #24 was too complicated. At Converse, we observe that users often:
That's why:
For the last point, what is the need to have several identity providers ranked according to you? |
Beta Was this translation helpful? Give feedback.
-
I suggested a ranked list of providers for flexibility. I think you're right that most times users will have in mind a specific naming service for a given wallet, and just want that name to appear as their identity. My thinking is that it's just as easy to store a list as a single value, and it allows the solution to be used in cases we may not have thought of for clients. For example, if the ENS name in my wallet expires or I sell it on OpenSea, what name should be displayed as a fallback for this wallet? |
Beta Was this translation helpful? Give feedback.
-
That's great |
Beta Was this translation helpful? Give feedback.
-
@yash-luna and XMTP team, what would be the best approach to store such a preference value at the account level? The goal would be a publicly viewable preference, so that it's easy for client apps to determine how to display the account name. |
Beta Was this translation helpful? Give feedback.
-
Thanks for writing up this proposal, @qrtp! We built something similar to what you have proposed with the one caveat that we implemented the request/response protocol over XMTP. (The advantage of building this protocol over XMTP instead of HTTP is that you get wallet-level authentication for free.) With that said, if I could do it all over again, I would have done something more similar to https://github.com/orgs/xmtp/discussions/24. I would create an XMTP codec that allows a client to send its preferred Name/PFP and any other contact meta data desired. The UX could be behave similar to iMessage when you update your contact info. The advantage to this approach is:
XMTP Clients should not rely and address to name lookupI think it is a mistake to rely on address-to-name lookups at all in XMTP clients. Ultimately, this proposal is needed because there is no deterministic way to map addresses to names. Plus, with the advent of CCIP name lookups for domains like |
Beta Was this translation helpful? Give feedback.
-
At Unstoppable Domains we recently released XMTP chat clients on our website and mobile apps. A concern we're hearing from many users is that the current XMTP user experience is confusing due to inconsistent wallet display name rendering across different client apps. Since XMTP as a protocol cares about wallet address (as it should) and displaying the user name is pushed to the client (as it should), it can lead to an inconsistent user experience as user interacts with different parts of the web3 ecosystem. Each app has it's own way and priority of resolving the wallet address to a user name.
Example
Let me provide an example that might help clarify the problem.
0xcd0dadab45baf9a06ce1279d1342ecc3f44845af
has many domains from different naming systemsaaronquirk.eth
quirk.x
5quirks.lens
aaronquirk.eth
5quirks
quirk.x
Problem discussion
As the same wallet owner, my identity appears quite fragmented across web3 clients. While my chat history stays portable and attached to my singular wallet address, from a user experience my display name seems very inconsistent. I have no control. As a developer, I totally understand why it's like this and it doesn't bother me because I know how it's working behind the scenes. But as a user (and we've been hearing it a lot) it appears like "I'm trying to chat as domain X but I'm showing up as domain Y" to my friend on this other app. They don't know it's me, and there's no way for me to have control of my display name.
Let me be clear, I agree with the wallet address being the identifier at the protocol level and push naming resolution and display responsibilities to the client. However, I think giving a configuration for display preference to the XMTP account owner would be incredibly powerful. We have to be careful here. We definitely don't want to offer the configuration of a free form string like "display name=my name" that the user can set arbitrarily. This would open up clients to the risk of user impersonation, allowing the user to set a nefarious display name that's not derived from their wallet address. The display name must be resolved from a value on-chain using the wallet address.
Proposal
What I propose is a naming system display order suggestion, configurable by the wallet owner that can be optionally used by XMTP clients as a hint as to how to display the user's name. The values could be a typed enum. I'm picturing code kind of like this:
On the XMTP client side, this display name preference could then be queried when retrieving the XMTP account. The name resolution and display would still happen at the client side as it does today, but the user has the ability to suggest their preferred order for them to be identified. If I set
displayOrder=["ud", "ens", "lens"]
for my XMTP account0xcd0dadab45baf9a06ce1279d1342ecc3f44845af
(and the client respects my preference) then I can identify as quirk.x as a common name across apps. If I change my order to["ens", "lens", "ud"]
then I can now start identifying asaaronquirk.eth
across the same apps.I think this approach strikes a balance of giving user power to request a display preference, and the client app to either respect that request or not depending on the application needs and context. But at least having a standard in place gives the possibility of consistency that does not exist right now. I think for wider adoption something like this will be required, especially with non-crypto-native users that we want to see entering the space.
I also think that apps will support this type of preference, because it will improve the user experience. As an app owner, I would be more than happy to show the user's name as
name.lens
if I know that's what they would like to do. If they see a name that is familiar and they identify with, they are more likely to stay engaged which is good for us as a project. I think most projects will share the sentiment and get behind a standard.Related discussions
This discussion on Identity to identity messaging #24 is related to this proposal, but has a slightly different level of abstraction for identity. In the other approach, every conversation might have a different display name for "who I am talking to" and the display name decision is left to the user starting the conversation. In other words, as the user starting the conversation when I search for
aaronquirk.eth
(vsquirk.x
in the same wallet) my XMTP client would store metadata in the conversation thataaronquirk.eth
is the display name of my conversation peer.My proposal puts that initial preference of displayed name in the hands of the wallet owner, and at a higher account level vs. conversation level of abstraction. Once that initial display name decision is made, proposal #24 takes over to preserve the state of that display name. In principal, both solutions could be used simultaneously by an XMTP client to provide the best user experience.
Beta Was this translation helpful? Give feedback.
All reactions