👁️Identity Schema

A simple on-chain mapping between social media and keys.

In the PORPOISE system, identities are not intended to be private or concealed, but rather to be definitely attributable to public social media profiles as well as one or more public keys used for signing predictions. Additionally, an identity in the PORPOISE network is indexed by a unique human-readable username that can be used by third-party applications to look up and fetch requisite public keys for signature verification.

The Username

PORPOISE requires each user to register a globally unique, human-readable username string. The username is publicly readable and can be changed to another string if that string has not yet been claimed. Any username modifications result in an event log so that all changes to user identity are independently auditable. Usernames are not intended to be tradable like an ENS domain name, as this would divert focus from the primary purpose of the protocol.

A username is claimed through an on-chain transaction, but the key used for submitting this transaction is not automatically added to the username's username-to-pubkey list, since this would complicate the construction of third-party apps that sponsor user transactions for UX purposes. However, a key belonging to the username-to-pubkey list may sign a transaction to modify the username.

On-chain data structures

Username-to-social:

PORPOISE implements a map data structure that that maps a username string to an array of strings. The array of strings are URLs pointing to public social media posts or bios where the human user has affirmed their ownership of the PORPOISE username. This attribution model is essentially identical to to the attribution model for domain name verification and email domain protection used in DKIM and SPF TXT records.

Username-to-pubkeys:

In order to facilitate signature verification and zero-knowledge score verification with respect to a specific human user, PORPOISE implements a map data structure that maps from a human-readable username to an array of public key strings. A user must register at least one public key in order to sign transactions with respect to their identity. Multiple keys can be registered to more easily sign payloads on different devices or on different elliptic curves or to offer protection against the loss of a key.

Last updated