XIP-60: Private contacts

Author: Naomi Plasterer (@nplasterer)

Abstract

Proposes a way for a client to set a private contact name for an inbox that is interoperable across apps and installations.

Motivation

Instead of requiring each individual app to manage inbox naming, this allows a user to set a name for an inbox they interact with, and have this inbox name displayed across all apps they use.

For example, Alix messages Bo using an XMTP app. If Bo does not have an onchain name associated with their address, Bo will show up in the app as a seemingly random string of characters. This can be confusing for users interacting across apps. This feature enables Alix to set to set a unique contact name for Bo’s inbox, such as “Bravo Bo,” and have this contact name, instead of the random string, display across all of the apps Alix uses. This private contact name is visible only to Alix and is not visible to anyone else.

Specification

Similar to consent where you can set an Allowed or Denied state for an inboxId, private contacts allow you set a personal name for an inboxId.

client.preferences.updateInboxIdName(inboxId, "name")

client.preferences.nameForInboxId(inboxId) // returns a name
client.preferences.namesForInboxIds([inboxId])// returns a map of inboxIds to names

Using history sync methods, this will allow the private contact name for the inboxId to be interoperable across apps and installations.

client.preferences.streamInboxNames()

Backward compatibility

No backward compatibility issues.

Security considerations

Because this a personal and private setting, there are no security considerations.

Copyright

Copyright and related rights waived via CC0.

1 Like

I love this idea and think as a base it could be great and dead simple.

1 Like

Would love this in the protocol.

There will be considerations around what’s allowed — Spaces, emoji? Probably we can be as permissive as possible, since it’s just a display field.