Regulatory Aware Protocol Whitelisting

Avatar

By Julia Kvashyna

updated about 1 month ago

This article is about how to whitelist users.

The shares, issued by Unicorn Tokenization Corp are called Tokens.

List of countries currently prohibited from using Tokens:

Afghanistan, Burundi, Albania, Kosovo, Central African Republic, Congo Brazzaville, Congo Kinshasa, Cuba, Eritrea, Iran (Islamic Republic Of), Iraq, Lebanon, Liberia, Libya, Macao (SAR of China), Myanmar, Korea North, Sudan, Syrian (Arab Republic Syria), Somalia, Venezuela Bolivarian Republic, Yemen, Zimbabwe.

User country, property key 'country', specified by  ISO 3166-1 alpha-2

User region, property key 'region', (optional, used for territories under sanctions if not whole country is sanctioned) is specified by custom list:

  bytes32 constant Crimea = 'Crimea'; // Ukraine

  bytes32 constant Donetsk = 'Donetsk'; // Ukraine

  bytes32 constant Luhansk = 'Luhansk'; // Ukraine

These regions are prohibited from transferring Tokens.

User KYC level, property key 'kyc', is specified on the scale of 0 (no KYC data at all) to arbitrary value.

For Tokens transfers, KYC level should be greater or equal to 5.

User Accreditation level, property key 'accredited', is specified by a bool flag.

For Tokens transfers, the accreditation level does not matter at the moment. Though later it will be required for the following countries, which are currently not allowed at all:

Switzerland, Japan, Singapore, United States Of America.

To set a property for an address, you will need to use the following function:

  function setProperty(address _addr, bytes32 _propertyKey, bytes32 _propertyValue) public returns(bool);

Examples:

  Provider.setProperty( '0xcafecafecafecafecafecafecafecafecafecafe', // user address

   '0x636f756e74727900000000000000000000000000000000000000000000000000', // bytes32('country')

  '0x5541000000000000000000000000000000000000000000000000000000000000'  // bytes32('UA')

 );  

  Provider.setProperty( '0xcafecafecafecafecafecafecafecafecafecafe', // user address

  '0x6b79630000000000000000000000000000000000000000000000000000000000', // bytes32('kyc')

  '0x0000000000000000000000000000000000000000000000000000000000000005'  // bytes32(5)

  );

  // Set many properties in a single TX. Make sure to supply enough gas: ~array.length * 23000.

  Provider.setProperties(

    ['0xcafecafecafecafecafecafecafecafecafecafe', '0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef'], // user addresses

    ['0x6b79630000000000000000000000000000000000000000000000000000000000', '0x636f756e74727900000000000000000000000000000000000000000000000000'], // bytes32('kyc'), bytes32('country')

    ['0x0000000000000000000000000000000000000000000000000000000000000005', 0x5541000000000000000000000000000000000000000000000000000000000000]  // bytes32(5), bytes32('UA')

  );

This data only needs to be submitted if the user passed the verification to the level that should allow him to receive Tokens.

If the user has only partial verification, there is no point in submitting information about him.

In order to get a contract address for your platform, contact Ambisafe.

Did this answer your question?