Phase 1: POST - How to implement a solution

If you haven’t yet installed Veriscope yet, follow the Veriscope Installation Guide before proceeding further.
You must set your API_URL in the Shyft discovery layer before being able to send/receive data with other VASPs.

Post discovery layer data

Available on the Shyft Network is a Discovery Layer enabling all VASPs to do counterparty discovery; one of the core requirements of the FATF Travel Rule.

To post discovery layer data on-chain, log-in to the Veriscope web-app and navigate to Manage Organization. There you will be presented with a form to input the following data points (key-value pairs):

  • Trust Anchor Account Address

  • VASP Legal Entity Name

  • Incorporation Date

  • VASP Operating Name

  • Domain

  • Shyft Integration API URL

  • Compliance Contact

  • Technology Contact

  • Support Contact

  • VASP Home Jurisdiction

  • Regulated, Licensed, or Under Exemption in the Home Jurisdiction

  • Regulatory or Licensing Body in the home jurisdiction

  • Public License or Registration URL on Regulator’s Website (if applicable)

  • Exchange/OTC/Custodian

  • Virtual Asset to Virtual Asset Exchange

  • Virtual Asset to FIAT Exchange

  • Travel Rule Collection Requirements Policy

  • Does the VASP conduct KYC

  • What is the KYC-free threshold

Post attestations on-chain

In order to post attestations on chain, VASPs must consider/implement three Veriscope API endpoints:

  1. /get_jurisdictions

  2. /create_shyft_user

  3. /set_v3_attestation

Get Jurisdictions

Example 1. endpoint
`GET` {{baseUrl}}/api/v1/server/get_jurisdictions
Example 2. response (200 OK)
[
    {
        "id": 1,
        "sortname": "AF",
        "name": "Afghanistan",
        "created_at": "2022-05-31T14:23:25.000000Z",
        "updated_at": "2022-05-31T14:23:25.000000Z"
    },
    {
        "id": 2,
        "sortname": "AL",
        "name": "Albania",
        "created_at": "2022-05-31T14:23:25.000000Z",
        "updated_at": "2022-05-31T14:23:25.000000Z"
    },
    ...
    ...
    ...
    {
        "id": 246,
        "sortname": "ZW",
        "name": "Zimbabwe",
        "created_at": "2022-06-14T03:17:39.000000Z",
        "updated_at": "2022-06-14T03:17:39.000000Z"
    }
]

Create Shyft User

Example 3. endpoint
`POST` {{baseUrl}}/api/v1/server/create_shyft_user
Example 4. response (200 OK)
{
    "account_address": "0x96ee3769a2422215626b8a32594e8fbd5dd1b61a",
    "private_key": "bc454d37a96647a26aafdf15fc6a0eb81b7874c510d1b8b201ad2b5d785978cf",
    "public_key": "0x0423f6bd02dac58e22f493c63a347922fedfb521a4d9908836c0194e364c018552bc8e1b78e0868f1249c37d199690780a9ba635b49ecd295c086cab02270364fa",
    "message": "VERISCOPE_USER",
    "signature_hash": "0x7ec005c40fadb64f4180dcc14d9f5927f649096a08478a4a5a112a3aa77ca549",
    "signature": {
        "r": "0x27a0f86e6afdfb93e8f5e7c6bc48d55af0fb43f4a888676c86e61a7db808cca7",
        "s": "0x2487c6da94c174831a4ce28256488288743d29e78eafa5d57c319a9badcb4bc8",
        "v": "0x25"
    }
}

Set V3 Attestation

Example 5. endpoint
`POST` {{baseUrl}}/api/v1/server/set_v3_attestation
Example 6. params
"ta_account":"0xF937c412e7172c2c8978cEdD850DDD08e0D95e60"
"user_account":"0x96ee3769a2422215626b8a32594e8fbd5dd1b61a"
"jurisdiction":"196"
"coin_blockchain":"ETH"
"coin_token":"POOL"
"coin_address":"0x5481fabc980af705c556517426c81a963af5657d"
"coin_memo":"end-to-end walkthrough"
  • user_account is the originator/sender user account_address from Create Shyft User

  • jurisdiction is the originator/sender VASP jurisdiction id from Get Jurisdictions