SNS - Soma Name Service

Glossary

  • Crypto wallet: e.g. MetaMask, something that can interact with an EVM compatible blockchain.

  • User id: the public key generated from the user's id key. Also known as "tripcode". See Decentralized authentication and Tripcode generation.

  • Name: a verifiably unique user name managed by a Ethereum smart contract. Unrelated to the nickname.

Description

A user may register unique names via their crypto wallet and thereafter point a user id to a name (userid ownership verified using a signature) and a name to a user id (name ownership verified by the smart contract).

The client can do a lookup for a user id and choose to display the name instead.

Additionally, instead of storing a mode like +a userid, the server can store names like +a *name.

When sending an "Edit User Info" event (103), the client will send both userid and, if it wants to, a *name. The server will perform a (cached) forward lookup for that name in order to validate that userid really may use it, and thereafter remember the state the duration of that user's session.

When the user then tries to access a functionality that requires access permissions, such as joining a channel, the server will look whether name, instead of userid, has the necessary permissions, and if so, grant access.

Motivation and use cases

  • Names are easier to remember than long strings of random letters and numbers.

  • Clients can choose to display names instead of user ids whenever available, so other users can more easily recognize a certain user.

  • Access to channel features can be granted on a per-name bases instead of a per-user-id basis, allowing a user to change to another tripcode at some point without losing permissions.

Last updated