NAV
Safeheron API 文档
English | 中文

介绍

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

您可以通过 Safeheron 提供的 API :

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

接入指南

概述

请使用具有 API 管理权限的用户账户登录 Safeheron 控制台,在 管理 -> API 标签页进行 Webhook 配置与 API 账户创建,API 账户创建成功后,可以使用 API Key 来访问 Safeheron API 。

API 鉴权

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

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

您可以使用 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 白名单

在调用 Safeheron 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 使用 Safeheron 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 使用 Safeheron 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 解密后示例

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

API 列表

钱包账户

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

获取钱包账户列表

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

HTTP 请求地址

POST /v1/account/list

请求参数

参数名称 数据类型 是否必须 描述
pageNumber int32 分页页码,从 1 开始,默认为 1
pageSize int32 每页显示条数,默认为 10 ,最大 100
hiddenOnUI boolean 筛选是否在 Safeheron 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 Safeheron 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
hiddenOnUI boolean 是否在 Safeheron 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

根据指定数量创建一批钱包账户,批量创建的钱包账户,Safeheron 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

根据指定数量创建一批钱包账户,批量创建的钱包账户,Safeheron 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 展示状态

修改钱包账户在 Safeheron App 的展示状态。

HTTP 请求地址

POST /v1/account/update/show/state

请求参数

参数名称 数据类型 是否必须 描述
accountKey string 钱包账户 Key
hiddenOnUI boolean 是否在 Safeheron 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 Safeheron 控制台手续费精度
showCoinDecimal int32 Safeheron 控制台币种显示精度
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

币种

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

币种列表

获取 Safeheron 平台支持的币种列表。

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",
      "blockchainType": "EVM"
    }
  ]
}

响应数据

参数名称 数据类型 描述
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 Safeheron 控制台手续费精度
showCoinDecimal int32 Safeheron 控制台币种显示精度
coinType string 币种类型
tokenIdentifier string 合约地址,NATIVE 表示原生资产,非 NATIVE 表示合约地址
minTransferAmount string 最小转账数量,转账单位为 symbol
blockChain string 区块链
network string 区块链网络
gasLimit int32 Safeheron 设定的 gasLimit
isMemo string 是否支付 MEMO 类型
YES:是
NO:否
isUtxo string 是否是 UTXO 类型,UTXO 类型币种,请 查看
YES:是
NO:否
blockchainType string 区块链类型

币种维护列表

获取 Safeheron 平台处于维护中的币种信息。

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 黑名单地址

币种余额快照

Safeheron 会根据交易区块创建的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 实际交易目标账户类型
hideSmallAmountUsd string 自定义过滤金额,即查询结果不返回低于此金额的交易记录,单位USD

响应示例

{
  "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】,则目标地址为合约时,交易将会发送失败
nonce int64 自定义 nonce
balanceVerifyType string 余额检查类型,默认 BALANCE_CHECK

响应示例

{
  "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 预估手续费时,必填;当为 EVM 时动态获取链上 gasLimit 时 必填,否则 gasLimit 返回默认固定值
destinationAddress string 转账目标地址,当 TRON 预估手续费时,可传(非必传,传了则计算预估手续费会更精确);当为 EVM 时动态获取链上 gasLimit 时 必填,否则 gasLimit 返回默认固定值
value string 转账金额,传入该字段,计算出的 gamLimit 更加精确

响应示例

{
  "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 归集数量

Web3 API

Web3 API 介绍

Safeheron 面向机构级客户,为 DeFi、NFT 等 Web3 应用场景,引入了通用多签审批的安全治理。您可以通过 API 发起 Web3 交易,轻松链接任意 DeFi、NFT 等 Web3 应用,自动化您的 Web3 业务。

支持以下的 API:

  1. eth_sign
  2. personal_sign
  3. eth_signTypedData
  4. eth_signTransaction

创建 Web3 钱包账户

创建一个新的 Web3 钱包账户。

HTTP 请求地址

POST /v1/web3/account/create

请求参数

参数名称 数据类型 是否必须 描述
accountName string 账户名称,最长 30
hiddenOnUI boolean 是否在 Safeheron 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": "account66c6380427e64537b85c5f23aec56272",
    "pubkeyList": [
      {
        "signAlg": "secp256k1",
        "pubkey":    "02c165c9a481f6a12eabe0d417ca6e7d04e762c5786afdf55c8c5716a1214b8cbf"           }
    ],
    "addressList": [
      {
        "blockchainType": "EVM",
        "address": "0x111111111111111111111111111"
      }
    ]
  }
}

响应数据

参数名称 数据类型 描述
accountKey string 账户 Key ,账户唯一标识
pubKeyList array 账户公钥信息
└─signAlg string 签名算法,目前支持 secp256k1
└─pubKey string 账户压缩公钥
addressList array 地址列表
└─blockchainType string 区块链类型
└─address string 币种收款地址

批量创建 Web3 钱包账户

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

HTTP 请求地址

POST /v1/web3/batch/account/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": "account66c6380427e64537b85c5f23aec56272",
      "pubkeyList": [
        {
          "signAlg": "secp256k1",
          "pubkey":    "02c165c9a481f6a12eabe0d417ca6e7d04e762c5786afdf55c8c5716a1214b8cbf"           }
      ],
      "addressList": [
        {
          "blockchainType": "EVM",
          "address": "0x111111111111111111111111111"
        }
      ]
    }
  ]  
}

响应数据

参数名称 数据类型 描述
accountKey string 账户 Key ,账户唯一标识
pubKeyList array 账户公钥信息
└─signAlg string 签名算法,目前支持 secp256k1
└─pubKey string 账户压缩公钥
addressList array 地址列表
└─blockchainType string 区块链类型
└─address string 币种收款地址

获取 Web3 钱包账户列表

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

HTTP 请求地址

POST /v1/web3/account/list

请求参数

参数名称 数据类型 是否必须 描述
direct string 分页查询方向,默认 NEXT
limit int32 一次查询多少条,默认最大值 500
fromId string 起始钱包的 accountKey

响应示例

{
  "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": [
    {
      "accountName": "钱包 11",
      "accountKey": "account2024152bd65d4eaa85a26e57497562c1",
      "hiddenOnUI": false,
      "pubkeyList": [
        {
          "signAlg": "secp256k1",
          "pubkey": "02226320f7571a5b1f2d56f3f1d1b6c4efce9a1a882f8f42bfc37bc7d1f3848cc2"
        }
      ],
      "addressList": [
        {
          "blockchainType": "EVM",
          "address": "0x111111111111111111111111111"
        }
      ]
    }
  ]
}

响应数据

参数名称 数据类型 描述
accountKey string 账户 Key ,账户唯一标识
accountName string 账户名称
hiddenOnUI boolean 是否在 Safeheron APP内显示此钱包
true:不展示
false:展示
pubKeyList array 账户公钥信息
└─signAlg string 签名算法,目前支持 secp256k1
└─pubKey string 账户压缩公钥
addressList array 地址列表
└─blockchainType string 区块链类型
└─address string 币种收款地址

创建 ethSign 签名

商户可以通过此接口发起 ethSign 签名。商户侧需要自主完成交易数据的序列化并生成交易数据的 hash (同时支持 0x 和非 0x 开头的数据格式),通过此接口提交 hash 创建签名,签名结果可以通过查询单笔 Web3 签名接口或者 webhook 获取,获取签名后续过程商户根据自身需要自主完成。

HTTP 请求地址

POST /v1/web3/sign/ethSign

请求参数

参数名称 数据类型 是否必须 描述
accountKey string 交易源账户 Key
customerRefId string 商户业务唯一 ID 标识,最长 100
note string 备注
customerExt1 string 商户扩展字段,商户自定义,该字段会透传给商户,最长 255
customerExt2 string 商户扩展字段,商户自定义,该字段会透传给商户,最长 255
messageHash object messageHash
└─chainId int64 链ID (chainId 不参与签名,只有 hash 参与签名)
└─hash array 待签名 Hash ,16 进制字符串 (暂只支持传入1个)

响应示例

{
  "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": "tx7dacce99c5f249b6bf486214596a5458"
  }
}

响应数据

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

创建 personalSign 签名

商户可以通过此接口发起任意文本的 personalSign 签名。商户侧只需要准备好待签名数据,通过此接口提交待签名数据创建签名,签名结果可以通过查询单笔 Web3 签名接口或者 webhook 获取,获取签名后续过程商户根据自身需要自主完成。

HTTP 请求地址

POST /v1/web3/sign/personalSign

请求参数

参数名称 数据类型 是否必须 描述
accountKey string 交易源账户 Key
customerRefId string 商户业务唯一 ID 标识,最长 100
note string 备注
customerExt1 string 商户扩展字段,商户自定义,该字段会透传给商户,最长 255
customerExt2 string 商户扩展字段,商户自定义,该字段会透传给商户,最长 255
message object message
└─chainId int64 链ID (chainId 不参与签名,只有 data 参与签名)
└─data 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":
  {
    "txKey": "tx7dacce99c5f249b6bf486214596a5458"
  }
}

响应数据

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

创建 ethSignTypedData 签名

商户可以通过此接口发起特定格式数据 (支持 v1,v3 和 v4 类型的数据格式) 的 ethSignTypedData 签名。商户侧需要自主完成签名数据的格式封装,通过此接口提交特定格式的待签名数据创建签名,签名结果可以通过查询单笔 Web3 签名接口或者 webhook 获取,获取签名后续过程商户根据自身需要自主完成。

HTTP 请求地址

POST /v1/web3/sign/ethSignTypedData

请求参数

参数名称 数据类型 是否必须 描述
accountKey string 交易源账户 Key
customerRefId string 商户业务唯一 ID 标识,最长 100
note string 备注
customerExt1 string 商户扩展字段,商户自定义,该字段会透传给商户,最长 255
customerExt2 string 商户扩展字段,商户自定义,该字段会透传给商户,最长 255
message object message
└─chainId int64 链ID (chainId 不参与签名,只有 data 参与签名)
└─data string 待签名数据
└─version string EthSignTypedData 版本

响应示例

{
  "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": "tx7dacce99c5f249b6bf486214596a5458"
  }
}

响应数据

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

创建 ethSignTransaction 签名

商户可以通过此接口发起 ethSignTransaction 签名交易。商户侧需要准备好 from, to, nonce, gasLimit, gasPrice, value, data 等交易相关数据,通过此接口提交交易数据创建签名,签名结果可以通过查询单笔 Web3 签名接口或者 webhook 获取,获取签名后续过程商户根据自身需要自主完成。

HTTP 请求地址

POST /v1/web3/sign/ethSignTransaction

请求参数

参数名称 数据类型 是否必须 描述
accountKey string 交易源账户 Key
customerRefId string 商户业务唯一 ID 标识,最长 100
note string 备注
customerExt1 string 商户扩展字段,商户自定义,该字段会透传给商户,最长 255
customerExt2 string 商户扩展字段,商户自定义,该字段会透传给商户,最长 255
transaction object transaction
└─to string to
└─value string value(单位: wei)
└─chainId int64 链ID
└─gasPrice string gasPrice
└─gasLimit int32 gasLimit
└─maxPriorityFeePerGas string EIP-1559 的 maxPriorityFeePerGas
└─maxFeePerGas string EIP-1559 的 maxFeePerGas
└─nonce int64 nonce
└─data string data

响应示例

{
  "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": "tx7dacce99c5f249b6bf486214596a5458"
  }
}

响应数据

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

取消签名

待授权的签名可以发起取消。

HTTP 请求地址

POST /v1/web3/sign/cancel

请求参数

参数名称 数据类型 是否必须 描述
txKey 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": {
    "result": true
  }
}

响应数据

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

查询单笔 Web3 签名

查询特定的 Web3 签名,customerRefId 与 txKey 参数二选一必填,如果两个都有值,将按照 txKey 查询。

HTTP 请求地址

POST /v1/web3/sign/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":null,
    "accountKey":null,
    "sourceAddress":null,
    "transactionStatus":null,
    "transactionSubStatus":null,
    "createdByUserKey":null,
    "createdByUserName":null,
    "createTime":null,
    "auditUserKey":null,
    "auditUserName":null,
    "customerRefId":"{{customerRefId}}",
    "note":"",
    "customerExt1":null,
    "customerExt2":null,
    "balance":"0",
    "tokenBalance":null,
    "symbol":"ETH",
    "subjectType":null,
    "tokenSymbol":null,
    "transaction":{
      "to":"TLFNznovqX6FRjk1bkbX47KUGQX2UAaFnY",
      "value":"0",
      "chainId":1,
      "gasPrice":"0",
      "gasLimit":0,
      "maxPriorityFeePerGas":"0",
      "maxFeePerGas":"0",
      "nonce":2,
      "data":"hexData",
      "txHash":null,
      "signedTransaction": "",
      "sig": {
        "hash":"hashString",
        "sig": null
      }
    },
    "message":{
      "chainId":1,
      "data":"json",
      "sig": {
        "hash":"hashString",
        "sig": null
      }
    },
    "messageHash":{
      "chainId":1,
      "sigList":[
        {
          "hash":"hashString",
          "sig": null
        }
      ]
    }
  }
}

响应数据

参数名称 数据类型 描述
txKey string 交易 Key
accountKey string 交易源账户 Key
sourceAddress string 交易源地址
transactionStatus string 交易状态
transactionSubStatus string 交易子状态
createdByUserKey string 创建人 Key
createdByUserName string 创建人名称
createTime int64 交易创建时间,UNIX 时间戳毫秒数
auditUserKey string 最后审核人 Key
auditUserName string 最后审核人名称
customerRefId string 商户业务唯一 ID 标识
note string 备注
customerExt1 string 商户扩展字段
customerExt2 string 商户扩展字段
balance string 账户余额
tokenBalance string token余额
symbol string 币种单位名称
tokenSymbol string token币种单位名称
subjectType string 签名类型
transaction object 当签名类型为 ETH_SIGNTRANSACTION 时,返回此字段
└─to string to
└─value string value
└─chainId int64 链ID
└─gasPrice string gasPrice
└─gasLimit int32 gasLimit
└─maxPriorityFeePerGas string EIP-1559 的 maxPriorityFeePerGas
└─maxFeePerGas string EIP-1559 的 maxFeePerGas
└─nonce int64 nonce
└─data string data
└─txHash string 交易 Hash(签名完成的交易返回此字段)
└─signedTransaction string 16进制数据(签名完成的交易返回此字段)
└─sig object 签名
     └─hash string hash
     └─sig string 签名(签名完成的交易返回此字段)
message object 当签名类型为 PERSONAL_SIGN 或 ETH_SIGN_TYPED_DATA 时,返回此字段
└─chainId int64 链ID
└─data string data
└─sig object 签名
     └─hash string hash
     └─sig string 签名(签名完成的交易返回此字段)
messageHash object 当签名类型为 ETH_SIGN 时,返回此字段
└─chainId int64 链ID
└─sigList array sigList
     └─hash string hash
     └─sig string 签名(签名完成的交易返回此字段)

Web3 签名列表

根据不同的条件组合,筛选团队下的 Web3 签名记录。

HTTP 请求地址

POST /v1/web3/sign/list

请求参数

参数名称 数据类型 是否必须 描述
direct string 分页查询方向,默认 NEXT
limit int32 一次查询多少条,默认最大值 500
fromId string 起始交易记录 txKey,传入上一次结果的最后一条交易记录的 txKey ,如果第一页不传
subjectType string Web3 签名类型
transactionStatus array 交易状态
accountKey string 交易源账户 Key
startTime int64 开始时间,时间 UNIX 毫秒数
endTime 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":null,
      "accountKey":null,
      "sourceAddress":null,
      "transactionStatus":null,
      "transactionSubStatus":null,
      "createdByUserKey":null,
      "createdByUserName":null,
      "createTime":null,
      "auditUserKey":null,
      "auditUserName":null,
      "customerRefId":"{{customerRefId}}",
      "note":"",
      "customerExt1":null,
      "customerExt2":null,
      "balance":"0",
      "tokenBalance":null,
      "symbol":"ETH",
      "subjectType":null,
      "tokenSymbol":null,
      "transaction":{
        "to":"TLFNznovqX6FRjk1bkbX47KUGQX2UAaFnY",
        "value":"0",
        "chainId":1,
        "gasPrice":"0",
        "gasLimit":0,
        "maxPriorityFeePerGas":"0",
        "maxFeePerGas":"0",
        "nonce":2,
        "data":"hexData",
        "txHash":null,
        "signedTransaction": "",
        "sig": {
          "hash":"hashString",
          "sig": null
        }
      },
      "message":{
        "chainId":1,
        "data":"json",
        "sig": {
          "hash":"hashString",
          "sig": null
        }
      },
      "messageHash":{
        "chainId":1,
        "sigList":[
          {
            "hash":"hashString",
            "sig": null
          }
        ]
      }
    }
  ]
}

响应数据

参数名称 数据类型 描述
txKey string 交易 Key
accountKey string 交易源账户 Key
sourceAddress string 交易源地址
transactionStatus string 交易状态
transactionSubStatus string 交易子状态
createdByUserKey string 创建人 Key
createdByUserName string 创建人名称
createTime int64 交易创建时间,UNIX 时间戳毫秒数
auditUserKey string 最后审核人 Key
auditUserName string 最后审核人名称
customerRefId string 商户业务唯一 ID 标识
note string 备注
customerExt1 string 商户扩展字段
customerExt2 string 商户扩展字段
balance string 账户余额
tokenBalance string token余额
symbol string 币种单位名称
tokenSymbol string token币种单位名称
subjectType string 签名类型
transaction object 当签名类型为 ETH_SIGNTRANSACTION 时,返回此字段
└─to string to
└─value string value
└─chainId int64 链ID
└─gasPrice string gasPrice
└─gasLimit int32 gasLimit
└─maxPriorityFeePerGas string EIP-1559 的 maxPriorityFeePerGas
└─maxFeePerGas string EIP-1559 的 maxFeePerGas
└─nonce int64 nonce
└─data string data
└─txHash string 交易 Hash(签名完成的交易返回此字段)
└─signedTransaction string 16进制数据(签名完成的交易返回此字段)
└─sig object 签名
     └─hash string hash
     └─sig string 签名(签名完成的交易返回此字段)
message object 当签名类型为 PERSONAL_SIGN 或 ETH_SIGN_TYPED_DATA 时,返回此字段
└─chainId int64 链ID
└─data string data
└─sig object 签名
     └─hash string hash
     └─sig string 签名(签名完成的交易返回此字段)
messageHash object 当签名类型为 ETH_SIGN 时,返回此字段
└─chainId int64 链ID
└─sigList array sigList
     └─hash string hash
     └─sig string 签名(签名完成的交易返回此字段)

MPC Sign

MPC Sign 介绍

Safeheron 开放了基于 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)

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

使用 Safeheron 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. [客户 + Safeheron]对交易数据 hash 进行签名:sig = mpcSign(hash)
  5. [客户]组装签名后交易数据:signedRawTransaction = RLP(from, to, nonce, gasLimit, gasPrice, value, data, sig)
  6. [客户]计算交易 hash: txHash = sha3(signedRawTransaction)
  7. [客户]广播:rpc.submitTransaction(signedRawTransaction)

以上两个过程对比可以看出,使用 Safeheron MPC Sign 改造后的流程中,在使用私钥进行签名的过程中使用 Safeheron 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 交易签名 Hash 数据列表
└─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 交易签名 Hash 数据列表
└─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 交易签名 Hash 数据列表
└─note string 备注
└─hash string 原始签名 Hash ,不带 0x 开头的 32 字节 16 进制字符串
└─sig string 交易签名 (sig 的值由32 bytes r + 32 bytes s + 1 byte v组成)

Webhook

Webhook 概述

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

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

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

回调请求描述

Safeheron 会向您在控制台中设置的 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 使用 Safeheron Webhook RSA 私钥对请求参数签名得到的签名数据
key string 使用您的 Webhook RSA 公钥对随机 AES Key 加密后的数据

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

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

Webhook响应示例

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

示例如右侧所示:

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

Safeheron 在收到非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 交易状态变更
WEB3_SIGN_CREATED Web3SignParam 创建 web3 签名交易
WEB3_SIGN_STATUS_CHANGED Web3SignParam Web3 签名状态变更

事件详情

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 自定义业务唯一标识,在发起交易时,Safeheron 使用此字段判断进行幂等判断
customerExt1 string 商户扩展字段
customerExt2 string 商户扩展字段
hashs array 交易签名源账户信息
└─note string 交易备注
└─hash string 签名 Hash
└─sig string 交易签名 (sig 的值由32 bytes r + 32 bytes s + 1 byte v组成)

Web3SignParam

Web3SignParam 示例

  {
  "txKey":null,
  "subjectType":null,
  "accountKey":null,
  "sourceAccountType":null,
  "sourceAddress":null,
  "transactionStatus":null,
  "transactionSubStatus":null,
  "createdByUserKey":null,
  "createTime":null,
  "auditUserKey":null,
  "note":"",
  "customerExt1":null,
  "customerExt2":null,
  "transaction":{
    "to":"TLFNznovqX6FRjk1bkbX47KUGQX2UAaFnY",
    "value":"0",
    "chainId":1,
    "gasPrice":"0",
    "gasLimit":0,
    "maxPriorityFeePerGas":"0",
    "maxFeePerGas":"0",
    "nonce":2,
    "data":"hexData",
    "txHash":null,
    "signedTransaction": "",
    "sig": {
      "hash":"hashString",
      "sig": null
    }
  },
  "message":{
    "chainId":1,
    "data":"json",
    "sig": {
      "hash":"hashString",
      "sig": null
    }
  },
  "messageHash":{
    "chainId":1,
    "sigList":[
      {
        "hash":"hashString",
        "sig": null
      }
    ]
  }
}
参数 类型 描述
txKey string 交易 Key
subjectType string 签名类型
accountKey string 交易源账户 Key
sourceAccountType string 交易源账户类型
sourceAddress string 交易源地址
transactionStatus string 交易状态
transactionSubStatus string 交易子状态
createdByUserKey string 创建人 Key
createTime int64 交易创建时间,UNIX 时间戳毫秒数
auditUserKey string 最后审核人 Key
note string 备注
customerExt1 string 商户扩展字段
customerExt2 string 商户扩展字段
transaction object 当签名类型为 ETH_SIGNTRANSACTION 时,返回此字段
└─to string to
└─value string value
└─chainId int64 链ID
└─gasPrice string gasPrice
└─gasLimit int32 gasLimit
└─maxPriorityFeePerGas string EIP-1559 的 maxPriorityFeePerGas
└─maxFeePerGas string EIP-1559 的 maxFeePerGas
└─nonce int64 nonce
└─data string data
└─txHash string 交易 Hash(签名完成的交易返回此字段)
└─signedTransaction string 16进制数据(签名完成的交易返回此字段)
└─sig object 签名
     └─hash string hash
     └─sig string 签名(签名完成的交易返回此字段)
message object 当签名类型为 PERSONAL_SIGN 或 ETH_SIGN_TYPED_DATA 时,返回此字段
└─chainId int64 链ID
└─data string data
└─sig object 签名
     └─hash string hash
     └─sig string 签名(签名完成的交易返回此字段)
messageHash object 当签名类型为 ETH_SIGN 时,返回此字段
└─chainId int64 链ID
└─sigList array sigList
     └─hash string hash
     └─sig string 签名(签名完成的交易返回此字段)

已接入币种

币种 币种确认数 账户类型
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 Co-Signer

API Co-Signer 概述

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

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

自动化签名流程

Co-Signer 回调

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

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

在配置 API Co-Signer 时需要配置 API RSA 公私钥对与 Safeheron API 网关进行通信,在 API Co-Signer 回调您的业务系统时,复用了 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 加密后数据

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

Co-Signer 回调业务字典

回调字典

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

回调类型

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

交易审核

示例

{
    "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

Web3 SIGN 审核

示例

  {
  "txKey":null,
  "subjectType":null,
  "accountKey":null,
  "sourceAddress":null,
  "transactionStatus":null,
  "transactionSubStatus":null,
  "createdByUserKey":null,
  "createTime":null,
  "auditUserKey":null,
  "customerRefId":"",
  "transaction":{
    "to":"TLFNznovqX6FRjk1bkbX47KUGQX2UAaFnY",
    "value":"0",
    "chainId":1,
    "gasPrice":"0",
    "gasLimit":0,
    "maxPriorityFeePerGas":"0",
    "maxFeePerGas":"0",
    "nonce":2,
    "data":"hexData",
    "txHash":null
  },
  "message":{
    "chainId":1,
    "data":"json"
  },
  "messageHash":{
    "chainId":1,
    "data":[""]
  }
}
参数名称 类型 描述
txKey string 交易 Key
subjectType string 签名类型
accountKey string 交易源账户 Key
sourceAddress string 交易源地址
transactionStatus string 交易状态
transactionSubStatus string 交易子状态
createdByUserKey string 创建人 Key
createTime int64 交易创建时间,UNIX 时间戳毫秒数
auditUserKey string 最后审核人 Key
customerRefId string 商户业务唯一 ID 标识
transaction object 当签名类型为 ETH_SIGNTRANSACTION 时,返回此字段
└─to string to
└─value string value
└─chainId int64 链ID
└─gasPrice string gasPrice
└─gasLimit int32 gasLimit
└─maxPriorityFeePerGas string EIP-1559 的 maxPriorityFeePerGas
└─maxFeePerGas string EIP-1559 的 maxFeePerGas
└─nonce int64 nonce
└─data string data
└─txHash string 交易 Hash
message object 当签名类型为 PERSONAL_SIGN 或 ETH_SIGN_TYPED_DATA 时,返回此字段
└─chainId int64 链ID
└─data string data
messageHash object 当签名类型为 ETH_SIGN 时,返回此字段
└─chainId int64 链ID
└─data array 待签名 Hash

响应字典

审核交易任务

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

错误码

错误码 描述
200 成功
500 系统错误
1001 未知异常,请联系 Safeheron 客服
1004 重复的请求
1005 用户无权限
1008 请求非法
1009 API Key 非法
1010 参数解密失败
1011 IP 非法
1012 验签失败
1013 时间戳检查失败
1014 IP 超过频率限制
1015 非法的用户状态
1016 非法的 API Key 状态
1017 参数校验错误
1018 请求记录不存在
3009 商户已冻结
3010 商户已关闭
3016 请求基础服务失败
3017 钱包已被禁用
3018 非法的商户状态
3019 没有足够的资金来满足提款要求
3020 非审核状态
3021 请求交易结果异常
3022 请求交易失败
3023 当前钱包不允许该操作
3024 交易打包数据验证失败
3025 签名错误
3026 记录取消
3027 审核记录已处理
3028 当前钱包不允许该操作
3029 输入的 hash 不合法
3030 ChainId 对应的网络不存在
3031 Hash 暂支持传入1个
3032 Data 不能为空
3033 ChainId 不能为空
3034 数据格式不正确
3035 数据长度必须介于 0 和 100000 之间
3036 Value 不能为空
3037 Nonce 不能为空
3038 Value 不合法
3039 GasPrice 不合法
3040 GasLimit 过大
3041 MaxPriorityFeePerGas 不合法
3042 MaxFeePerGas 不合法
3043 GasLimit 不能为空
3044 MaxPriorityFeePerGas 小于网络的当前值
3045 MaxFee 太低
3046 GasPrice 和 feePerGas 不能同时为空
3047 数据长度必须介于 0 和 1000000 之间
3048 Nonce 太小
3049 Nonce 太大
3050 UTXO类型不支持跳过余额检查
3051 不支持资产
3052 Version 不能为空
3053 Version 错误
3054 不支持加速币种
3055 请在创建资产之前备份私钥
3056 FeeRate 必须大于 0
3057 GasLimit 必须大于 0
3058 MaxPriorityFee 必须大于 0
3059 MaxFee 必须大于 0
9001 商户业务唯一 ID 已经存在
9002 系统维护中,暂停转账
9003 发送数量的小数精度错误
9004 费率的小数精度不正确
9005 隐藏账户不允许修改名称
9006 隐藏的账户不允许提币
9007 源账户已冻结
9008 地址已经存在
9009 地址格式错误
9010 存款地址存在安全隐患
9011 地址薄已经存在该币种
9012 地址不存在
9013 白名单地址状态非法
9015 目标账户被冻结
9016 该转账地址存在安全风险,为了您的资产安全,请谨慎操作,如有疑问请联系 Safeheron 支持团队
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 其他地址薄已存在该地址
9046 交易号不存在
9047 Gaslimit小于最小值
9048 风控异常检测
9049 该转账地址存在安全风险
9050 地址格式错误
9051 正在广播中请耐心等待
9052 交易输出已使用,无法加速
9053 加速交易已链接或nonce已被占用
9054 白名单地址必须处于已批准状态才能允许转移
9055 UTXO不足
9056 加速不能重复
9057 RBF加速交易费率高于加速交易费率

数据字典

交易状态

字典码 描述
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 可用余额不足

Web3 交易状态

字典码 描述
SUBMITTED 待授权
SIGNING 签名中
CANCELLED 已取消
SIGN_COMPLETED MPC签名成功
FAILED 失败
REJECTED 已拒绝

交易手续费费率等级

字典码 描述
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 原始签名

Web3 签名类型

字典码 描述
ETH_SIGN ethSign 签名
PERSONAL_SIGN personalSign 签名
ETH_SIGN_TYPED_DATA ethSignTypedData 签名
ETH_SIGNTRANSACTION ethSignTransaction 签名

签名算法

字典码 描述
secp256k1 secp256k1

分页查询方向

字典码 描述
PREV 向前
NEXT 向后

余额检查类型

字典码 描述
BALANCE_CHECK 余额检查
NON_CHECK 不检查

EthSignTypedData 版本

字典码 描述
ETH_SIGNTYPEDDATA_V1 eth_signTypedData_v1
ETH_SIGNTYPEDDATA_V3 eth_signTypedData_v3
ETH_SIGNTYPEDDATA_V4 eth_signTypedData_v4

API SDK

我们提供 Java/js/golang/python 四种语言的 API SDK:

更新日志

2022-11-24 v2.1.2

2022-11-03 v2.1.1

2022-09-27 v2.1.0

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