# 同一身份验证

## <mark style="color:blue;">GET</mark> /api/v1/unifiedIdentityVerification

* 说明：通过这个 API，允许平台和开发者确定多个来自不同平台或链的地址是否可能链接到同一用户。这是基于已经自愿连接并在 Relation Graph 上注册的用户的数据进行的计算。该 API 尊重用户隐私，仅对用户自愿分享的数据进行操作。它不提供任何确定性的声明，而是基于数据的互联性提供一个概率分数，并通过比较返回可能的聚类组合。

> 概率分数计算公式：
>
> P = w\_1 × S\_common + w\_2 × S\_interaction + w\_4 × S\_registration
>
> * P 是总概率分数。
> * S\_common 是共同关系分数。
> * S\_interaction 是交互模式分数。
> * S\_registration 是注册数据分数。
> * w1,w2,w3 是各个分数的权重，总和为1。
>
> 分数计算：
>
> * S\_common 共同关系分数 计算方式：基于两个地址共享的直接关系数量。例如，如果地址A和地址B都关注了10个相同的用户，则共同关系分数为10。 S\_*common* = 数量 of 共同关系
> * S\_interaction 交互模式分数 计算方式：基于两个地址与相同的合约或NFT的交互次数。例如，如果地址A和地址B都与3个相同的合约进行了交互，则交互模式分数为3。 S\_*interaction* = 数量 of 共同合约交互
> * S\_registration 注册数据分数 计算方式：如果两个地址都与同一 Twitter 或 Discord 账号关联，则注册数据分数为1，否则为0。S\_*registration* = 1 （ if 两地址关联同一账号 ） S\_*registration* = 0 （ 其它情况）
> * 权重配比： w1 = 0.4 (共同关系权重)；w2 = 0.4 (交互模式权重)； w3 = 0.2 (注册数据权重)
>
> 聚类计算：
>
> * 两两比较：将所有输入的地址进行两两比较，按照概率分数计算公式计算它们之间的参考分数。&#x20;
> * 阈值筛选：基于预设的阈值，筛选出那些分数超过阈值的地址对。&#x20;
> * 地址聚类：使用单链聚类算法，将分数超过阈值的地址对进行聚类。将相似的地址归为一组。&#x20;
> * 返回聚类结果：API 返回每个聚类组的地址列表和该组的平均参考分数。&#x20;
> * 示例： 假设输入有四个地址：A, B, C, D。经过两两比较，我们得到以下分数：
>   * A-B: 0.9&#x20;
>   * A-C: 0.2&#x20;
>   * A-D: 0.85&#x20;
>   * B-C: 0.1&#x20;
>   * B-D: 0.88&#x20;
>   * C-D: 0.15&#x20;
> * 假设我们的阈值是0.8，那么A-B, A-D, B-D这三对地址的分数都超过了阈值。进行聚类，我们可以得到两个聚类组：{A, B, D} 和 {C}。

* Header

<table><thead><tr><th width="173">Field</th><th>Type</th><th>Required</th><th>Remarks</th></tr></thead><tbody><tr><td>ApiKey</td><td>String</td><td>true</td><td>从管理员获取的<a href="unified-dentity-verification">ApiKey</a></td></tr></tbody></table>

* Request Parameters

| Field   | Type | Required | Remarks     |
| ------- | ---- | -------- | ----------- |
| address | List | true     | EOA Address |

* Request Example

```shell
curl  GET 'https://api.relationlabs.ai/api/v1/unifiedIdentityVerification?address=0x9bd286ef4e3d9ec1af6c6ae9da2f0b3617deab13,0xbbb' \
--header 'ApiKey: <ApiKey>'
```

* Response Parameters

| Field | Type   | Remarks |
| ----- | ------ | ------- |
| code  | String | 返回码     |
| desc  | String | 返回信息    |
| data  | double | 数据      |

* Response Body

```json
{
  "code": "0",
  "desc": "success",
  "data": [
    {
      "address": ["0x00001","0x00002"],
      "averageScore": 1.76
    },
    {
      "address": ["0x00003"],
      "averageScore": 0.53
    }
  ]
}
```

* Return Code

| code | desc    | Remarks                           |
| ---- | ------- | --------------------------------- |
| 0    | success | the flag for a successful request |
