Skip to content

Start typing to search the documentation.

Key Concepts

On this page

Plaintext Identifiers

A plaintextIdentifier is any string of text that a user can use to identify another user. This makes it easier to represent an EVM-based address in a human-readable format.

Examples:

  • Phone number: +12345678901
  • Twitter handle: @alice
  • Email address: alice@example.com
  • GitHub username: alicecodes

Obfuscated Identifiers

An obfuscatedIdentifier is the identifier used on-chain, to which the account address is mapped. It preserves user privacy by not revealing the underlying plaintext identifier.

The obfuscated identifier is obtained by hashing the plaintext identifier, identifier prefix, and pepper using the following schema:

sha3(sha3({prefix}://{plaintextIdentifier})__{pepper})

This ensures that even if someone monitors on-chain attestation events, they cannot determine which phone number or social handle belongs to which address without access to the pepper. The full derivation is described in Identifier Obfuscation.

Identifier Prefix

Identifier prefixes are used to differentiate users having the same plaintext identifier for different purposes and to enable composability across applications.

Example: Consider Alice having the same username on both Twitter and GitHub: alicecodes

  • Twitter identifier: twit://alicecodes
  • GitHub identifier: github://alicecodes

By using prefixes, dApps can differentiate between verification methods. If dApps follow a standard prefix convention, the corresponding obfuscated identifiers will be consistent, making it easier to lookup identifiers verified by different issuers.

Standard Prefixes:

These are the prefix values defined by the SDK’s IdentifierPrefix enum. Note that the enum key and its value differ, so IdentifierPrefix.PHONE_NUMBER resolves to tel.

  • Phone numbers: tel (IdentifierPrefix.PHONE_NUMBER)
  • Twitter: twit (IdentifierPrefix.TWITTER)
  • GitHub: github (IdentifierPrefix.GITHUB)
  • Email: mailto (IdentifierPrefix.EMAIL)

Pepper

A pepper is a unique secret obtained by taking the first 13 characters of the SHA256 hash of the unblinded signature from ODIS (Oblivious Decentralized Identifier Service).

The pepper is crucial for privacy preservation because:

  • No single party can compute it unilaterally
  • It prevents rainbow table attacks
  • It’s unique per identifier

Unblinded Signature

The unblinded signature is obtained by unblinding the signature returned by ODIS, which is the combined output comprised of signatures from multiple ODIS signers.

Issuers

An issuer is an entity willing to take on the responsibility of verifying a user’s ownership of an identifier. Issuers:

  • Perform verification (e.g., SMS verification for phone numbers, OAuth for social accounts)
  • Register attestations on-chain
  • Are trusted by applications that rely on their attestations
  • Can be anyone - Self Connect is open and permissionless

Addresses of active issuers are listed in Reference & Resources.

Attestations

Attestations are on-chain mappings between an obfuscated identifier and a blockchain address. Each record stores the obfuscated identifier, the account address, the issuer address, and the verification timestamp. Each attestation is associated with the issuer that registered it. When looking up attestations, applications decide which issuers to trust.

Federated Model

Self Connect uses a federated attestation model where:

  • Multiple issuers can exist independently
  • Each issuer maintains their own verification standards
  • Applications choose which issuers to trust
  • No single point of failure or control
Was this page helpful?