AIP 7: Contacts List Source

Author Alexander Kiselev
Discussions-To https://github.com/Adamant-im/AIPs/issues/11
Status Accepted
Type Standards
Category ARC
Created 2018-07-30
Requires 3

Storing Contacts list in the ADAMANT blockchain.

Simple Summary

Define a way to store Contacts (i.e. user-defined aliases for the ADAMANT addresses) in the blockchain.

Abstract

In order to improve user experience, ADAMANT clients should provide a way to assign aliases to the addresses user interacts with. These aliases needed to be stored in the ADAMANT blockchain in order to be accessible from any ADAMANT client.

Specification

Contacts list is stored as a JSON object in the ADAMANT KVS as described in the AIP-3. This object must be encrypted and passed as value with key = contact_list.

The keys of the above JSON are ADAMANT UIDs, values are objects, where aliases are stored in the displayName property.

Example of value object for storing Contact list:

{
  "U9821606738809290000": {
    "displayName": "John Doe"
  },
  "U9821606738809290001": {
    "displayName": "Jane Doe"
  }
}

Other properties besides displayName may be added to values to store various contact details.

Note, that contacts lists may contain sensitive info and, therefore, must be encrypted (see AIP-3).

Examples

{
  "transaction": {
    "type": 9,
    "amount": 0,
    "senderId": "U15677078342684640219",
    "senderPublicKey": "e16e624fd0...",
    "asset": {
      "state": {
        "key": "contact_list",
        "value":"{
          \"message\": \"6df8c172feef228d930130...\",
          \"nonce\": \"f6c7b76d55db945bb026cd221d5...\"}",
        "type": 0
      }
    },
    "timestamp": 45603645,
    "signature": "dbafce549f1..."
  }
}

Sends private (encrypted) contact_list records for U15677078342684640219.

Copyright and related rights waived via CC0.