MultiPass NFT for On-Chain KYC status

MultiPass NFT documentation for developers
HyperID empowers on-chain projects with its' MultiPass NFT feature - a unique and personalized reusable digital pass, based on user's KYC. This feature utilizes widely adopted NFT technology to ensure the uniqueness and immutability of each token.
HyperID has developed a custom smart contract for the MultiPass NFT collection, based on the ERC721 standard. In addition to traditional NFT contract functionality, this contract prohibits token transfers and provides an external view function called 'getUser', which returns the user's information combined in the struct 'User'.
Once users have minted their MultiPass NFT, third-party projects can query the user's KYC status, age, and other relevant information directly from the blockchain, without requiring additional actions from the user.

Smart Contract Address

HyperID MultiPass contract is available at 0x4e6313F8534C83FaB5054a42e3D72Fc4254091BD on the BSC Mainnet and Polygon Mainnet networks.

Structs

struct User {
string userIdHash;
string phoneCountryCode;
string idCountryCode;
string residence;
uint8 hidLevel;
uint256 kycTime;
uint8 age;
}
userIdHash
string
The unique identifier of the user*
phoneCountryCode
string
Phone number country code of the user according to ISO 3166-1 alpha-2 standard
idCountryCode
string
Country code of the user (based on submitted documents) according to ISO 3166-1 alpha-2 standard
residence
string
Residence country code according to ISO 3166-1 alpha-2 standard
hidLevel
uint8
Verification levels (based on the information provided during the KYC process): 0: Verified email address only 1: Verified email and phone number 2: Verified email, phone number, and linked social media accounts 3: All of the above + passed basic KYC 4: All of the above + passed advanced KYC
kycTime
uint256
Unix timestamp of the last KYC verification
age
uint8
Age of the user at the moment of last KYC verification
*HyperID employs a robust hashing algorithm that extracts selected user information and converts it into a fixed-size string of characters, producing a one-of-a-kind NFT ID. This hashing method provides a secure means of safeguarding the user's privacy by making it impossible for unauthorized parties to access the actual user ID. This ensures that each NFT has a unique ID that cannot be replicated, providing a high level of security and trust in the authenticity of the NFT.

Read-Only Functions

getUser
function getUser(address userAddr) external view returns (bool exists, User memory user);
Returns the boolean flag exists, that indicates whether the information about the user with specified userAddr exists in the current blockchain. Also returns the User struct with the KYC information of the specified user.