ivanmolto / allo-profile-metadata-standard

Allo Profile Metadata standardization

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Allo Profile Metadata Standard

This repository and the accompanying AlloProfileMetadataIssuerRegistry.sol smart contract aims to standardize the metadata stored in Profile in the Registry.sol Allo smart contract. The design goal of the Metadata Standard is to allow any entity to verifiably create metadata for any Allo profile. The profile owner can then decide whether to add that metadata to their Allo profile.

This opens up a wide array of possibilities and functionality for Allo Profiles including:

  • Organizations signaling/issuing credentials, achievements, KYC, etc., to Allo profiles
  • A standardized way to query, categorize, and reason about the metadata stored in Allo profiles

We introduce a standard .json formatting of Profile Metadata, that adheres to the following structure:

[
  "issuer_id_1": {
     "body": {
       "target_profile_id": "0x123456789...",
       "field_1": "metadata_1",
       "field_2": "metadata_2",
     },
     "signature": "0x123456789...",
  },
  "issuer_id_2": {
     "body": {
       "target_profile_id": "0x123456789...",
       "field_1": "metadata_1",
       "field_2": "metadata_2",
     },
     "signature": "0x123456789....",
  }
]

The issuer_id field is used to identify the entity that issued the piece of metadata to the given profile. While this can be anything, the intent behind our standard is that it will either be an Allo profile ID, or an issuer ID registered in AlloProfileMetadataIssuerRegistry.sol.

The target_profile_id field is the Allo profile ID of the profile the metadata is issued to.

The signature field is the ECDSA signature generated by the owner of the issuer_id over the entire content of the body field. Using this, it can be verified that the registered issuer_id or Allo profile ID issued the given metadata to the given profile ID.

As an example, here is the metadata used by Alloliance for KYC:

"alloliance_kyc": {
    "body": {
      "target_profile_id": "0x123456789...",
      "kyc_ok": true,
    },
    "signature": "0x123456789....",
}

The AlloProfileMetadataIssuerRegistry.sol contract is currently deployed on Arbitrum Sepolia at address: 0x9BAD40cD7c4d8Fb9b66778B1eAc02B14552E8b41

About

Allo Profile Metadata standardization


Languages

Language:Solidity 100.0%