AML/CTF risk

Anti-money laundering and counter-terrorist financing

Why your project needs to implement AML?

When web3 providers remove intermediaries from all transactions, a gap appears in administrative procedures. Nonetheless, legal compliance is an absolute must for a trustworthy platform and projects that provide, store or transact crypto, regardless of their centralized or decentralized nature. That’s how AML- and CFT-compliant businesses ensure the legality of their operations and benefit from programs that prevent illicit financial flows. Regulations and policies of AML systems detect, prevent and report money laundering activities and combat terrorism financing.

What AML systems do in blockchain projects?

  • Know Your Transaction (KYT) procedures
  • Blockchain analysis of transactions
  • Risk assessment of client’s business
  • Know Your Customer (KYC)

Who needs to comply with AML and CFT regulations?

  • Centralized Exchanges - CEXs
  • Decentralized Exchanges – DEXs
  • On and off ramps
  • Crypto payment gateways
  • Custodials – digital wallet providers
  • DApps

Blockmate’s solutions

Regulatory processes are a finicky deal. We are here to spare you unnecessary headaches and troubles. A single Blockmate API integration will equip your business with needed tools to minimize regulatory risks, comply with AML/CFT regulations and avoid regulatory scrutiny.

Explore Risk API section to view requests, responses, and sample codes.

AML/CFT Risk scoring

We scan all transactions to instantaneously detect all possible risks tied to money laundering, illicit money service businesses or simply suspicious activity and potential threats. This will help your business remain uncompromised and reputable.

Case management

All your previous decisions made on transactions can be archived for future evaluation. This will give you an opportunity to have evidence in case of regulatory or law audits.

Sanctions list

A single Blockmate API integration will automatically scan your transactions for matches with sanctions lists and 3rd party databases. These records involve scams and hack addresses and, if matches are detected, the system will automatically determine the risk level of any source of funds and allow you to stop all further procedures like processing a transaction.

Sample add demo code

Data includes searched address and risk value scale goes from 0, the minimal risk, to 100, the maximal one. A simple endpoint will provide you evaluation for any crypto address. We’ve made it easier for you by adding multiple programming languages and command-line tools.

[
    {
        "address": "0x00daa9a2d88bed5a29a6ca93e0b7d860cd1d403f",
        "risk": 85
    }
]

Prerequisites

Before we dive into the description and code, below are some prerequisites you will need:

1. Install python3 -  ['Windows/Linux/Mac tutorials']("https://realpython.com/installing-python/")
2. Install required library `pip3 install requests` <br/>
3. Paste your token (received by email, or register [HERE](../intro.md) ) into `my_project_token` variable <br/>
4. Run following python script: `python3 ./blockmate-risk.py`
1. Install Node.js - ['Windows/Linux/Mac tutorials']("https://nodejs.dev/download/package-manager/") <br/>
2. Install required library `npm install axios` <br/>
3. Paste your token (received by email, or register [HERE](../intro.md) ) into `my_project_token` variable<br/>
4. Run following javascript code: `node blockmate-risk.js`
1. Install PHP - ['Windows/Linux/Mac tutorials']("https://kinsta.com/blog/install-php/") <br/>
2. Install required library `sudo apt-get install php-curl` <br/>
3. Paste your token (received by email, or register [HERE](../intro.md) ) into `my_project_token` variable<br/>
4. Execute following PHP script: `php blockmate-risk.php`

Integrate address risk score

GET <https://api.blockmate.io/v1/risk/score>

#!/usr/bin/python3
import requests
import json
import time
import sys

# Fill in your token
my_project_token="paste_your_token_here"

# Authenticate the project - get JWT token for next api calls
r = requests.get(f"https://api.blockmate.io/v1/auth", headers={"X-API-KEY": my_project_token})
project_jwt_token = r.json()["token"]
print(f"Project JWT token: {project_jwt_token}")

chain = "eth"
address = "0x00daa9a2d88bed5a29a6ca93e0b7d860cd1d403f"

# Use JWT token and get risk
r = requests.get("https://api.blockmate.io/v1/risk/score?chain="+chain+"&address="+address, headers={"Authorization": f"Bearer {project_jwt_token}"})

risk =  r.json()['risk']
print(f"Risk score for {chain} address {address} is: {risk}")
const axios = require('axios');

// Fill in your token
my_project_token="paste_your_token_here"
chain = "eth"
address = "0x00daa9a2d88bed5a29a6ca93e0b7d860cd1d403f"


// Authenticate the project - get JWT token for next api calll
axios.get('https://blockmate.io/v1/auth',
    {
      headers: { 'X-API-KEY': `${my_project_token}` }
    })
    .then((result) => {       
        project_jwt_token = result.data["token"]
        console.log("Project JWT token: "+project_jwt_token);
    })
    .then(() =>
    // Use JWT token and get risk
    axios.get('https://api.blockmate.io/v1/risk/score?chain='+chain+'&address='+address, 
        {
            headers: {'Authorization' : `Bearer ${project_jwt_token}` }
        })
      )
    .then((result) => {
        risk = result.data["risk"]
        console.log("Risk score for "+chain+" address "+address+" is: "+risk)
     })
<?php

//Fill in your token
$my_project_token="paste_your_token_here";


$chain = "eth";
$address = "0x00daa9a2d88bed5a29a6ca93e0b7d860cd1d403f";

// Authenticate the project - get JWT token for next api calls
$curl = curl_init("https://auth.blockmate.io/v1/auth");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
    'X-API-KEY:' .$my_project_token ,
    'Content-Type: application/json'
  ]);

$response = curl_exec($curl);
curl_close($curl);

$project_jwt_token = json_decode($response)->token;
echo "Project JWT token: ".$project_jwt_token.PHP_EOL;

// Use JWT token and get risk
$curl = curl_init("https://risk-api.blockmate.io/v1/risk/score?chain=".$chain."&address=".$address);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);



curl_setopt($curl, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer ".$project_jwt_token,
    "Accept: application/json"
  ]);

$response = curl_exec($curl);
curl_close($curl);

$risk = json_decode($response)->risk;
echo "Risk score for ".$chain." address ".$address." is: ".$risk.PHP_EOL;


?