KintoID

Deployment Address:

Mainnet: 0xf369f78E3A0492CC4e96a90dae0728A38498e9c7

Interface: IKintoId.sol


Basics

The easiest way to check an account is to use the isKYC method. It checks a given address, making sure it has a valid KYC. It has been audited recently for AML sanctions, and it has none.

For example, if you want to check whether a specific address verifies all these properties, you can call:

isKYC(<ADDRESS>)

Trait IDs

Every user has a trait that identifies its country of origin using the ISO-32166. For example, if an individual is a citizen of the USA, the trait with ID 840 will be set. The following traits will be used to verify additional flags on a user identity.

NameNumber

KINTO_ADMIN_WALLET

0

US_ACCREDITATION

1

USA

840

...

...

Using the following call method, you can quickly check if a user has any trait. For example, if you want to check whether a specific address is an accredited investor in the US, you can use:

hasTrait(<ADDRESS>, 1)

Sanction IDs

The numerical country code will key the sanction IDs according to https://en.wikipedia.org/wiki/ISO_3166-1_numeric.

Kinto will use the country code 1 for network related incidents including hacks, stolen and duplicate identity.

For example, to check whether a user has any sanctions in the US:

isSanctionsSafeIn(<ADDRESS>, 840);

State Functions

Privileged roles can call the following functions.


function mintIndividualKyc(SignatureData calldata _signatureData, uint16[] memory _traits) external;

function mintCompanyKyc(SignatureData calldata _signatureData, uint16[] memory _traits) external;

function burnKYC(SignatureData calldata _signatureData) external;

function addTrait(address _account, uint16 _traitId) external;

function removeTrait(address _account, uint16 _traitId) external;

function addSanction(address _account, uint16 _countryId) external;

function removeSanction(address _account, uint16 _countryId) external;

function monitor(address[] memory _accounts, MonitorUpdateData[][] memory _traitsAndSanctions) external;

1. mintIndividualKyc

This function mints a KYC token for an individual with specific traits. Only KYC providers are allowed to call this function.

Function Interface:

function mintIndividualKyc(SignatureData calldata _signatureData, uint8[] memory _traits) external;
ParameterTypeExplanation

_signatureData

SignatureData calldata

Contains the signature data for minting the KYC token

_traits

uint16[] memory

The array of trait IDs for the individual


2. mintCompanyKyc

This function mints a KYC token for a company with specific traits. Only KYC providers are allowed to call this function.

Function Interface:

function mintCompanyKyc(SignatureData calldata _signatureData, uint16[] memory _traits) external;
ParameterTypeExplanation

_signatureData

SignatureData calldata

Contains the signature data for minting the KYC token

_traits

uint16[] memory

The array of trait IDs for the company


3. burnKYC

This function burns a KYC token. Only KYC providers are allowed to call this function.

Function Interface:

function burnKYC(SignatureData calldata _signatureData) external;
ParameterTypeExplanation

_signatureData

SignatureData calldata

Contains the signature data for burning



4. addTrait

This function adds a trait to a given account. Only KYC providers are allowed to call this function.

Function Interface:

function addTrait(address _account, uint16 _traitId) external;
ParameterTypeExplanation

_account

address

The account address

_traitId

uint16

ID of the trait to add


5. removeTrait

This function removes a trait from a given account. Only KYC providers are allowed to call this function.

Function Interface:

function removeTrait(address _account, uint16 _traitId) external;
ParameterTypeExplanation

_account

address

The account address

_traitId

uint16

ID of the trait to remove


6. addSanction

This function adds a sanction to a given account. Only KYC providers are allowed to call this function.

Function Interface:

function addSanction(address _account, uint16 _countryId) external;
ParameterTypeExplanation

_account

address

The account address

_countryId

uint16

ID of the country to sanction


7. removeSanction

This function removes a sanction from a given account.

Only KYC providers are allowed to call this function.

Function Interface:

function removeSanction(address _account, uint16 _countryId) external;
ParameterTypeExplanation

_account

address

The account address

_countryId

uint8

ID of the country to remove sanction


8. monitor

This function monitors an array of accounts and updates their traits and sanctions. Only KYC providers are allowed to call this function.

Function Interface:

function monitor(address[] memory _accounts, MonitorUpdateData[][] memory _traitsAndSanctions) external;
ParameterTypeExplanation

_accounts

address[] memory

Array of account addresses

_traitsAndSanctions

MonitorUpdateData[][] memory

Array of traits and sanctions updates


View Functions

Anyone can call the following functions without a transaction to retrieve information from the contract.

function name() external pure returns (string memory);

function symbol() external pure returns (string memory);

function isKYC(address _account) external view returns (bool);

function isSanctionsMonitored(uint32 _days) external view returns (bool);

function isSanctionsSafe(address _account) external view returns (bool);

function isSanctionsSafeIn(address _account, uint16 _countryId) external view returns (bool);

function isCompany(address _account) external view returns (bool);

function isIndividual(address _account) external view returns (bool);

function mintedAt(address _account) external view returns (uint256);

function hasTrait(address _account, uint16 index) external view returns (bool);

function traits(address _account) external view returns (bool[] memory);

function supportsInterface(bytes4 interfaceId);

1. isKYC

This function checks whether a given account is KYC'd by checking the balance of KYC tokens.

Function Interface:

function isKYC(address _account) external view override returns (bool);
ParameterTypeExplanation

_account

address

The address to check

2. isSanctionsMonitored

This function checks whether the account has been monitored for sanctions in the last X days.

Function Interface:

function isSanctionsMonitored(uint32 _days) public view override returns(bool);
ParameterTypeExplanation

_days

uint32

Number of days to check


3. isSanctionsSafe

This function checks whether a given account is safe from sanctions.

Function Interface:

function isSanctionsSafe(address _account) public view override returns (bool);
ParameterTypeExplanation

_account

address

The account address


4. isSanctionsSafeIn

This function checks whether a given account is safe from sanctions in a specific country.

Function Interface:

function isSanctionsSafeIn(address _account, uint16 _countryId) external view override returns (bool);
ParameterTypeExplanation

_account

address

The account address

_countryId

uint16

The country ID


5. isCompany

This function checks whether a given account is a company.

Function Interface:

function isCompany(address _account) external view override returns (bool);
ParameterTypeExplanation

_account

address

The account address


6. isIndividual

This function checks whether a given account is an individual.

Function Interface:

function isIndividual(address _account) external view override returns (bool);
ParameterTypeExplanation

_account

address

The account address


7. mintedAt

This function returns the timestamp when the KYC token was minted for a given account.

Function Interface:

function mintedAt(address _account) external view override returns (uint256);
ParameterTypeExplanation

_account

address

The account address


8. hasTrait

This function checks whether a given account has a specific trait.

Function Interface:

function hasTrait(address _account, uint16 index) external view override returns (bool);
ParameterTypeExplanation

_account

address

The account address

index

uint16

Index of the trait to check


9. traits

This function returns an array of booleans representing the traits of the account.

Function Interface:

function traits(address _account) external view override returns (bool[] memory);
ParameterTypeExplanation

_account

address

The account address

10. supportsInterface

Returns whether the contract implements the interface defined by the id

Function interface:

function supportsInterface(bytes4 interfaceId);
ParameterTypeExplanation

interfaceId

bytes4

id of the interface to be checked

Last updated