Waves Asset Verification Protocol

Motivation

Waves Platform allows to create and transfer any asset. The only threshold for the creator is to pay a fee (currently 1 waves). This lowers the threshold for entering the platform but opens up a lot of opportunities to send spam at a relatively low price. Also scam assets could be used for fraudulent purposes, for example by duplicating, fully or in part, the name of an existing cryptocurrency or a well-known company with the aim of misleading users.

We want to protect users from suspecious assets and ensure verified assets are used. It could be possible with some kind of listings generated by token holders with voting system or by a trusted organizations in compliance with established rules, access to which is public.

Here we present a standard that allows the exchange of information about tokens between data providers and applications using the Waves blockchain.

Any company or individual provider can provide information about tokens, verify/certify projects that have issued a token in the Waves blockchain. Any application using the Waves blockchain can use the information provided by the providers.

An example of such provider is bettertokens - Tokenization Standards Association, a non-profit organization, the main function of them is development of due diligence standards for companies engaged in the tokenization of assets and initial coin offerings (ICO)/ token generation events (TGE).

Specification

Our protocol is supposed to serve as an interaction between providers and the blockchain. A provider can be both a centralized organization with a developed methodology and a decentralized service for ranking tokens by voting or multisignature signing.

Each provider has its own Waves address. It can be created specially for the purpose of asset verification or used for other goals as well.

Before starting to supply information about tokens, providers must fill information about itself as one data entry of DataTransaction. Then, for each token, the provider fills another data entry in the same DataTransaction, with status and detailed information. DataTransaction is sent to smart account address and could be read then as account state. Example of such transaction in JSON format:

{
  "sender": "3FjTpAg1VbmxSH39YWnfFukAUhxMqmKqTEZ", 
  "data": [
   {
      "key": "data_provider_name", // provider initialization key
      "type": "string", 
      "value": "Example Asset Verification Provider", // company name 
   }, {
      "key": "data_provider_link", 
      "type": "string", 
      "value": "http://example.com", // provider’s site 
   }, {
      "key": "data_provider_email", 
      "type": "string", 
      "value": "[email protected]", // contact email 
   }, {
      "key": "data_provider_logo_meta", 
      "type": "string", 
      "value": "data:image/png;base64", // information about a logo type (svg, png, jpg … ) 
   }, {
      "key": "data_provider_logo", 
      "type": "binary", 
      "value": "base64:__base64_image_code__", // provider's logo 
   },  {
      "key": "data_provider_lang_list", 
      "type": "string",
      "value": "en" // a list of available languages for provider's description
    }, {
      "key": "data_provider_description_<en>", // provider initialization key
      "type": "string", 
      "value": "Verification provider", // provider info 
    }
  ]
}

Description of every asset consist of several data entries, first one is status_id describing measure of trust/threat:

Table 1. Tokens statuses

Status Description Comment
2 Verified Verified and trusted assets, issuers passed KYC, official gateway tokens and so on
1 Described Tokens with clear description which are not phishing or scam
0 Unknown Default status. No need to add it to providers list unless provider wants to remove an asset from the list
-1 Suspicious Asset looks suspicious or used for spam
-2 Dangerous Dangerous scam and phishing assets
{
  "sender": "3FjTpAg1VbmxSH39YWnfFukAUhxMqmKqTEZ", 
  "data": [ {
      "key": "status_id_<2L3hRkSJpmaytgSfKLSNgC1vcoUvGGAv2353c6V9hPKC>, // token ID
      "type": "integer", 
      "value": "1", // status
   }, {
      "key": "link_<2L3hRkSJpmaytgSfKLSNgC1vcoUvGGAv2353c6V9hPKC>", 
      "type": "string", 
      "value": "http://example.com", // project site 
   }, {
      "key": "email_<2L3hRkSJpmaytgSfKLSNgC1vcoUvGGAv2353c6V9hPKC>", 
      "type": "string", 
      "value": "[email protected]", // project contact email
   }, {
      "key": "description_<en>_<2L3hRkSJpmaytgSfKLSNgC1vcoUvGGAv2353c6V9hPKC>", 
      "type": "string", 
      "value": "Founded in June of 2012, Company is a digital currency wallet and platform where merchants and consumers can transact with new digital currencies like bitcoin, ethereum, and litecoin. Based in San Francisco, California.", // brief project description
   }, {
      "key": "ticker_<2L3hRkSJpmaytgSfKLSNgC1vcoUvGGAv2353c6V9hPKC>", 
      "type": "string", 
      "value": "TKR", // assigned project ticker
   }, {
      "key": "logo_meta_<2L3hRkSJpmaytgSfKLSNgC1vcoUvGGAv2353c6V9hPKC>", 
      "type": "string", 
      "value": "data:image/png;base64", // project logo 
   }, {
      "key": "logo_<2L3hRkSJpmaytgSfKLSNgC1vcoUvGGAv2353c6V9hPKC>", 
      "type": "string", 
      "value": "base64:__base64_image_code__", // project logo 
   }
  ]
}

Table 2. Parameters for the provider description

Key Required Value
data_provider_name true Provider's name
data_provider_link true A link to the provider's website
data_provider_email false Contact email
dataprovider_description true Provider service Information in a language from "data_provider_lang_list"
data_provider_lang_list true A list of available language which can be added to the provider and its tokens in comma separated format
data_provider_logo false Provider's logo in any format in base64, must be accompanied by a correctly filled "data_provider_logo_meta" field
data_provider_logo_meta true A logo format description

Table 3. Parameters to describe the token

Key Required Value
statusid true Status
link_ false A link to the project’s website
email_ false Project contact email
description false Description of the project in one of "data_provider_lang_list" language
ticker_ false Assigned project ticker
logo_ false Provider's logo in any format in base64, must be accompanied by a correctly filled "logometa" field
logometa false A logo format description

results matching ""

    No results matching ""