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