NAV
安全鹭 API 文档
 English | 中文

介绍

欢迎来到安全鹭开发者文档页面!安全鹭提供了丰富的 API ,可以让您完全通过 API 来管理您的团队,自动化您的交易流程。除此之外还提供了 Webhook 消息推送功能,使您能够接收到团队下发生的事件通知。

您可以通过安全鹭提供的 API :

所有交易都将反映在 Safeheron 的控制台、交易历史、Webhook 中。

接入指南

概述

如果您需要使用安全鹭 API ,请联系安全鹭支持团队申请开通添加 API 账户的权限。

当您的团队开通添加 API 账户的权限后,请使用具有API管理权限的用户账户登录安全鹭控制台,在 设置 -> API 账户管理 界面进行 Webhook 配置与 API 账户创建,API 账户创建成功后,可以使用 API Key 来访问安全鹭 API 。详细配置方式请联系安全鹭支持团队获取《安全鹭 API 产品使用手册》。

API 鉴权

安全鹭所有的 API 接口在请求时,采用了对称密钥加密和非对称公钥加密的混合加密方案,并且使用非对称私钥对请求参数进行签名。对称加密算法采用 AES-256 算法,非对称加密和签名算法采用 RSA-4096 算法,具体流程如下:

安全鹭会使用同样的流程对接口响应业务参数进行加密和签名,您可以使用以下流程进行解密和验签:

您可以使用 OpenSSL 生成 RSA 私钥(api_private.pem 为您的 API RSA 私钥 ):

openssl genpkey -out api_private.pem -algorithm RSA -pkeyopt rsa_keygen_bits:4096

使用 OpenSSL 生成 RSA 私钥对应的公钥(api_public.pem 为您的 API RSA 公钥):

openssl rsa -in api_private.pem -out api_public.pem -pubout

注意:

IP 白名单

在调用安全鹭 API 时,只允许从您设置的 IP 白名单地址发起请求,您需要在创建 API Key 时设置调用发起的 IP 地址。

请求示例

请求 base URL

https://api.safeheron.vip

加密前请求参数

加密前业务请求参数示例

{
  "apiKey": "341916e58af445f8aadeb95170218e37",
  "timestamp": "1623038312088",
  "bizContent": {
    "page": 1,
    "pageSize": 1
  }
}

具体格式请参考每个接口请求业务参数格式定义,示例参考右侧。

加密后请求参数

加密后的请求参数示例

{
  "apiKey": "341916e58af445f8aadeb95170218e37",
  "timestamp": "1628652100447",
  "bizContent": "qjFMZXs2n+CxnrNGoaZmGrKQzPosy6QbWEumCMkGOEw=",
  "key": "gYZvuXdJADuaLYMU3z8q5vOtld62PSaPxrrhhr4UGwWbZm7Pw3/VImzHrd3oNy1XT8R55V7pbpQOBVdbmTev/rESnuaXlGofkB04JWAaRCIPytEKMHUNXZXEU9GLVppYst7bgiekMDIDScS4AkD75eDG8zru5Gr+gTxU4AYyHSzB0deQnxmNRemwZn+jaNgNs7WeBcuQWR1Cq2+1At8FlAqF5XzEaeQ3x1Q0N3iaLzSiXHQRYqP1Q6V6/aiIXchin/X9bBRYL618utjm4k0qoXU8Rw2JeEKzn7m2ShyyQQ31zX/rQ1xf0ar5PDtJPU/qYp9Kr4oVtcN6yHdG802nLqpGYlHlMvxy9vpnGFXb9oxh4xYnp0qRUfKLyJIylc3qhq6spHyWnuC5XV1S4lH+rIPNF1icV08ex7pjps2jvTICBzIIPExBamh1n00RcxZbkGqxYfRZ7SLTUCH06EaV5lP8yXNe3fNWjHk4mppaVDj0QFagqTzBM9AwMfHs1dOeDmcwkTacKQsvNRu3l5uZFQYkaUeVB9m3AhKw3lyl2oJIfJgYeBLJEHMGFVZXP92z8+J5KrZEVfkL8F80XkB3sXRP0BiIv/9Mm4VrjopYoDWyXttCysY0lJ9XImRyE7GkSy2sjmW0BCsrECoVHWh73s9o7Kw0uIegFaitch24GsM=",
  "sig": "ZPQcL1aIxMrA6HTq7RWWS8FZS08zSOkS69WohcBw1bDr4Qv2Wkrp2t+PNHMh3TmDUnOmUOiv7mBs/sOw08rhgPHqAU/qtvc1lzJFFOnPp5MBmDgffD1auwm7icGzm3myhEz3hKePxyRgZWB1DpPmMYaRuWt1RYcVmcqRa/Bfd0jR37a35neuOSlaip4jsQE1pHQzQ6itdQhBtZZABl1Plz5u8OaMIDTVj63485zi/n6iuuav+GL+JX2JL6pnWz3CT/9DNqa/McyYbxGswGMBAPgHCptseELVmOQ3ZKNHgMu6EtXEKLzmLeZ5REwnw2MTvpzuy5B1zIuxiafuAhh6Tg=="
}

加密方式请参考加解密示例

公共参数描述

参数名 类型 描述
apiKey string 平台分配唯一 API Key 标识
timestamp string 请求时间戳,UNIX 毫秒格式字符串
key string 使用安全鹭 API RSA 公钥对随机 AES Key 加密后的数据
sig string 使用您的 API RSA 私钥对请求参数签名得到的签名数据
bizContent object 业务请求参数 AES 加密后数据

响应示例

响应加密数据示例

响应加密数据示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1628652101098",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "gYZvuXdJADuaLYMU3z8q5vOtld62PSaPxrrhhr4UGwWbZm7Pw3/VImzHrd3oNy1XT8R55V7pbpQOBVdbmTev/rESnuaXlGofkB04JWAaRCIPytEKMHUNXZXEU9GLVppYst7bgiekMDIDScS4AkD75eDG8zru5Gr+gTxU4AYyHSzB0deQnxmNRemwZn+jaNgNs7WeBcuQWR1Cq2+1At8FlAqF5XzEaeQ3x1Q0N3iaLzSiXHQRYqP1Q6V6/aiIXchin/X9bBRYL618utjm4k0qoXU8Rw2JeEKzn7m2ShyyQQ31zX/rQ1xf0ar5PDtJPU/qYp9Kr4oVtcN6yHdG802nLqpGYlHlMvxy9vpnGFXb9oxh4xYnp0qRUfKLyJIylc3qhq6spHyWnuC5XV1S4lH+rIPNF1icV08ex7pjps2jvTICBzIIPExBamh1n00RcxZbkGqxYfRZ7SLTUCH06EaV5lP8yXNe3fNWjHk4mppaVDj0QFagqTzBM9AwMfHs1dOeDmcwkTacKQsvNRu3l5uZFQYkaUeVB9m3AhKw3lyl2oJIfJgYeBLJEHMGFVZXP92z8+J5KrZEVfkL8F80XkB3sXRP0BiIv/9Mm4VrjopYoDWyXttCysY0lJ9XImRyE7GkSy2sjmW0BCsrECoVHWh73s9o7Kw0uIegFaitch24GsM=",
  "data": "fVwpf1ektFjHOAGK5D1Da+uza9AMknD8kmidt4aHL82JrsmxUpBMGq/bC2wX52sIRYgMJ5O/8fQhtvTXqWEmHVLxismG5ffYkkYVYRTAuV2sUMlU7nhmC6nDZzds+SOs81brzoS6INlHMp9pI59y9+FBYty8NR5a57UBo3XIsll1fWCHwt9T3OBoWpWmGFENpNGPPSADt/mDzXQRmDgL5KVGNOu8LkAVZmJCjunmX+41RCuhwdUQSWciv578ZI90cI9rRI5RxcxkVyI5XWZsEhCMoASvOQ3PJ0AkB64UigP+Jjj7oD9BnX+xO+9Tw1kGwdkVikG1aWnAd3/XrdeaRL9ZA/0HYZCHZ2VupoQ7GuEYDQ30iWklI4v6Uoofg+hGY872GVmsyTZNe9GMSYV4go69nd8cDiA39mGTSDZWvQ9VYvpeZiuzZpdS/O2UNv82qfujn0OmKup4RscQ5baXVSOgeS8UQVRmo4d7KWdxi2S5WvriM/MKemKM4myoMVi1jN8k2Bd8S/u5yX16d9KLZM8EBhTLxuo3/lMZn505SFqt9RnvF1qCRVDaDboq6r8V91ZOpciDmJyWrYGKleleBBObFRZ+Ro1UoY3IUiwfr98oTXVgDYE3YtcZjkPBi7IXcZIBz8m/of97aBitUn//og=="
}

请参考右侧。

响应参数描述

响应参数 类型 描述
code int 响应结果码
message string 响应结果描述
timestamp string 响应时间戳,UNIX 毫秒格式字符串
sig string 使用安全鹭 API RSA 私钥对响应参数签名得到的签名数据
key string 使用您的 API RSA 公钥对随机 AES Key 加密后的数据
bizContent object 业务响应参数 AES 加密后数据

响应加密数据解密后示例

[
  {
    "addressBookKey": "8be8c8de4bf749b3b08137ccxefa0b16",
    "addressBookName": "name",
    "whiteLists": [
      {
        "whiteListKey": "fdac862c74734d4fa81d62884f2ce4x0",
        "coinKey": "ETH_ROPSTEN",
        "coinFullName": "Ethereum(Ropsten)",
        "symbol": "ETH",
        "address": "0xCa104eA8CB4722e33a3E68eD4D12x3569594FBC5",
        "urlAddress": "https://ropsten.etherscan.io/address/0xCa104eA8CB4722e33a3E68eD4D12d3569594xBC5",
        "amount": 0,
        "usdAmount": 0,
        "whiteListStatus": "VERIFY_PASS",
        "passNum": 1,
        "signNum": 1,
        "refuseUserName": ""
      }
    ]
  }
]

bizContent 解密后示例

具体格式请参考每个接口响应数据格式定义

解密方式请参考加解密示例

加解密示例

Java

请求和响应参数加解密示例代码

package com.safeheron.demo;

import com.safeheron.demo.utils.*;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * @author safeheron
 */
public class RestRequestDemo {


    public static void main(String[] args) {

        // 加密签名请求
        String response = encryptSignRequest();

        System.out.println(response);

        // 验签解密响应
        String result = verifySignDecrypt(response);

        System.out.println(result);
    }

    public static String encryptSignRequest() {
        // 接口请求地址
        String url = "";
        // apiKey,安全鹭控制台获取
        String apiKey = "";
        // 平台公钥,安全鹭控制台获取
        String platformPublicKey = "";
        // 商户自己私钥
        String userPrivateKey = "";
        // 请求时间戳
        long timestamp = System.currentTimeMillis();

        Map<String, String> commonParam = new HashMap<>();
        commonParam.put("apiKey", apiKey);
        commonParam.put("timestamp", timestamp + "");

        // 业务参数
        Map<String, Object> requestParam = new HashMap<>();
        requestParam.put("page", 1);
        requestParam.put("pageSize", 1);
        String jsonParam = JSON.writeJson(requestParam);
        //生成AES密钥
        byte[] aesKey = EncryptUtil.generateAESKey();
        byte[] ivKey = EncryptUtil.generateIvKey();
        // 对业务参数进行AES加密
        String aesEncryptResult = EncryptUtil.aesEncryptByCBCPKCS7Padding(jsonParam, aesKey, ivKey);
        commonParam.put("bizContent", aesEncryptResult);

        byte[] sourceKey = Arrays.copyOf(aesKey, aesKey.length + ivKey.length);
        System.arraycopy(ivKey, 0, sourceKey, aesKey.length, ivKey.length);

        // 对AES密钥使用rsa加密
        String rsaEncryptResult = EncryptUtil.rsaEncryptForBase64Str(sourceKey, platformPublicKey);
        commonParam.put("key", rsaEncryptResult);

        // 自然序拼接签名字符串
        String sigContent = EncryptUtil.sortClearingSignContent(commonParam);
        // 使用商户私钥通过rsa对参数加签
        String rsaSig = EncryptUtil.rsaSign(sigContent, userPrivateKey, "UTF-8");
        commonParam.put("sig", rsaSig);
        // 发送请求
        Map<String, String> headerMap = new HashMap<>();
        // 设置请求头语言
        headerMap.put("accept-language", "zh");
        String response = HttpUtil.sendPostWithJson(url, JSON.writeJson(commonParam), headerMap);
        return response;
    }

    public static String verifySignDecrypt(String response) {
        // 平台公钥,安全鹭控制台获取
        String platformPublicKey = "";
        // 商户自己私钥
        String userPrivateKey = "";

        HashMap<String, Object> resultMap = JSON.readJson(response, HashMap.class);
        // 响应AES秘钥加密key
        String key = resultMap.get("key").toString();
        // 响应结果密文
        String bizContent = resultMap.get("bizContent").toString();
        // 响应结果签名
        String sig = resultMap.get("sig").toString();
        // 响应时间戳
        String timestamp = resultMap.get("timestamp").toString();
        // 响应结果码
        String code = resultMap.get("code").toString();
        // 响应结果描述
        String message = resultMap.get("message").toString();

        // 验签
        Map<String, String> signMap = new HashMap<>();
        signMap.put("key", key);
        signMap.put("timestamp", timestamp);
        signMap.put("bizContent", bizContent);
        signMap.put("code", code);
        signMap.put("message", message);
        String sigContent = EncryptUtil.sortClearingSignContent(signMap);

        boolean checkResult = EncryptUtil.rsaVerifySign(sigContent, sig, platformPublicKey, "UTF-8");
        if (!checkResult) {
            // 验签失败
            return null;
        }

        // 解密AES秘钥
        byte[] aesSaltDecrypt = EncryptUtil.rsaDecryptFromBase64Str(key, userPrivateKey, "UTF-8");

        // 解密数据
        byte[] aesKey = Arrays.copyOfRange(aesSaltDecrypt, 0, 32);
        byte[] iv = Arrays.copyOfRange(aesSaltDecrypt, 32, aesSaltDecrypt.length);
        String dataDecrypt = EncryptUtil.aesDecryptByCBCPKCS7Padding(bizContent, aesKey, iv);
        return dataDecrypt;
    }


}

请参考右侧代码示例,完整示例请联系Support获取 。

API 列表

钱包账户

钱包账户相关接口,可以创建自己的钱包,进行钱包相关的操作。

获取钱包账户列表

根据不同条件组合,筛选团队下钱包账户列表。

HTTP 请求地址

POST /v1/account/list

请求参数

参数名称 数据类型 是否必须 描述
pageNumber int32 分页页码,从 1 开始,默认为 1
pageSize int32 每页显示条数,默认为 10 ,最大 100
hiddenOnUI boolean 筛选是否在安全鹭 App 不展示的钱包账户
true:查询 App 不展示的钱包账户
false:查询 App 展示的钱包账户
不传:默认值,同时查询 App 展示和不展示的钱包账户
namePrefix string 筛选钱包账户名称前缀匹配的结果
nameSuffix string 筛选钱包账户名称后缀匹配的结果

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "pageNumber": 1,
    "pageSize": 10,
    "totalElements": 100,
    "content": [
      {
        "accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7",
        "accountName": "default",
        "accountIndex": 0,
        "accountType": "VAULT_ACCOUNT",
        "hiddenOnUI": false,
        "usdBalance": "0",
        "frozenUsdBalance": "0",
        "amlLockUsdBalance": "0",
        "pubKeys": [
          {
            "signAlg": "secp256k1",
            "pubKey": "03ba5cfed3f88a811f0208570c64d1627af2e8f3363f65aad22be7490469dadd2a"
          }
        ]
      }
    ]
  }
}

响应数据

参数名称 数据类型 描述
pageNumber int32 分页页码
pageSize int32 分页每页条数
totalElements int64 总记录数
content array 每页数据列表
└─accountKey string 账户 Key ,账户唯一标识
└─accountName string 账户名称
└─accountIndex int32 账户索引
└─accountType string 账户类型
└─hiddenOnUI boolean 安全鹭 App 是否不展示
true: 不展示
false: 展示
└─usdBalance string 账户余额,查询时 USD 汇率换算余额
└─frozenUsdBalance string 账户冻结金额,查询时 USD 汇率换算金额
└─amlLockUsdBalance string 账户 AML 冻结金额,查询时 USD 汇率换算金额
└─pubKeys array 账户公钥信息
     └─signAlg string 签名算法,目前支持 secp256k1
     └─pubKey string 账户压缩公钥

创建钱包账户

创建一个新的钱包账户。

HTTP 请求地址

POST /v1/account/create

请求参数

参数名称 数据类型 是否必须 描述
accountName string 账户名称,最长 30
autoFuel boolean 是否自动加油
true:自动加油
false:不自动加油
默认:true
hiddenOnUI boolean 是否在安全鹭 App 不展示
true:不展示
false:展示
默认:false

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "accountKey": "account4b8d2c00520646c8862b68420aa1bc55",
    "pubKeys": [
      {
        "signAlg": "secp256k1",
        "pubKey": "03ba5cfed3f88a811f0208570c64d1627af2e8f3363f65aad22be7490469dadd2a"
      }
    ]
  }
}

响应数据

参数名称 数据类型 描述
accountKey string 钱包账户 Key
pubKeys array 账户公钥信息
└─signAlg string 签名算法,目前支持 secp256k1
└─pubKey string 账户压缩公钥

批量创建钱包账户 V1

根据指定数量创建一批钱包账户,批量创建的钱包账户,安全鹭 App 默认不展示,推荐使用 V2 版本接口。

HTTP 请求地址

POST /v1/account/batch/create

请求参数

参数名称 数据类型 是否必须 描述
accountName string 钱包账户名称前缀,最长 30
count int32 创建数量,大于 0,最大 100

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "accountKeyList": [
      "account4b8d2c00520646c8862b68420aa1bc55"
    ]
  }
}

响应数据

参数名称 数据类型 描述
accountKeyList array 钱包账户 Key

批量创建钱包账户 V2

根据指定数量创建一批钱包账户,批量创建的钱包账户,安全鹭 App 默认不展示。

HTTP 请求地址

POST /v2/account/batch/create

请求参数

参数名称 数据类型 是否必须 描述
accountName string 钱包账户名称前缀,最长 30
count int32 创建数量,大于 0,最大 100

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": [
    {
      "accountKey": "account4b8d2c00520646c8862b68420aa1bc55",
      "pubKeys": [
        {
          "signAlg": "secp256k1",
          "pubKey": "03ba5cfed3f88a811f0208570c64d1627af2e8f3363f65aad22be7490469dadd2a"
        }
      ]
    }
  ]
}

响应数据

参数名称 数据类型 描述
accountKey string 钱包账户 Key
pubKeys array 账户公钥信息
└─signAlg string 签名算法,目前支持 secp256k1
└─pubKey string 账户压缩公钥

修改钱包账户 App 展示状态

修改钱包账户在安全鹭 App 的展示状态。

HTTP 请求地址

POST /v1/account/update/show/state

请求参数

参数名称 数据类型 是否必须 描述
accountKey string 钱包账户 Key
hiddenOnUI boolean 是否在安全鹭 App 不展示
true: App 不展示
false: App 展示

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "result": true
  }
}

响应数据

参数名称 数据类型 描述
result boolean 执行结果
true:执行成功
false:执行失败

单个钱包账户添加币种

向钱包账户中添加一个币种,并创建该币种的默认地址组信息,返回默认地址组中的地址信息;如果添加的币种在账户下已经存在,则直接返回该币种的默认地址组信息。
在一个钱包账户下,UTXO类型币种可以添加多个地址组,其他币种一般只会存在一个地址组,可以根据 币种列表 接口币种信息中的 isMultipleAddress 属性值确定是否支持添加多个地址组。

HTTP 请求地址

POST /v1/account/coin/create

请求参数

参数名称 数据类型 是否必须 描述
coinKey string 币种 Key
accountKey string 账户 Key

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": [
    {
      "address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
      "addressType": "DEFAULT",
      "amlLock": "NO"
    }
  ]
}

响应数据

参数名称 数据类型 描述
address string 币种收款地址
addressType string 地址类型
amlLock string 是否 AML 冻结
YES:冻结
NO:非冻结

批量钱包账户下添加币种

指定批量的钱包账户,给每个账户添加指定的币种信息,并创建币种的默认地址组信息,返回默认地址组中的地址信息,如果有钱包账户已经存在对应的币种,则直接返回该账户已经存在币种的默认地址组地址信息。

HTTP 请求地址

POST /v1/account/batch/coin/create

请求参数

参数名称 数据类型 是否必须 描述
coinKey string 币种 Key
accountKeyList array 账户 Key ,最大 100
addressGroupName string 地址组名称,最长30

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": [
    {
      "addressList": [
        {
          "address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
          "addressType": "DEFAULT",
          "amlLock": "NO"
        }
      ],
      "accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7"
    }
  ]
}

响应数据

参数名称 数据类型 描述
addressList array 地址列表
└─address string 币种收款地址
└─addressType string 地址类型
└─amlLock string 是否 AML 冻结
YES:冻结
NO:非冻结
accountKey string 账户 Key

获取钱包账户下币种列表

查询一个钱包账户下的所有币种列表,以及每个币种的默认地址组信息。

HTTP 请求地址

POST /v1/account/coin/list

请求参数

参数名称 数据类型 是否必须 描述
accountKey string 账户 Key

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": [
    {
      "coinKey": "ETH_ROPSTEN",
      "coinFullName": "Ethereum(Ropsten)",
      "coinName": "ETH(Ropsten)",
      "coinDecimal": 18,
      "txRefUrl": "https://ropsten.etherscan.io/tx/{txHash}",
      "addressRefUrl": "https://ropsten.etherscan.io/address/{address}",
      "logoUrl": "https://resource.safeheron.vip/resource/img/logo/1626851355990.png",
      "symbol": "ETH",
      "isMultipleAddress": "NO",
      "feeCoinKey": "ETH_ROPSTEN",
      "feeUnit": "Gwei",
      "feeDecimal": 9,
      "showCoinDecimal": 8,
      "balance": "0",
      "frozenBalance": "0",
      "amlLockBalance": "0",
      "usdBalance": "0",
      "frozenUsdBalance": "0",
      "amlLockUsdBalance": "0",
      "addressList": [
        {
          "address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
          "addressType": "DEFAULT",
          "amlLock": "NO",
          "addressBalance": "0"
        }
      ]
    }
  ]
}

响应数据

参数名称 数据类型 描述
coinKey string 币种 Key
coinFullName string 币种全称
coinName string 币种简称
coinDecimal int32 币种精度
txRefUrl string 引用浏览器交易
addressRefUrl string 引用浏览器地址
logoUrl string 币种 LOGO 地址
symbol string 币种单位名称
isMultipleAddress string 是否能创建多个地址组
YES:是
NO:否
feeCoinKey string 转账所消耗的手续费币种 Key ,例如 ERC20 币种转账,所消耗的手续费币种是 ETH
feeUnit string 手续费单位名 ( Gwei,satoshis )
feeDecimal int32 安全鹭控制台手续费精度
showCoinDecimal int32 安全鹭控制台币种显示精度
balance string 账户余额
frozenBalance string 冻结资金
amlLockBalance string 账户 AML 冻结资金
usdBalance string 账户余额,查询时 USD 汇率换算余额
frozenUsdBalance string 账户冻结金额,查询时 USD 汇率换算金额
amlLockUsdBalance string 账户 AML 冻结金额,查询时 USD 汇率换算金额
addressList array 币种地址列表
└─address string 币种收款地址
└─addressType string 地址类型
└─amlLock string 是否 AML 冻结
YES:冻结
NO:非冻结
└─addressBalance string 币种地址余额

钱包账户币种地址组列表

查询钱包账户下某个币种的所有地址组列表。

HTTP 请求地址

POST /v1/account/coin/address/list

请求参数

参数名称 数据类型 是否必须 描述
pageNumber int32 分页页码,从 1 开始,默认为 1
pageSize int32 每页显示条数,默认为 10 ,最大 100
coinKey string 币种 Key
accountKey string 账户 Key

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "pageNumber": 1,
    "pageSize": 10,
    "totalElements": 100,
    "content": [
      {
        "addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
        "addressGroupName": "AddressName",
        "addressList": [
          {
            "address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
            "addressType": "DEFAULT",
            "amlLock": "NO",
            "addressBalance": "0"
          }
        ]
      }
    ]
  }
}

响应数据

参数名称 数据类型 描述
pageNumber int32 分页页码
pageSize int32 分页每页条数
totalElements int64 总记录数
content array 每页数据列表
└─addressGroupKey string 地址组 Key
└─addressGroupName string 地址组名称
└─addressList array 地址列表
     └─address string 币种收款地址
     └─addressType string 地址类型
     └─amlLock string 是否 AML 冻结
YES:冻结
NO:非冻结
     └─addressBalance string 币种地址余额

查询地址余额信息

根据币种地址查询地址余额信息。

HTTP 请求地址

POST /v1/account/coin/address/info

请求参数

参数名称 数据类型 是否必须 描述
coinKey string 币种 Key
address string 币种收款地址

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
    "addressType": "DEFAULT",
    "amlLock": "NO",
    "addressBalance": "0",
    "accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7"
  }
}

响应数据

参数名称 数据类型 描述
address string 币种收款地址
addressType string 地址类型
amlLock string 是否 AML 冻结
YES:冻结
NO:非冻结
addressBalance string 币种地址余额
accountKey string 账户 Key

修改钱包账户币种地址组名称

修改钱包账户下某个币种的地址组名称。

HTTP 请求地址

POST /v1/account/coin/address/name

请求参数

参数名称 数据类型 是否必须 描述
addressGroupKey string 地址组 Key
addressGroupName string 地址组名称,最长 30

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "result": true
  }
}

响应数据

参数名称 数据类型 描述
result boolean 执行结果
true:执行成功
false:执行失败

UTXO 类型币种添加地址组

为钱包账户下 UTXO 类型币种添加一个新的地址组,如果该币种不存在,则会先添加该币种,再添加新的地址组,返回添加的地址信息。

HTTP 请求地址

POST /v1/account/coin/address/create

请求参数

参数名称 数据类型 是否必须 描述
coinKey string 币种 Key
accountKey string 账户 Key
addressGroupName string 地址组名称,最长 30

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": [
    {
      "address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
      "addressType": "DEFAULT",
      "amlLock": "NO"
    }
  ]
}

响应数据

参数名称 数据类型 描述
address string 币种收款地址
addressType string 地址类型
amlLock string 是否 AML 冻结
YES:冻结
NO:非冻结

UTXO 类型币种批量添加地址组

对于钱包账户下 UTXO 类型的币种,可以通过指定钱包账户和地址组数量,为该账户批量添加多个地址组,返回添加的地址组信息,如果该 UTXO 类型的币种在账户下不存在,则会先添加该币种,然后再添加对应数量的地址组。

HTTP 请求地址

POST /v1/account/coin/utxo/batch/create

请求参数

参数名称 数据类型 是否必须 描述
coinKey string 币种 Key
accountKey string 账户 Key
count int32 数量,最大100
addressGroupName string 地址组前缀名称,最长 30

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": [
    {
      "addressList": [
        {
          "address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
          "addressType": "DEFAULT",
          "amlLock": "NO"
        }
      ],
      "accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7"
    }
  ]
}

响应数据

参数名称 数据类型 描述
addressList array 地址列表
└─address string 币种收款地址
└─addressType string 地址类型
└─amlLock string 是否 AML 冻结
YES:冻结
NO:非冻结
accountKey string 账户 Key

币种

币种相关接口,可以查看平台支持的币种、币种维护信息、币种地址校验等。

币种列表

获取安全鹭平台支持的币种列表。

HTTP 请求地址

POST /v1/coin/list

请求参数

参数名称 数据类型 是否必须 描述

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": [
    {
      "coinKey": "ETH_ROPSTEN",
      "coinFullName": "Ethereum(Ropsten)",
      "coinName": "ETH(Ropsten)",
      "coinDecimal": 18,
      "txRefUrl": "https://ropsten.etherscan.io/tx/{txHash}",
      "addressRefUrl": "https://ropsten.etherscan.io/address/{address}",
      "logoUrl": "https://resource.safeheron.vip/resource/img/logo/1626851355990.png",
      "symbol": "ETH",
      "isMultipleAddress": "NO",
      "feeCoinKey": "ETH_ROPSTEN",
      "feeUnit": "Gwei",
      "feeDecimal": 9,
      "showCoinDecimal": 8,
      "coinType": "NATIVE",
      "tokenIdentifier": "NATIVE",
      "minTransferAmount": "1",
      "blockChain": "ethereum",
      "network": "ropsten",
      "gasLimit": 21000,
      "isMemo": "NO",
      "isUtxo": "NO"
    }
  ]
}

响应数据

参数名称 数据类型 描述
coinKey string 币种 Key
coinFullName string 币种全称
coinName string 币种简称
coinDecimal int32 币种精度
txRefUrl string 引用浏览器交易
addressRefUrl string 引用浏览器地址
logoUrl string 币种 LOGO 地址
symbol string 币种单位名称
isMultipleAddress string 是否能创建多个地址组
YES:是
NO:否
feeCoinKey string 转账所消耗的手续费币种 Key ,例如 ERC20 币种转账,所消耗的手续费币种是 ETH
feeUnit string 手续费单位名 ( Gwei,satoshis )
feeDecimal int32 安全鹭控制台手续费精度
showCoinDecimal int32 安全鹭控制台币种显示精度
coinType string 币种类型
tokenIdentifier string 合约地址,NATIVE 表示原生资产,非 NATIVE 表示合约地址
minTransferAmount string 最小转账数量,转账单位为 symbol
blockChain string 区块链
network string 区块链网络
gasLimit int32 安全鹭设定的 gasLimit
isMemo string 是否支付 MEMO 类型
YES:是
NO:否
isUtxo string 是否是 UTXO 类型,UTXO 类型币种,请 查看
YES:是
NO:否

币种维护列表

获取安全鹭平台处于维护中的币种信息。

HTTP 请求地址

POST /v1/coin/maintain/list

请求参数

参数名称 数据类型 是否必须 描述

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": [
    {
      "coinKey": "ETH_ROPSTEN",
      "maintain": true,
      "title": "ETH 维护通知",
      "content": "我们将在xxx-xxx时间段对 ETH 币种进行维护",
      "startTime": "1635170400000",
      "endTime": "1635199200000"
    }
  ]
}

响应数据

参数名称 数据类型 描述
coinKey string 币种 Key
maintain boolean 是否处于维护中
title string 维护标题
content string 内容
startTime string 币种维护开始时间,时间 UNIX 毫秒数
endTime string 币种维护结束时间,时间 UNIX 毫秒数

币种地址检查

根据传入的校验属性检查币种地址是否正确。

HTTP 请求地址

POST /v1/coin/address/check

请求参数

参数名称 数据类型 是否必须 描述
coinKey string 币种 Key
address string 币种收款地址
checkContract boolean 检查是否是合约地址
true:检查
false:不检查
checkAml boolean 检查aml合法性
true:检查
false:不检查
checkAddressValid boolean 检查地址格式有效性
true:检查
false:不检查

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "addressValid": true,
    "contract": true,
    "amlValid": true
  }
}

响应数据

参数名称 数据类型 描述
addressValid boolean 地址格式是否合法
true:地址合法
false:地址不合法
contract boolean 是否是合约地址
true:是合约地址
false:非合约地址
amlValid boolean 是否风控限制
true:AML 合法地址
false:AML 黑名单地址

币种余额快照

安全鹭会根据交易区块创建的GMT+8 时间对当天的币种余额进行快照存储,可以传递某一个具体日期,查询当天的币种快照余额。

HTTP 请求地址

POST /v1/coin/balance/snapshot

请求参数

参数名称 数据类型 是否必须 描述
gmt8Date string GMT+8 时间 yyyy-MM-dd 格式字符串

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": [
    {
      "coinKey": "ETH_ROPSTEN",
      "coinBalance": "0"
    }
  ]
}

响应数据

参数名称 数据类型 描述
coinKey string 币种 Key
coinBalance string 币种余额,单位为币种列表返回的 symbol

获取币种当前扫块高度

根据传入的币种Key,查询当前币种对应的扫块高度。

HTTP 请求地址

POST /v1/coin/block/height

请求参数

参数名称 数据类型 是否必须 描述
coinKey string 币种 Key,多个币种 Key 时以英文逗号分割

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": [
    {
      "coinKey": "ETH_ROPSTEN",
      "localBlockHeight": 0
    }
  ]
}

响应数据

参数名称 数据类型 描述
coinKey string 币种 Key
localBlockHeight int64 币种当前扫块高度

交易

交易相关接口,可以查询交易信息、发起交易、加速交易、取消交易等操作。

交易列表

根据不同的条件组合,筛选团队下的交易记录。

HTTP 请求地址

POST /v1/transactions/list

请求参数

参数名称 数据类型 是否必须 描述
pageNumber int32 分页页码,从 1 开始,默认为 1
pageSize int32 每页显示条数,默认为 10 ,最大 100
sourceAccountKey string 交易源账户 Key
sourceAccountType string 交易源账户类型
destinationAccountKey string 交易目标账户 Key
destinationAccountType string 交易目标账户类型
createTimeMin int64 创建时间开始时间,UNIX 时间戳毫秒数
createTimeMax int64 创建时间结束时间,UNIX 时间戳毫秒数
txAmountMin string 交易最小金额
txAmountMax string 交易最大金额
coinKey string 币种 Key,多个币种 Key 时以英文逗号分割
feeCoinKey string 手续费币种 Key,多个币种 Key 时以英文逗号分割
transactionStatus string 交易状态
transactionSubStatus string 交易子状态
completedTimeMin int64 交易完成最小时间,UNIX 时间戳毫秒数
completedTimeMax int64 交易完成最大时间,UNIX 时间戳毫秒数
customerRefId string 商户业务唯一 ID 标识
realDestinationAccountType string 实际交易目标账户类型

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "pageNumber": 1,
    "pageSize": 10,
    "totalElements": 100,
    "content": [
      {
        "txKey": "tx46461daa9b7a4612abce99e7ce598844",
        "txHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
        "coinKey": "ETH_ROPSTEN",
        "txAmount": "0.001",
        "sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
        "sourceAccountType": "VAULT_ACCOUNT",
        "sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
        "destinationAccountKey": "6553009588f443b1970a5962590a2158",
        "destinationAccountType": "WHITELISTING_ACCOUNT",
        "destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
        "destinationTag": "TEST",
        "transactionStatus": "COMPLETED",
        "transactionSubStatus": "CONFIRMED",
        "createTime": 1626075236000,
        "note": "发起交易",
        "auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
        "createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
        "txFee": "0.000106841386050000",
        "feeCoinKey": "ETH_ROPSTEN",
        "replaceTxHash": "0x628626531285bb90d4130d3beb3c355d2a7fe0bdfa1fa05e3431f15340aafeb6",
        "customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
        "customerExt1": "1",
        "customerExt2": "2",
        "amlLock": "NO",
        "blockHeight": 10000000,
        "completedTime": 1626075236000,
        "realDestinationAccountType": "VAULT_ACCOUNT",
        "transactionSubStatusDesc": "确认",
        "txAmountToUsd": "19.9813552",
        "sourceAccountName": "钱包1",
        "sourceAccountTypeName": "金库",
        "destinationAccountName": "Api交易组",
        "destinationAccountTypeName": "白名单地址组",
        "auditUserName": "test",
        "createdByUserName": "test"
      }
    ]
  }
}

响应数据

参数名称 数据类型 描述
pageNumber int32 分页页码
pageSize int32 分页每页条数
totalElements int64 总记录数
content array 每页数据列表
└─txKey string 交易 Key
└─txHash string 交易 Hash
└─coinKey string 币种 Key
└─txAmount string 交易金额,单位为币种列表返回的 symbol
└─sourceAccountKey string 交易源账户 Key
└─sourceAccountType string 交易源账户类型
└─sourceAddress string 交易源地址
└─destinationAccountKey string 交易目标账户 Key
└─destinationAccountType string 交易目标账户类型
└─destinationAddress string 交易目标地址
└─destinationTag string 如果目标是tag,memo类型的,都给这个值,可为空
└─transactionStatus string 交易状态
└─transactionSubStatus string 交易子状态
└─createTime int64 交易创建时间,UNIX 时间戳毫秒数
└─note string 备注
└─auditUserKey string 最后审核人 Key
└─createdByUserKey string 创建人 Key
└─txFee string 交易手续费
└─feeCoinKey string 转账所消耗的手续费币种 Key ,例如 ERC20 币种转账,所消耗的手续费币种是 ETH
└─replaceTxHash string 引用的交易 Hash,只有加速的交易存在该值
└─customerRefId string 商户业务唯一 ID 标识
└─customerExt1 string 商户扩展字段
└─customerExt2 string 商户扩展字段
└─amlLock string 是否 AML 冻结
YES:冻结
NO:非冻结
└─blockHeight int64 交易块高度,交易状态为确认中和交易成功时有值
└─completedTime int64 交易完成时间
└─realDestinationAccountType string 实际交易目标账户类型
└─transactionSubStatusDesc string 交易子状态描述
└─txAmountToUsd string 交易时 USD 汇率换算金额
└─sourceAccountName string 交易源账户名称
└─sourceAccountTypeName string 交易源账户类型名称
└─destinationAccountName string 交易目标账户名称
└─destinationAccountTypeName string 交易目标账户类型名称
└─auditUserName string 最后审核人名称
└─createdByUserName string 创建人名称

创建交易

发起一个新的交易。

HTTP 请求地址

POST /v2/transactions/create

请求参数

参数名称 数据类型 是否必须 描述
customerRefId string 商户业务唯一 ID 标识,最长 100
customerExt1 string 商户扩展字段,商户自定义,该字段会透传给商户,最长 255
customerExt2 string 商户扩展字段,商户自定义,该字段会透传给商户,最长 255
note string 交易备注,最长180
coinKey string 币种 Key
txFeeLevel string 交易手续费费率等级
与交易手续费费率二选一,如果设置了交易手续费费率,优先使用设置的费率
feeRateDto object 交易手续费费率,txFeeLevel 和 feeRateDto 二选一
└─feeRate string 费率:UTXO 的 feePerByte; EVM 类的 gasPrice; 以及 TRON 的 feeLimit (对于 TRON 也可以不传)
└─gasLimit string EVM 类的 gasLimit (不传值,默认平台给最合适的值)
└─maxPriorityFee string EIP-1559 的 maxPriorityFee
└─maxFee string EIP-1559 的 maxFee
maxTxFeeRate string 设置交易手续费费率等级估算允许的最大手续费费率
txAmount string 交易金额
sourceAccountKey string 交易源账户 Key
sourceAccountType string 账户类型
destinationAccountKey string 交易目标账户 Key
目标类型为白名单账户时,为地址薄 Key
目标类型为钱包账户时,为钱包账户 Key
目标类型为陌生地址时,该参数不传
destinationAccountType string 交易目标账户类型
destinationAddress string 交易目标地址,如果不传,则使用目标账户的默认地址
destinationTag string 交易目标 Tag
isRbf boolean btc 是否开启 rbf(全称 Replace-by-fee,是比特币内存池中的一种协议,允许使用其他交易将未确认交易进行替换的方式)
failOnContract boolean 默认【true】,该参数决定了在目标地址为合约地址时是否可以成功发起交易。 若选择了【false】,则目标地址为合约时可以成功发起交易, 若选择了【true】,则目标地址为合约时,交易将会发送失败

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "txKey": "tx46461daa9b7a4612abce99e7ce598844"
  }
}

响应数据

参数名称 数据类型 描述
txKey string 交易 Key

EVM 以及 UTXO 类交易加速

针对广播中的交易手续费偏低,长时间不上链,进行交易加速;针对 EVM 的交易加速, BTC 的 RBF 加速(当创建交易/create 指定了 isRbf = true 时,该交易进行加速则是 RBF 加速,否则走 CPFP 加速),以及其它 UTXO 类的 CPFP 加速。

HTTP 请求地址

POST /v2/transactions/recreate

请求参数

参数名称 数据类型 是否必须 描述
txKey string 交易 Key
txHash string 交易 Hash
coinKey string 币种 Key
txFeeLevel string 交易手续费费率等级
与交易手续费费率二选一,如果设置了交易手续费费率,优先使用设置的费率
feeRateDto object 交易手续费费率,txFeeLevel 和 feeRateDto 二选一
└─feeRate string 费率:UTXO 的 feePerByte; EVM 类的 gasPrice; 以及 TRON 的 feeLimit (对于 TRON 也可以不传)
└─gasLimit string EVM 类的 gasLimit
└─maxPriorityFee string EIP-1559 的 maxPriorityFee
└─maxFee string EIP-1559 的 maxFee

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "txKey": "tx46461daa9b7a4612abce99e7ce598844"
  }
}

响应数据

参数名称 数据类型 描述
txKey string 交易 Key

查询单笔交易

查询单笔交易,customerRefId与 txKey 参数二选一必填,如果两个都有值,将按照 txKey 查询。

HTTP 请求地址

POST /v1/transactions/one

请求参数

参数名称 数据类型 是否必须 描述
txKey string 交易 Key
customerRefId string 商户业务唯一 ID 标识,最长 100

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "txKey": "tx46461daa9b7a4612abce99e7ce598844",
    "txHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
    "coinKey": "ETH_ROPSTEN",
    "txAmount": "0.001",
    "sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
    "sourceAccountType": "VAULT_ACCOUNT",
    "sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
    "destinationAccountKey": "6553009588f443b1970a5962590a2158",
    "destinationAccountType": "WHITELISTING_ACCOUNT",
    "destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
    "destinationTag": "TEST",
    "transactionStatus": "COMPLETED",
    "transactionSubStatus": "CONFIRMED",
    "createTime": 1626075236000,
    "note": "发起交易",
    "auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
    "createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
    "txFee": "0.000106841386050000",
    "feeCoinKey": "ETH_ROPSTEN",
    "replaceTxHash": "0x628626531285bb90d4130d3beb3c355d2a7fe0bdfa1fa05e3431f15340aafeb6",
    "customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
    "customerExt1": "1",
    "customerExt2": "2",
    "amlLock": "NO",
    "blockHeight": 10000000,
    "completedTime": 1626075236000,
    "realDestinationAccountType": "VAULT_ACCOUNT",
    "transactionSubStatusDesc": "确认",
    "txAmountToUsd": "19.9813552",
    "sourceAccountName": "钱包1",
    "sourceAccountTypeName": "金库",
    "destinationAccountName": "Api交易组",
    "destinationAccountTypeName": "白名单地址组",
    "auditUserName": "test",
    "createdByUserName": "test"
  }
}

响应数据

参数名称 数据类型 描述
txKey string 交易 Key
txHash string 交易 Hash
coinKey string 币种 Key
txAmount string 交易金额,单位为币种列表返回的 symbol
sourceAccountKey string 交易源账户 Key
sourceAccountType string 交易源账户类型
sourceAddress string 交易源地址
destinationAccountKey string 交易目标账户 Key
destinationAccountType string 交易目标账户类型
destinationAddress string 交易目标地址
destinationTag string 如果目标是tag,memo类型的,都给这个值,可为空
transactionStatus string 交易状态
transactionSubStatus string 交易子状态
createTime int64 交易创建时间,UNIX 时间戳毫秒数
note string 备注
auditUserKey string 最后审核人 Key
createdByUserKey string 创建人 Key
txFee string 交易手续费
feeCoinKey string 转账所消耗的手续费币种 Key ,例如 ERC20 币种转账,所消耗的手续费币种是 ETH
replaceTxHash string 引用的交易 Hash,只有加速的交易存在该值
customerRefId string 商户业务唯一 ID 标识
customerExt1 string 商户扩展字段
customerExt2 string 商户扩展字段
amlLock string 是否 AML 冻结
YES:冻结
NO:非冻结
blockHeight int64 交易块高度,交易状态为确认中和交易成功时有值
completedTime int64 交易完成时间
realDestinationAccountType string 实际交易目标账户类型
transactionSubStatusDesc string 交易子状态描述
txAmountToUsd string 交易时 USD 汇率换算金额
sourceAccountName string 交易源账户名称
sourceAccountTypeName string 交易源账户类型名称
destinationAccountName string 交易目标账户名称
destinationAccountTypeName string 交易目标账户类型名称
auditUserName string 最后审核人名称
createdByUserName string 创建人名称

交易手续费费率估算

发起交易或者加速交易时,可以通过该接口获取对应币种手续费费率估算允许范围,便于选择合适的费率值进行交易。

HTTP 请求地址

POST /v2/transactions/getFeeRate

请求参数

参数名称 数据类型 是否必须 描述
coinKey string 币种 Key
txHash string 交易 Hash,加速交易估算时传递原交易的 Hash 值
sourceAddress string 转账源地址,只有 TRON 查询预估手续费时 必填
destinationAddress string 转账目标地址,只有 TRON 查询预估手续费时可传(非必传,如果传了计算预估手续费会更精准)

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "feeUnit": "Gwei",
    "highFeeRate": {
      "baseFee": "0.000049522",
      "fee": null,
      "feeRate": "2.000049522",
      "gasLimit": "22000",
      "maxFee": "2.000112945",
      "maxPriorityFee": "2"
    },
    "lowFeeRate": {
      "baseFee": "0.000049522",
      "fee": null,
      "feeRate": "1.100049522",
      "gasLimit": "22000",
      "maxFee": "1.100055713",
      "maxPriorityFee": "1.1"
    },
    "middleFeeRate": {
      "baseFee": "0.000049522",
      "fee": null,
      "feeRate": "1.500049522",
      "gasLimit": "22000",
      "maxFee": "1.500079325",
      "maxPriorityFee": "1.5"
    },
    "minFeeRate": {
      "baseFee": "0.000049522",
      "fee": null,
      "feeRate": "1.000049522",
      "gasLimit": "22000",
      "maxFee": "1.000049522",
      "maxPriorityFee": "1"
    }
  }
}

响应数据

参数名称 数据类型 描述
feeUnit string 费率单位
minFeeRate object 最小费率
lowFeeRate object 普通费率
middleFeeRate object 快速费率
highFeeRate object 急速费率
└─feeRate string 费率,UTXO 的 feePerByte 以及 EVM 类的 gasPrice,以及 TRON 的 feeLimit (费率上限)
└─fee string TRON 的预估手续费,只有波场有
└─gasLimit string EVM 类的 gasLimit
└─baseFee string EIP-1559 的 baseFee
└─maxPriorityFee string EIP-1559 的 maxPriorityFee
└─maxFee string EIP-1559 的 maxFee,不同于 API 的 maxTxFeeRate

取消交易

待授权的交易可以发起取消。

HTTP 请求地址

POST /v1/transactions/cancel

请求参数

参数名称 数据类型 是否必须 描述
txKey string 交易 Key
txType string 交易类型,默认 TRANSACTION

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "result": true
  }
}

响应数据

参数名称 数据类型 描述
result boolean 执行结果
true:执行成功
false:执行失败

UTXO 币种归集

对于钱包账户下UTXO 类型多地址币种,可以通过该接口将符合条件的一些地址余额归集到指定的地址中。

HTTP 请求地址

POST /v1/transactions/utxo/collection

请求参数

参数名称 数据类型 是否必须 描述
customerRefId string 商户业务唯一 ID 标识,最长 100
customerExt1 string 商户扩展字段,商户自定义,该字段会透传给商户,最长 255
customerExt2 string 商户扩展字段,商户自定义,该字段会透传给商户,最长 255
note string 交易备注,最长180
coinKey string 币种 Key
txFeeRate string 交易手续费费率,单位为币种列表返回的 feeUnit
txFeeLevel string 交易手续费费率等级
与交易手续费费率二选一,如果设置了交易手续费费率,优先使用设置的费率
maxTxFeeRate string 设置交易手续费费率等级估算允许的最大手续费费率
minCollectionAmount string 最小归集金额
sourceAccountKey string 交易源钱包账户 Key
sourceAccountType string 账户类型,传值 VAULT_ACCOUNT
destinationAccountKey string 交易目标钱包账户 Key
destinationAccountType string 交易目标账户类型,传值 VAULT_ACCOUNT
destinationAddress string 交易目标地址
destinationTag string 交易目标 Tag

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "txKey": "tx46461daa9b7a4612abce99e7ce598844",
    "collectionAmount": "1",
    "collectionNum": 10
  }
}

响应数据

参数名称 数据类型 描述
txKey string 交易 Key
collectionAmount string 归集金额,单位为币种列表返回的 symbol
collectionNum int32 归集数量

MPC Sign

MPC Sign 介绍

安全鹭开放了基于 MPC 的底层签名能力,让您能够灵活的将 MPC 签名算法“可签但密钥不可见”的特性应用到您的业务场景中,如:

为了说明 MPC Sign 的具体应用,下面以构造并签名一笔 ETH 交易过程为例:

单私钥签名流程如下:

  1. 准备交易数据:from, to, nonce, gasLimit, gasPrice, value, data
  2. 序列化:rawTransaction = RLP(from, to, nonce, gasLimit, gasPrice, value, data)
  3. 计算交易数据 hash: hash = sha3(rawTransaction)
  4. 对交易数据 hash 使用单私钥进行签名:sig = secp256k1Sign(私钥,hash)
  5. 组装签名后交易数据:signedRawTransaction = RLP(from, to, nonce, gasLimit, gasPrice, value, data, sig)
  6. 计算交易 hash: txHash = sha3(signedRawTransaction)
  7. 广播交易:rpc.submitTransaction(signedRawTransaction)

如果将上述过程自动化完成,单私钥不可避免的要在服务器中使用,从而带来私钥泄露等安全风险。为了解决单私钥的安全问题,您可以采用安全鹭提供的 MPC Sign 接口进行分布式签名,安全鹭 MPC Sign 签名过程中原始私钥始终不会出现在程序内存中,通过 MPC 技术完成分布式签名,以保护私钥安全。

使用安全鹭 MPC Sign 改造后流程如下:

  1. [客户]准备交易数据:from, to, nonce, gasLimit, gasPrice, value, data
  2. [客户]序列化:rawTransaction = RLP(from, to, nonce, gasLimit, gasPrice, value, data)
  3. [客户]计算交易数据 hash: hash = sha3(rawTransaction)
  4. [客户 + 安全鹭]对交易数据 hash 进行签名:sig = mpcSign(hash)
  5. [客户]组装签名后交易数据:signedRawTransaction = RLP(from, to, nonce, gasLimit, gasPrice, value, data, sig)
  6. [客户]计算交易 hash: txHash = sha3(signedRawTransaction)
  7. [客户]广播:rpc.submitTransaction(signedRawTransaction)

以上两个过程对比可以看出,使用安全鹭 MPC Sign 改造后的流程中,在使用私钥进行签名的过程中使用安全鹭 MPC Sign 对 hash 进行签名,返回签名结果,客户拿到签名结果后应用于自己的业务逻辑。
注:目前 MPC 协议支持 Secp256k1 签名算法,未来会增加对 Ed25519、BLS、Schnorr 等签名算法的支持。

API

创建钱包账户

创建钱包账户

创建 MPC Sign 交易

商户可以通过此接口发起 MPC Sign 签名交易。商户侧需要自主完成交易数据的序列化并生成交易数据的 hash,通过此接口提交 hash 创建签名交易,签名结果可以通过查询单笔 MPC Sign 交易接口或者 webhook 获取,获取签名后续过程商户根据自身需要自主完成。

HTTP 请求地址

POST /v1/transactions/mpcsign/create

请求参数

参数名称 数据类型 是否必须 描述
customerRefId string 商户业务唯一 ID 标识,最长 100
customerExt1 string 商户扩展字段,商户自定义,该字段会透传给商户,最长 255
customerExt2 string 商户扩展字段,商户自定义,该字段会透传给商户,最长 255
sourceAccountKey string 交易源账户 Key
signAlg string 签名算法,目前只支持 Secp256k1
hashs array 交易签名源账户列表
└─note string 交易备注,最长180
└─hash string 原始签名 Hash ,不带 0x 开头的 32 字节 16 进制字符串

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "txKey": "tx46461daa9b7a4612abce99e7ce598844"
  }
}

响应数据

参数名称 数据类型 描述
txKey string 交易 Key

查询单笔 MPC Sign 交易

查询特定的 MPC Sign 交易,customerRefId 与 txKey 参数二选一必填,如果两个都有值,将按照 txKey 查询。

HTTP 请求地址

POST /v1/transactions/mpcsign/one

请求参数

参数名称 数据类型 是否必须 描述
txKey string 交易 Key
customerRefId string 商户业务唯一 ID 标识,最长 100

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": {
    "txKey": "tx46461daa9b7a4612abce99e7ce598844",
    "transactionStatus": "COMPLETED",
    "transactionSubStatus": "CONFIRMED",
    "createTime": 1626075236000,
    "sourceAccountKey": "accountbb6acc4892264e8c9202b9cd3e3235a3",
    "auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
    "createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
    "customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
    "customerExt1": "1",
    "customerExt2": "2",
    "signAlg": "secp256k1",
    "auditUserName": "test",
    "createdByUserName": "test",
    "hashs": [
      {
        "note": "发起交易",
        "hash": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69",
        "sig": "b3d5b45dec592d6ca60455f2926e06e5ff1c81cc4115d44d4b4f9953e6260aee55bc80e341977ab77713c80b31d960be01e09bb19014db49484db45859c77fda00"
      }
    ]
  }
}

响应数据

参数名称 数据类型 描述
txKey string 交易 Key
transactionStatus string 交易状态
transactionSubStatus string 交易子状态
createTime int64 交易创建时间,UNIX 时间戳毫秒数
sourceAccountKey string 交易源账户 Key
auditUserKey string 最后审核人 Key
createdByUserKey string 创建人 Key
customerRefId string 商户业务唯一 ID 标识
customerExt1 string 商户扩展字段
customerExt2 string 商户扩展字段
signAlg string 签名算法
auditUserName string 最后审核人名称
createdByUserName string 创建人名称
hashs array 交易签名源账户列表
└─note string 备注
└─hash string 原始签名 Hash ,不带 0x 开头的 32 字节 16 进制字符串
└─sig string 交易签名 (sig 的值由32 bytes r + 32 bytes s + 1 byte v组成)

MPC Sign 交易列表

根据不同的条件组合,筛选团队下的 MPC Sign 交易记录。

HTTP 请求地址

POST /v1/transactions/mpcsign/list

请求参数

参数名称 数据类型 是否必须 描述
direct string 分页查询方向,默认 NEXT
limit int32 一次查询多少条,默认最大值 500
fromId string 起始交易记录 txKey,传入上一次结果的最后一条交易记录的 txKey ,如果第一页不传
createTimeMin int64 创建时间开始时间,UNIX 时间戳毫秒数
createTimeMax int64 创建时间结束时间,UNIX 时间戳毫秒数

响应示例

{
  "code": 200,
  "message": "SUCCESS",
  "timestamp": "1626336745267",
  "sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
  "key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
  "bizContent": [
    {
      "txKey": "tx46461daa9b7a4612abce99e7ce598844",
      "transactionStatus": "COMPLETED",
      "transactionSubStatus": "CONFIRMED",
      "createTime": 1626075236000,
      "sourceAccountKey": "accountbb6acc4892264e8c9202b9cd3e3235a3",
      "auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
      "createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
      "customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
      "customerExt1": "1",
      "customerExt2": "2",
      "signAlg": "secp256k1",
      "auditUserName": "test",
      "createdByUserName": "test",
      "hashs": [
        {
          "note": "发起交易",
          "hash": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69",
          "sig": "b3d5b45dec592d6ca60455f2926e06e5ff1c81cc4115d44d4b4f9953e6260aee55bc80e341977ab77713c80b31d960be01e09bb19014db49484db45859c77fda00"
        }
      ]
    }
  ]
}

响应数据

参数名称 数据类型 描述
txKey string 交易 Key
transactionStatus string 交易状态
transactionSubStatus string 交易子状态
createTime int64 交易创建时间,UNIX 时间戳毫秒数
sourceAccountKey string 交易源账户 Key
auditUserKey string 最后审核人 Key
createdByUserKey string 创建人 Key
customerRefId string 商户业务唯一 ID 标识
customerExt1 string 商户扩展字段
customerExt2 string 商户扩展字段
signAlg string 签名算法
auditUserName string 最后审核人名称
createdByUserName string 创建人名称
hashs array 交易签名源账户列表
└─note string 备注
└─hash string 原始签名 Hash ,不带 0x 开头的 32 字节 16 进制字符串
└─sig string 交易签名 (sig 的值由32 bytes r + 32 bytes s + 1 byte v组成)

Webhook

Webhook 概述

安全鹭可以通过 Webhook 主动通知您团队下发生的一些事件通知。比如:

如果您需要接收事件通知,可以使用具有API管理权限的用户账户登录安全鹭控制台,在 设置 -> API 账户管理 界面配置 Webhook 信息。

Webhook 回调时采用与 API 鉴权中相同的数据加密和签名方案,需要您在安全鹭控制台配置您的 Webhook RSA 公钥。您可以参考 API 鉴权章节生成 RSA 公私钥对,在安全鹭控制台可获取安全鹭 Webhook RSA 公钥,您可以使用该公钥对回调数据进行验签。

回调请求描述

安全鹭会向您在控制台中设置的 Webhook 回调地址发送一个 POST 请求,HTTP 请求头中 Content-Typeapplication/json;charset=UTF-8

回调的请求参数格式如下:

回调请求示例

{
    "bizContent": "string",
    "sig": "string",
    "key": "string",
    "timestamp":"string"
}
参数 类型 描述
timestamp string 回调时间戳,UNIX 毫秒格式字符串
bizContent string 业务请求参数 AES 加密后数据
sig string 使用安全鹭 Webhook RSA 私钥对请求参数签名得到的签名数据
key string 使用您的 Webhook RSA 公钥对随机 AES Key 加密后的数据

您可以使用以下流程对回调数据进行解密和验签:

您在收到 Webhook 推送通知后,需要返回成功(HTTP状态码 200 )应答,成功响应内容格式固定为为:

Webhook响应示例

{
  "code":200,
  "message":"SUCCESS"
}

示例如右侧所示:

参数 类型 描述
code string webhook响应码,成功固定为 200
message string webhook返回信息,成功固定为 SUCCESS

安全鹭在收到非200成功状态码以及响应内容非以上成功格式时,会认为此次推送失败,会再次进行重试推送,再次推送的频率为 30s,1m,5m,1h,12h,24h。

事件格式

bizContent 字段解密后数据格式,如右侧所示:

事件格式示例

{
    "eventType": "TRANSACTION_CREATED",
    "eventDetail": {
    }
}
参数 类型 描述
eventType string 回调事件类型
eventDetail object 回调事件详情

事件类型

eventType eventDetail 描述
TRANSACTION_CREATED TransactionParam 创建交易
TRANSACTION_STATUS_CHANGED TransactionParam 交易状态变更
MPC_SIGN_CREATED MPCSignParam 创建 MPC Sign 交易
MPC_SIGN_STATUS_CHANGED MPCSignParam MPC Sign 交易状态变更

事件详情

TransactionParam

TransactionParam 示例

{
    "txKey": "tx46461daa9b7a4612abce99e7ce598844",
    "txHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
    "coinKey": "ETH_ROPSTEN",
    "txAmount": "0.001",
    "sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
    "sourceAccountType": "VAULT_ACCOUNT",
    "sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
    "destinationAccountKey": "6553009588f443b1970a5962590a2158",
    "destinationAccountType": "WHITELISTING_ACCOUNT",
    "destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
    "destinationTag": "TEST",
    "transactionStatus": "COMPLETED",
    "transactionSubStatus": "CONFIRMED",
    "createTime": 1626075236000,
    "note": "发起交易",
    "auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
    "createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
    "txFee": "0.000106841386050000",
    "feeCoinKey": "ETH_ROPSTEN",
    "replaceTxHash": "0x628626531285bb90d4130d3beb3c355d2a7fe0bdfa1fa05e3431f15340aafeb6",
    "customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
    "customerExt1": "1",
    "customerExt2": "2",
    "amlLock": "NO",
    "blockHeight": 10000000,
    "completedTime": 1626075236000,
    "realDestinationAccountType": "VAULT_ACCOUNT"
  }
参数名称 数据类型 描述
txKey string 交易 Key
txHash string 交易 Hash
coinKey string 币种 Key
txAmount string 交易金额,单位为币种列表返回的 symbol
sourceAccountKey string 交易源账户 Key
sourceAccountType string 交易源账户类型
sourceAddress string 交易源地址
destinationAccountKey string 交易目标账户 Key
destinationAccountType string 交易目标账户类型
destinationAddress string 交易目标地址
destinationTag string 如果目标是tag,memo类型的,都给这个值,可为空
transactionStatus string 交易状态,交易状态为确认中时,当币种确认数达到币种设定的确认数时,交易状态更新为交易成功
transactionSubStatus string 交易子状态
createTime int64 交易创建时间,UNIX 时间戳毫秒数
note string 备注
auditUserKey string 最后审核人 Key
createdByUserKey string 创建人 Key
txFee string 交易手续费
feeCoinKey string 转账所消耗的手续费币种 Key ,例如 ERC20 币种转账,所消耗的手续费币种是 ETH
replaceTxHash string 引用的交易 Hash,只有加速的交易存在该值
customerRefId string 商户业务唯一 ID 标识
customerExt1 string 商户扩展字段
customerExt2 string 商户扩展字段
amlLock string 是否 AML 冻结
YES:冻结
NO:非冻结
blockHeight int64 交易块高度,交易状态为确认中和交易成功时有值
completedTime int64 交易完成时间
realDestinationAccountType string 实际交易目标账户类型

MPCSignParam

MPCSignParam 示例

{
    "txKey": "tx697eebea3a61440a8edf6f0a783d19b2",
    "sourceAccountKey": "sourceAccountKey",
    "auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
    "createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
    "createTime": 1626075236000,
    "customerRefId": "1639558034534",
    "customerExt1": "",
    "customerExt2": "",
    "signAlg": "secp256k1",
    "transactionStatus": "CANCELLED",
    "transactionSubStatus": "",
    "hashs": [
        {
            "note": "",
            "hash": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69",
            "sig":""
        }
    ]
}
参数 类型 描述
txKey string 交易 Key
signAlg string 签名算法,目前支持 secp256k1
transactionStatus string 交易状态
transactionSubStatus string 交易子状态
sourceAccountKey string 源账户 Key
auditUserKey string 最后审核人 Key
createdByUserKey string 创建人 Key
createTime int64 交易创建时间,UNIX 时间戳毫秒数
customerRefId string 自定义业务唯一标识,在发起交易时,安全鹭使用此字段判断进行幂等判断
customerExt1 string 商户扩展字段
customerExt2 string 商户扩展字段
hashs array 交易签名源账户信息
└─note string 交易备注
└─hash string 签名 Hash
└─sig string 交易签名 (sig 的值由32 bytes r + 32 bytes s + 1 byte v组成)

已接入币种

币种 币种确认数 账户类型
Ethereum 12 ACCOUNT
Ethereum(Ropsten) 50 ACCOUNT
Bsc 12 ACCOUNT
Heco 12 ACCOUNT
Tron 20 ACCOUNT
Avalanche 120 ACCOUNT
Ether Classic 500 ACCOUNT
Bitcoin 2 UTXO
Bitcoin cash 10 UTXO
Dash 10 UTXO

API 签名机

API 签名机概述

API 签名机用于实现自动化签名流程,需要您私有化部署。API 签名机中包含授权私钥和 MPC 私钥分片,分别用于授权交易和进行 MPC 签名。

API 签名机会将交易审核任务回调您的业务系统,根据您业务系统的响应对交易审核任务进行拒绝或者授权通过。自动化签名流程如下图所示:

自动化签名流程

(1)通过安全鹭 API 发起交易请求

(2)安全鹭下发交易审核任务列表,请求 API 签名机授权

(3)API 签名机回调您的业务系统,您的业务系统进行授权

(4)业务系统在回调中响应授权结果

(5)如果授权通过,API 签名机参与 MPC 签名

签名机回调

API 签名机会向您配置的回调地址发送一个 POST 请求,HTTP 请求头中 Content-Typeapplication/json;charset=UTF-8

API 签名机回调时采用与 API 鉴权中相同的数据加密和签名方案,需要您在 API 签名机配置您的 Callback RSA 公钥。您可以参考 API 鉴权章节生成 RSA 公私钥对。

在配置 API 签名机时需要配置 API RSA 公私钥对与安全鹭 API 网关进行通信,在 API 签名机回调您的业务系统时,复用了 API RSA 公私钥对与您的业务系统进行通信。

回调请求格式

回调的请求参数格式如下:

回调请求示例

{
    "bizContent": "string",
    "sig": "string",
    "key": "string",
    "timestamp":"string"
}
参数 类型 描述
timestamp string 回调时间戳
bizContent string 业务请求参数 AES 加密后数据
sig string 使用您的 API RSA 私钥对请求参数签名得到的签名数据
key string 使用您的 Callback RSA 公钥对随机 AES Key 加密后的数据

您可以使用以下流程对回调数据进行解密和验签:

回调响应格式

回调响应参数格式如下:

回调响应示例

{
    "code": 200,
    "message": "SUCCESS",
    "timestamp": "1628652100447",
    "bizContent": "string",
    "key": "string",
    "sig": "string"
}
响应参数 类型 描述
code int 响应结果码,用于日志输出,正常返回请使用 200
message string 响应结果描述,用于日志输出,正常返回请使用 SUCCESS
timestamp string 响应时间戳
sig string 使用您的 Callback RSA 私钥对响应参数签名得到的签名数据
key string 使用您的 API RSA 公钥对随机 AES Key 加密后的数据
bizContent object 业务响应参数 AES 加密后数据

您可以使用以下流程对响应数据进行加密和签名:

签名机回调业务字典

回调字典

参数名称 数据类型 描述
type string 业务类型
customerContent object 业务内容

回调类型

type customerContent 描述
TRANSACTION 交易审核 审核交易
MPC_SIGN MPC Sign 审核 签名交易

交易审核

示例

{
    "auditRecordKey": "57e3a3e0eb3140c3ba538cc094bcb024",
    "txKey": "txc0710da7db2b42ff9bf28df8910f8a88",
    "coinKey": "ETH_ROPSTEN",
    "txAmount": "0.012000000000000000",
    "sourceAddress":"0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
    "sourceAccountKey": "accounta5867fecbbbc4a4f876532c87477407a",
    "sourceAccountType": "VAULT_ACCOUNT",
    "destinationAccountKey": "0259e8c481c345ca922f489961bc331b",
    "destinationAccountType": "INTERNAL_WALLET",
    "destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
    "destinationTag": null,
    "customerRefId": "123234111112112",
    "triggerTime": 1635938498071,
        "triggerUserName": "signer",
    "txHash": "",
    "blockHeight": null,
    "feeCoinKey": "ETH_ROPSTEN",
    "fee": null,
    "amlLock": "NO",
    "customerExt1": "",
    "customerExt1": ""
}
参数名称 数据类型 描述
txKey string 交易 Key
txHash string 交易 Hash
coinKey string 币种 Key
txAmount string 交易金额,单位为币种列表返回的 symbol
sourceAccountKey string 交易源账户 Key
sourceAccountType string 交易源账户类型
sourceAddress string 交易源地址
destinationAccountKey string 交易目标账户 Key
destinationAccountType string 交易目标账户类型
destinationAddress string 交易目标地址
destinationTag string 如果目标是tag,memo类型的,都给这个值,可为空
vaultTxDirection string 交易方向
transactionStatus string 交易状态,交易状态为确认中时,当币种确认数达到币种设定的确认数时,交易状态更新为交易成功
transactionSubStatus string 交易子状态
createTime int64 交易创建时间,UNIX 时间戳毫秒数
note string 备注
auditUserKey string 最后审核人 Key
createdByUserKey string 创建人 Key
txFee string 交易手续费
feeCoinKey string 转账所消耗的手续费币种 Key ,例如 ERC20 币种转账,所消耗的手续费币种是 ETH
replaceTxHash string 引用的交易 Hash,只有加速的交易存在该值
customerRefId string 商户业务唯一 ID 标识
customerExt1 string 商户扩展字段
customerExt2 string 商户扩展字段
amlLock string 是否 AML 冻结
YES:冻结
NO:非冻结

MPC SIGN 审核

示例

{
    "auditRecordKey": "57e3a3e0eb3140c3ba538cc094bcb024",
    "txKey": "tx697eebea3a61440a8edf6f0a783d19b2",
    "triggerTime": 1635938498071,
        "triggerUserName": "signer",
    "note": "",
    "customerRefId": "1639558034534",
    "customerExt1": "",
    "customerExt2": "",
    "signAlg": "secp256k1",
    "hashs": [
        {
            "sourceAccountKey": "sourceAccountKey",
            "hash": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69"
        }
    ]
}
参数名称 数据类型 描述
auditRecordKey string 审核记录唯一标识
customerRefId string 商户业务唯一 ID 标识
note string 交易备注
triggerTime string 审核触发时间
triggerUserName string 审核触发者名称
txKey string 交易唯一标识 Key
customerExt1 string 商户扩展字段
customerExt2 string 商户扩展字段
signAlg string 签名算法
hashs array 交易签名源账户信息
└─sourceAccountKey string 源账户 Key
└─hash string 签名 Hash

响应字典

审核交易任务

参数名称 数据类型 是否必须 描述
approve boolean 审核结果
true: 审核通过
false: 审核拒绝

错误码

错误码 描述
200 成功
500 系统错误
1001 未知异常,请联系安全鹭客服
1004 重复的请求
1005 用户无权限
1008 请求非法
1009 API Key 非法
1010 参数解密失败
1011 IP 非法
1012 验签失败
1013 时间戳检查失败
1014 IP 超过频率限制
1015 非法的用户状态
1016 非法的 API Key 状态
1017 参数校验错误
1018 请求记录不存在
3009 商户已冻结
3010 商户已关闭
3016 请求基础服务失败
9001 商户业务唯一 ID 已经存在
9002 系统维护中,暂停转账
9003 发送数量的小数精度错误
9004 费率的小数精度不正确
9005 隐藏账户不允许修改名称
9006 隐藏的账户不允许提币
9007 源账户已冻结
9008 地址已经存在
9009 地址格式错误
9010 存款地址存在安全隐患
9011 地址薄已经存在该币种
9012 地址不存在
9013 白名单地址状态非法
9015 目标账户被冻结
9016 该转账地址存在安全风险,为了您的资产安全,请谨慎操作,如有疑问请联系安全鹭支持团队
9017 手续费不足
9018 手续费过高
9019 手续费过低
9020 TRX 币种不支持源地址和目标地址为同一个地址
9021 要替换的交易不存在
9022 处于“广播中”的交易才能加速
9023 不支持加速的币种
9024 试图由未经授权的用户发起或批准交易
9025 取款的金额低于规定的最低限额
9026 没有足够的资金来满足提款要求
9027 匹配到策略,但审核人不是可以审核的角色
9028 缺乏相应的交易策略
9030 非可以取消的状态
9031 线上预估手续费大于设置最高手续费限制
9032 非 UTXO 类型币种
9033 白名单地址组名称已存在
9034 地址与 ID 不匹配
9035 交易记录不存在
9036 源账户不存在
9037 账户币种不存在
9038 暂不支持该币种
9039 钱包账户数量超过限制
9040 地址数量超过限制
9041 钱包名称已存在
9042 不满足 UTXO 资金归集要求
9043 MPC Sign 当前只支持同一账号
9044 hash 不合法
9045 其他地址薄已存在该地址

数据字典

交易状态

字典码 描述
SUBMITTED 待授权
SIGNING 签名中
CANCELLED 交易取消
BROADCASTING 广播中
CONFIRMING 确认中
COMPLETED 交易成功
FAILED 交易失败
REJECTED 拒绝

交易子状态

字典码 描述
CONFIRMED 确认
UN_KNOW_ERROR 意外错误
REVIEW_REJECTED 审核拒绝
TRADING_STRATEGY_BLOCKING 交易策略阻断
MATCHING_RULE_NO_AUDITOR 匹配到策略,但editor不是可以审核的角色
TX_INFO_ERROR 交易
NONCE_TOO_LOW nonce过低
INTRINSIC_GAS_TOO_LOW GasLimit太小,无法完成交易执行
INSUFFICIENT_FUNDS 没有足够的资金来满足提款要求
AMOUNT_TOO_SMALL 取款的金额低于规定的最低限额
TRANSACTION_UNDERPRICED 手续费太小,交易被节点拒绝
MISSING_INPUTS 无效的input
INVALID_SIGNATURE 无效的交易签名
INTERNAL_ERROR 处理交易时出现内部错误
TIMEOUT 交易请求已超时
PENDING_BLOCKCHAIN_CONFIRMATIONS 等待区块链确认
TAPOS_ERROR Tapos检查错误
NODE_SERVER_BUSY 节点服务忙
DUP_TRANSACTION_ERROR 交易已上链,再次提交了相同交易
TRANSACTION_EXPIRATION_ERROR 交易过期失效
TRANSACTION_EXECUTION_FAILED 交易上链执行失败
BANDWITH_ERROR 特指Tron交易,账户资源不足,可提高手续费或者购买资源(带宽或能量)后再发起交易
ACCOUNT_DOES_NOT_EXIST 账户不存在
NO_MATCHING_RULE_FOUND 交易失败,请先配置交易策略
WHITELIST_ADDRESS_STATUS_ILLEGAL 白名单地址状态未审核通过
AML_SCREENING_REJECTED AML检查拒绝
CONTRACT_VALIDATE_ERROR 交易检验错误
THE_DEAL_WAS_ABANDONED 交易被废弃
MANUAL_TX_FAIL 人工处理
CANCELLED_BY_USER 用户取消交易
RISK_CHECK_ILLEGAL 风控检测异常
WALLET_NOT_ALLOWED 该钱包不支持当前操作
USER_NO_PERMISSION 用户无权限
PROCESSING_EXCHANGE 交易所正在处理
PENDING_EXCHANGE 等待交易所确认
CANCELED_EXCHANGE 交易所取消交易
FAILED_EXCHANGE 交易所交易失败
CONFIRMING_EXCHANGE 交易所交易确认中
CONFIRMED_EXCHANGE 交易所交易完成确认
EXCHANGE_CALL_ERROR 调用交易所服务异常
EXCHANGE_SIGNATURE_ERROR 交易所签名失败
EXCHANGE_WHILELIST_UNSET_ERROR 未在交易所设置提币地址
EXCHANGE_EMAIL_CONFIRMING 等待邮件确认
EXCHANGE_UN_KNOW_ERROR 意外错误
EXCHANGE_ADDRESS_ERROR 交易所报错地址错误
EXCHANGE_IP_ERROR 交易所IP地址错误
EXCHANGE_INVALID_API 交易所无效的API账号
EXCHANGE_TRANS_PERMISSION_DENIED 交易所API无提币权限
EXCHANGE_INVALID_INFO 无效的API密钥,IP或操作权限
EXCHANGE_TRANS_LIMIT 交易所限制此帐户转出
EXCHANGE_AMOUNT_OVER_LIMIT 转出金额超过上限
EXCHANGE_BALANCE_LACK 可用余额不足

交易手续费费率等级

字典码 描述
LOW
MIDDLE
HIGH

账户类型

字典码 描述
VAULT_ACCOUNT 金库账户

交易源账户类型

字典码 描述
VAULT_ACCOUNT 金库账户
UNKNOWN 外部账户

交易目标账户类型

字典码 描述
VAULT_ACCOUNT 金库账户
WHITELISTING_ACCOUNT 白名单账户
ONE_TIME_ADDRESS 陌生地址账户

币种白名单状态

字典码 描述
VERIFY_PENDING 审核中
VERIFY_PASS 审核通过
VERIFY_REFUSE 审核拒绝
AML_REFUSE 风控拒绝

交易方向

字典码 描述
RECEIVE 收,源账户为外部账户,目标账户为平台账户
SEND 发,源账户为金库账户
SEND_SELF 发给自己,源账户为金库账户,目标账户为金库账户

币种类型

字典码 描述
NATIVE 原生资产,比如 ETH、BTC
ERC20 ETH 上的代币标准
OMNI BTC 上的代币标准
TRC20 TRON 上的代币标准
BEP20 BSC 上的代币标准

地址类型

字典码 描述
DEFAULT 普通地址
P2PKH 普通地址
P2WPKH 隔离见证地址
P2PKH_CASH BCH 格式普通地址

交易类型

字典码 描述
TRANSACTION 交易
MPC_SIGN 原始签名

签名算法

字典码 描述
secp256k1 secp256k1

分页查询方向

字典码 描述
PREV 向前
NEXT 向后

更新日志

2022-06-30 v2.0.0

2022-06-18 v1.0.4

2022-01-18 v1.0.3

2021-12-03 v1.0.2

2021-11-17 v1.0.1

2021-08-31 v1.0.0