English
NAV
java

ChainUp MPC Wallet

ChainUp Custody 对于MPC技术的整体实施应用能够保证您的投资资产处于市场上最高级别的安全等级的托管保护之下,用户的私钥将由用户和ChainUp Custody共同管理,该技术使您拥有资产完整控制权,您对资产的管理使用不受时间和地点的限制。方便资产的备份和恢复,消除私钥管理的单点故障问题,同时增加了资产自管的安全性

MPC协议的性质允许用户了解哪些私钥片段参与和签署,但其协议的性质不要求参与者对外披露他们的身份,这意味着每一方的输入都是保密的。同时MPC会保证签名生成方的在网络上是私密不可见的,在保护其个人数据隐私的同时,保证多方协作和交易可信度。

ChainUp Custody MPC提供了一个简单、高效的对接组件和API,可以帮助开发者更快地接入系统,可以让您自动化管理您的钱包、交易流程等。除此之外,我们还提供交易消息通知,让你更快的感知事件的发生。

API主要提供以下功能:

请联系商务经理发邮件custody@chainup.com 获取API 信息。

接入指引

您需要按照以下流程进行接入ChainUp Custody - MPC 钱包

创建账号

下载MPC 钱包

方式一:手机浏览器打开链接:https://custody.chainup.com/download

方式二:使用手机扫码打开链接下载:

注册MPC 账户

打开【Custody】应用,注册账号(未注册账号登录即注册),支持邮箱与手机号两种方式

创建并配置企业钱包

钱包分为主钱包子钱包两个类型;一个主钱包可以创建多个子钱包;

应用场景:

私钥密码用于加解密私钥分片非常重要,为了您的资产安全请务必及时备份。 未备份私钥分片和密码将限制您MPC 钱包功能的使用。

若钱包配置不满足您的需求,可联系商务经理或发邮件至 custody@chainup.com 获取支持。

获取API 信息

请联系商务经理发邮件custody@chainup.com 获取API 信息。

开发前准备

开发须知

两对公私钥作用(API方式)

第一对公私钥: 开发者在开通MPC钱包时,需提前生成一对公私钥,其中公钥(rsa_third_pub)提供给平台,私钥自己保管,私钥为第三方应用调用钱包服务的唯一凭证,请勿透露给任何人。第三方在请求钱包服务时,通过私钥来加密请求参数,平台接受到请求时,通过提供的公钥(rsa_third_pub)来解密请求数据。

第二对公私钥: 开发者开通MPC钱包后,平台会提供钱包公钥(rsa_wallet_pub)给开发者,第三方应用在接受到钱包的响应数据或异步通知时,需要通过公钥来进行解密。

域名及API密钥(API方式)

生产环境域名(不支持测试环境): https://openapi.hicoin.vip/
app_id: 请创建钱包后获取
rsa_wallet_pub: Custody系统公钥;请创建钱包后从Custody系统获取
rsa_third_prv: 客户私钥;自主生成、保存
rsa_third_pub: 客户公钥;自主生成;请创建钱包后配置到Custody系统

RSA 公私钥生成地址

推荐密码长度:2048

推荐密钥格式:PKCS#8

说明:

  1. rsa_third_prv为第三方应用私钥,主要用于加密请求参数。如果是生产环境,rsa_third_prv由开发者生成,然后将对应的公钥提供给平台。测试环境为了简化开发者对接流程,此处直接提供了一套第三方的公私钥,便于开发者快速对接。

  2. 目前不支持测试环境对接,请根据接入指引自主注册创建钱包后,获取生产环境的API相关信息。

账户准备

开发者准备如下信息:

1)生成一对公私钥,将公钥提供给平台;

2)第三方应用服务器和Co-Signer服务器的IP;

3)收款,转账回调通知地址;

4)Co-Signer服务器的域名;

联系平台相关人员,提供上述四类信息。平台为您准备MPC钱包,提供到您这边包括以下信息:

1)商户的唯一标识:app_id

2)钱包公钥:rsa_wallet_pub

接口交互过程

文档为钱包服务对第三方应用提供的接口。

以下文档中的接口提供方称为 钱包服务,接口调用方称为 第三方应用。第三方应用在请求钱包服务时,通过RSA算法对请求参数进行加密,接受到钱包服务的响应数据后需要进行解密

接口规则

传输方式: https(测试环境暂时使用 http)
签名字段: 除了 sign 字段,其他所有必填项都需要参与签名
响应状态码为: 0表示处理成功,非 0 表示请求错误系统异常
请求地址: 域名+接口地址
加密算法: RSA

API接口

统一说明

请求接口示例:

POST /api/mpc/sub_wallet/assets

app_id=2128eb8de9e932a4376909f3d69424cc&data=SWYYr-LBVAmaS0eq8n-CUT_nHkM3OBxyWOsImMTe41UaqAoYI2ZghmaphXHov-7hsRsVmOhyPqC-JFuRGvonJKFd2Jirxv6Vn_8V40r_MMYTkhqcviQbZWYW5xX8Ai8CIpqas9fIWVDIYA_NKBl0UCJpwGxscxLNpjq5Z8-BTyIYDsVBquM9zEQGBCfcA7szD9n2fN_loSkoexlwqV8wg9HIZO5yQ6utZ_Kt0lNDQQb8zn8BwfAvsEsbJlOINUAqhxh1vV_AJ4bXn2uYx8TaYcBht-n_ZcBdxIDt975dbOFUiH-oCzIuDi1oLDtb4EylfCvhU5E4ozel_lQ-6cyIG0Dqiiyx0RFFOCJzPSXIoV031pvoa8pTCpkWklh8mRw1rylBgeZtqSxpnJO2_u2RIlXq6Hs8Yly9CmhIXaSrUgPir0h6xVxlf4VC6PFVCkiiTlp0kZ_H_UbKm0nUis3v3U2sflWJ2C449waSrikhuxVrFAQ6PQmrFVCAE6MYXNrFXJQuam2HAIQNSGbFQjspw8b_bXyfyZMGZ3K2oBC4I_v3eETTdPe0pfSNJb-5g37K0tOAr_UFbWK8pkC8yl56fSjn8tcR3yCRWwoi8jxTcUBiswTtvXZtzgG4dyzkaHXjsZjSGiywXSqP76VZWlyOmAx6IDSViLcPLPISdU3ruCI

请求参数统一格式

Param 类型 是否必须 说明
app_id String 必须 商户唯一标识
data String 可选 加密之后的字符串,具体加密信息见各接口 请求参数数据结构

请求接口示例:

POST /api/mpc/sub_wallet/assets

响应参数统一格式

Param 类型 是否必须 说明
data String 必须 加密之后的字符串,具体加密信息见 响应结果data解密后格式

响应结果示例:

{
    "data": "SWYYr-LBVAmaS0eq8n-CUT_nHkM3OBxyWOsImMTe41UaqAoYI2ZghmaphXHov
        -7hsRsVmOhyPqC-JFuRGvonJKFd2Jirxv6Vn_8V40r_MMYTkhqcviQbZWYW5xX8Ai8CIpqas9fIWVDIYA
        _NKBl0UCJpwGxscxLNpjq5Z8-BTyIYDsVBquM9zEQGBCfcA7szD9n2fN_loSkoexlwqV8wg9HIZO5yQ6utZ_
        Kt0lNDQQb8zn8BwfAvsEsbJlOINUAqhxh1vV_AJ4bXn2uYx8TaYcBht-n_ZcBdxIDt975dbOFUiH-
        oCzIuDi1oLDtb4EylfCvhU5E4ozel_lQ-6cyIG0Dqiiyx0RFFOCJzPSXIoV031pvoa8pTCpkWklh8mRw1rylBgeZtqSxpnJO2
        _u2RIlXq6Hs8Yly9CmhIXaSrUgPir0h6xVxlf4VC6PFVCkiiTlp0kZ
        _H_UbKm0nUis3v3U2sflWJ2C449waSrikhuxVrFAQ6PQmrFVCAE6MYXNrFXJQuam2HAIQNSGbFQjspw8b_
        bXyfyZMGZ3K2oBC4I_v3eETTdPe0pfSNJb-5g37K0tOAr_UFbWK8pkC8yl56fSjn8tcR3yCRWwoi8jxTcUBiswTtvXZtzgG4dyzka
        HXjsZjSGiywXSqP76VZWlyOmAx6IDSViLcPLPISdU3ruCI"
}

响应结果data解密后格式

Param 类型 是否必须 说明
code String 状态码,例:100002
msg String 响应结果说明,例:请求参数错误
data String 具体响应数据,数据结构定义见各接口 响应参数数据结构

加解密方式

请求参数data与响应字段data的值都是经过rsa加密后再通过 base64urlsafe 加密的结果

钱包

获取钱包开通的主链

获取ChainUp Custody支持的MPC主链币种和开通的MPC主链币种

HTTP请求

GET /api/mpc/wallet/open_coin

请求参数数据结构

Param 类型 是否必须 说明
time long 当前时间戳
charset String 编码格式,无特殊情况,传参数utf-8

响应结果示例

{
    "open_main_chain":[
        {
            "coin_net":"BTC",
            "symbol":"BTC",
            "symbol_alias":"BTC",
            "support_acceleration" : false
        }
    ],
    "support_main_chain":[
        {
            "coin_net":"BTC",
            "if_open_chain":true,
            "symbol":"BTC",
            "symbol_alias":"BTC",
            "support_acceleration" : false
        }
    ]
}

响应参数数据结构

Param 类型 是否必须 说明
open_main_chain Array 钱包开通的主链
coin_net String 币种网络,例:ETH
symbol String 币种唯一标识,转账时使用,例:USDTERC20
symbol_alias String 币种真实币名,例:USDT
support_acceleration boole true:支持加速,false:不支持加速
support_main_chain Array MPC支持的主链
coin_net String 币种网络,例:ETH
symbol String 币种唯一标识,转账时使用,例:USDTERC20
symbol_alias String 币种真实币名,例:USDT
if_open_chain Boolean 是否开通主链, false未开通,true:已开通
support_acceleration boole true:支持加速,false:不支持加速

获取MPC币种详情

获取ChainUp Custody支持的MPC主链币及代币

HTTP请求

GET /api/mpc/coin_list

请求参数数据结构

Param 类型 是否必须 说明
time long 当前时间戳
charset String 编码格式,无特殊情况,传参数utf-8
symbol String 币种唯一标识,转账时使用,例:USDTERC20
base_symbol String 主链币种名称,币种唯一标识,转账时使用,例:ETH

响应结果示例

[
    {
        "address_regex":".*",
        "address_tag_regex":"",
        "base_symbol":"BSC",
        "coin_net":"BSC",
        "contract_address":"0xe9e7cea3dedca5984780bafc599bd69add087d56",
        "decimals":"18",
        "deposit_confirmation":"1",
        "explorer":"https://www.bscscan.com/address/",
        "icon":"",
        "if_open_chain":true,
        "name":"BUSD Token;BSC;BUSD",
        "real_symbol":"BUSD",
        "support_memo":"0",
        "support_token":"0",
        "symbol":"BUSD",
        "symbol_alias":"BUSD",
        "support_acceleration": true,
        "support_multi_addr" : false
    }
]

响应参数数据结构

Param 类型 是否必须 说明
symbol String 币种唯一标识,转账时使用,例:BUSD
symbol_alias String Custody 币种别名
real_symbol String 币种链上名称
base_symbol String 币种所属主链币种唯一标识,例:BSC
coin_net String 币种网络
contract_address String MPC支持的主链
deposit_confirmation String 充值确认数
explorer String 区块浏览器
icon String 币种icon
if_open_chain Boolean 是否开通主链, false未开通,true:已开通
decimals String 币种精度
support_memo String 是否支持memo,0不支持1支持
support_token String 是否支持token币,0不支持1支持,主链币有值,代币为空
address_tag_regex String 地址正则
address_regex String tag正则
support_acceleration Boolean 是否支持加速
support_multi_addr Boolean 是否支持多地址,true:支持, false:不支持

子钱包(用户)

创建子钱包

传入指定的子钱包名称,为钱包创建一个新的子钱包

HTTP请求

POST /api/mpc/sub_wallet/create

请求参数数据结构

Param 类型 是否必须 说明
sub_wallet_name string 子钱包名称,最大支持50个字符,同一钱包下子钱包不能重名,例:mpc矿池
sub_wallet_type Integer 子钱包类型,1:资产子钱包,2:web3子钱包(不传时,默认创建该类型子钱包)

响应结果示例:

{
    "sub_wallet_id": 10234122
}

响应参数数据结构

Param 类型 是否必须 说明
sub_wallet_id Integer 子钱包id

获取子钱包地址

获取指定子钱包及币种下的收款地址

HTTP请求

POST /api/mpc/sub_wallet/get_address

请求参数数据结构

Param 类型 是否必须 说明
sub_wallet_id Integer 子钱包id
symbol String 币种唯一标识,例:USDTERC20

响应结果示例

{ 
    "address":"0xd5b688639ef10ac7fb8ad0156eb0ae025dd03b86"
}

响应参数数据结构

Param 类型 是否必须 说明
address String 收款到账地址

子钱包创建地址

当/api/mpc/coin_list 接口字段:can_create_multi_addr为ture的币种可创建多个地址

HTTP请求

POST /api/mpc/sub_wallet/create/address

请求参数数据结构

Param 类型 是否必须 说明
sub_wallet_id Integer 子钱包id
symbol String 币种唯一标识,例:USDTERC20

响应结果示例

{ 
    "address":"0xd5b688639ef10ac7fb8ad0156eb0ae025dd03b86"
}

响应参数数据结构

Param 类型 是否必须 说明
address String 创建的地址

子钱包地址查询

子钱包地址列表

HTTP请求

POST /api/mpc/sub_wallet/get/address/list

请求参数数据结构

Param 类型 是否必须 说明
sub_wallet_id Integer 子钱包id
symbol String 币种唯一标识,例:USDTERC20
max_id Integer 地址起始id, 默认0

响应结果示例

[
    { 
        "address":"12ZzzA48sYnE12fdkmKmaxkR3Rz5j7Gjac",
        "addr_type": 1,
    },
    { 
        "address":"139cRprA9siBDbScbjtCZTcESUgZ1rm9fr",
        "addr_type": 2,
    }
]

响应参数数据结构

Param 类型 是否必须 说明
address String 创建的地址
addr_type Integer 地址类型,1:普通地址,2:找零地址。“找零地址”不可给分配给用户使用, UTXO交易的找零都会找零到找零地址

获取子钱包资产

获取指定子钱包及币种下的账户资产

HTTP请求

GET /api/mpc/sub_wallet/assets

请求参数数据结构

Param 类型 是否必须 说明
symbol String 币种唯一标识,例:USDTERC20
sub_wallet_id Integer 子钱包id

响应结果示例

{
    "normal_balance":"1.23",
    "lock_balance":"0.77"
}

响应参数数据结构

Param 类型 是否必须 说明
normal_balance String 可用余额
lock_balance String 冻结余额,例:0.77

修改子钱包状态

指定子钱包在app客户端的展示情况,不展示无法在app发起交易

HTTP请求

POST /api/mpc/sub_wallet/change_show_status

请求参数数据结构

Param 类型 是否必须 说明
sub_wallet_ids String 多个子钱包id的字符串,英文逗号分割
app_show_status String 1展示, 2不展示

响应参数数据结构

转账

转账

发起一笔转账交易

HTTP请求

POST /api/mpc/billing/withdraw

请求参数数据结构

Param 类型 是否必须 说明
sub_wallet_id Integer 子钱包id
symbol String 币种唯一标识,例:USDTERC20
address_to String 转账到账地址
memo String 转账到账地址memo,Memo类型转账时如有可填入
amount String 转账金额
request_id String 转账唯一标识
remark String 转账备注,例:mpc矿池
fee_rate String BTC类型系列,费率;注意:不要和其他系列参数一起传入
size String BTC类型系列,字节大小;注意:不要和其他系列参数一起传入
gas_price String ETH类型系列,gas推荐单价;注意:不要和其他系列参数一起传入
gas_limit String ETH类型系列,gas限制;注意:不要和其他系列参数一起传入
fee String 其他系列,如DOT\TRX,使用fee;注意:不要和其他系列参数一起传入(gas_limit除外,如ATOM)

响应结果示例

{
    "withdraw_id": 12345
}

响应参数数据结构

Param 类型 是否必须 说明
withdraw_id Integer 转账id

转账预估手续费

获取转账需要的预估手续费用

HTTP请求

GET /api/mpc/billing/gas_estimate

请求参数数据结构

Param 类型 是否必须 说明
from String 出币地址, from和sub_wallet_id两者必传一个
sub_wallet_id Integer UTXO多地址出金时, 该参数必传
to String 到账地址
memo String 转账到账地址memo,Memo类型转账时如有可填入
symbol String 币种唯一标识,例:USDTERC20
amount String 金额

响应结果示例

{
    "gas_limit":0,
    "fee_unit":"Gwei",
    "gas_price1":"0",
    "fee":"0.00159",
    "gas_price2":"0",
    "gas_price3":"0"
}

响应参数数据结构

Param 类型 是否必须 说明
fee_unit String 手续费单位,例:Gwei
fee_rate1 String BTC类型系列,费率一档
fee_rate2 String BTC类型系列,费率二档
fee_rate3 String BTC类型系列,费率三档
size Long BTC类型系列,字节大小,该参数值不可修改
gas_limit Long ETH类型系列(部分其他系列币种如ATOM也有此参数值),gas限制
gas_price1 Long ETH类型系列,gas推荐单价一档
gas_price2 Long ETH类型系列,gas推荐单价二档
gas_price3 Long ETH类型系列,gas推荐单价三档
fee String 其他系列,如DOT\TRX,使用fee字段做手续费
fee_changeable Boolean 其他系列,如DOT\TRX,使用fee参数值是否可更改,true可修改,false不可修改

转账加速

转账签名完成后,由于手续费不足而长时间未上链的时候,可以重新指定更高额的手续费用加速上链

HTTP请求

POST /api/mpc/billing/withdraw_pending

请求参数数据结构

Param 类型 是否必须 说明
withdraw_id Integer 转账id
fee_rate String BTC类型系列,费率;注意:不要和其他系列参数一起传入
size String BTC类型系列,字节大小;注意:不要和其他系列参数一起传入
gas_price String ETH类型系列,gas推荐单价;注意:不要和其他系列参数一起传入
gas_limit String ETH类型系列,gas限制;注意:不要和其他系列参数一起传入
fee String 其他系列,如DOT\TRX,使用fee;注意:不要和其他系列参数一起传入(gas_limit除外,如ATOM)

响应参数数据结构

获取转账记录

获取钱包下所有子钱包转账记录,最多返回100条

HTTP请求

GET /api/mpc/billing/withdraw_list

请求参数数据结构

Param 类型 是否必须 说明
ids String request_id的字符串,英文逗号分割

响应结果示例

[
    {
        "symbol":"ETH",
        "amount":"0.0000111",
        "real_fee":"0",
        "wihdraw_source":2,
        "fee":"0.0002782353",
        "address_to":"0xc70d1eebb7c687ec8d56bead73f104d41e6e0bda",
        "memo": "123321",
        "created_at":1672304978000,
        "txid":"0x8e6beba81b90835fc9fcd40a2bdca33243c7c3b81ac765c240837d4810874a55",
        "confirmations":0,
        "contract_address":"",
        "sub_wallet_id":"123",
        "address_from":"0x5EDc9177997Bf6B4db559A5C184051858B3B3704",
        "fee_symbol":"ETH",
        "updated_at":1672318660000,
        "base_symbol":"",
        "id":242,
        "request_id":"57fdc296-1e14-47fa-a99d-5e86f8e51008",
        "status":1200
    }
]

响应参数数据结构

Param 类型 是否必须 说明
id Integer 转账id
request_id Integer 转账唯一标识
sub_wallet_id Integer 子钱包id
symbol String 币种唯一标识,转账时使用,例:USDTERC20
amount String 转账金额
fee_symbol String 手续费币种,例:ETH
fee String 手续费,例:0.00123
real_fee String 真实消耗的手续费,例:0.00111
created_at Long 创建时间时间戳
updated_at Long 修改时间时间戳
address_from String 出币地址
address_to String 到账地址
memo String 转账到账地址memo
txid String 交易hash
confirmations Integer 区块确认数,例:10
status Integer 转账状态: 1000 未审批, 1100 审批通过, 待签名,1200 支付中,2000 支付完成,2100 审批拒绝,2200 拒绝,2300 交易丢弃,2400 支付失败
withdraw_source Integer 转账类型: 1.app, 2.openapi
base_symbol String 转账币种主链唯一标识,例:ETH
contract_address String 转账币种合约地址

同步转账记录

获取钱包下所有子钱包转账记录,最多返回100条

HTTP请求

GET /api/mpc/billing/sync_withdraw_list

请求参数数据结构

Param 类型 是否必须 说明
max_id String 转账记录起始id

响应结果示例

[
    {
        "symbol":"ETH",
        "amount":"0.0000111",
        "real_fee":"0",
        "wihdraw_source":2,
        "fee":"0.0002782353",
        "address_to":"0xc70d1eebb7c687ec8d56bead73f104d41e6e0bda",
        "memo": "123321",
        "created_at":1672304978000,
        "txid":"0x8e6beba81b90835fc9fcd40a2bdca33243c7c3b81ac765c240837d4810874a55",
        "confirmations":0,
        "contract_address":"",
        "sub_wallet_id":"123",
        "address_from":"0x5EDc9177997Bf6B4db559A5C184051858B3B3704",
        "fee_symbol":"ETH",
        "updated_at":1672318660000,
        "base_symbol":"",
        "id":242,
        "request_id":"57fdc296-1e14-47fa-a99d-5e86f8e51008",
        "status":1200
    }
]

响应参数数据结构

Param 类型 是否必须 说明
id Integer 转账id
request_id String 转账唯一标识
sub_wallet_id Integer 子钱包id
symbol String 币种唯一标识,转账时使用,例:USDTERC20
amount String 转账金额
fee_symbol String 手续费币种,例:ETH
fee String 手续费,例:0.00123
real_fee String 真实消耗的手续费,例:0.00111
created_at Long 创建时间时间戳
updated_at Long 修改时间时间戳
address_from String 出币地址
address_to String 到账地址
memo String 转账到账地址memo
txid String 交易hash
confirmations Integer 区块确认数,例:10
status Integer 转账状态: 1000 未审批, 1100 审批通过, 待签名,1200 支付中,2000 支付完成,2100 审批拒绝,2200 拒绝,2300 交易丢弃,2400 支付失败
withdraw_source Integer 转账类型: 1.app, 2.openapi
base_symbol String 转账币种主链唯一标识,例:ETH
contract_address String 转账币种合约地址

收款

获取收款记录

获取钱包下所有子钱包收款记录,最多返回100条

HTTP请求

GET /api/mpc/billing/deposit_list

请求参数数据结构

Param 类型 是否必须 说明
ids String 多个id的字符串,英文逗号分割,例:123,345

响应结果示例

[
    {
        "symbol":"ETH",
        "amount":"1",
        "address_to":"0x33648fACAD6CECA85cf717841Ddd87c40B12438F",
        "memo": "123321",
        "created_at":1672107533000,
        "txid":"0xfd0b04024bd1d849ba69e301733194154cb42a05c1dd32065367d8c6336af711",
        "confirmations":20,
        "contract_address":"",
        "sub_wallet_id":"123",
        "address_from":"0xc70d1eebb7c687ec8d56bead73f104d41e6e0bda",
        "updated_at":1672323030000,
        "base_symbol":"",
        "id":43,
        "status":2000
    }
]

响应参数数据结构

Param 类型 是否必须 说明
id Integer 收款id
sub_wallet_id Integer 子钱包id
symbol String 币种唯一标识,例:USDTERC20
amount String 收款金额
created_at Long 创建时间时间戳
updated_at Long 修改时间时间戳
address_from String 出币地址
address_to String 到账地址
memo String 到账地址memo
txid String 交易hash
confirmations Integer 区块确认数,例:10
status Integer 收款状态: 1000 未确认,1100 已确认(交易区块已确认), 2000 已完成(上账已完成),3000 异常
base_symbol String 收款币种主链唯一标识,例:ETH
contract_address String 收款币种合约地址

同步收款记录

获取钱包下所有子钱包收款记录,最多返回100条

HTTP请求

GET /api/mpc/billing/sync_deposit_list

请求参数数据结构

Param 类型 是否必须 说明
max_id String 转账记录起始id,例:100

响应结果示例

[
    {
        "symbol":"ETH",
        "amount":"1",
        "address_to":"0x33648fACAD6CECA85cf717841Ddd87c40B12438F",
        "memo": "123321",
        "created_at":1672107533000,
        "txid":"0xfd0b04024bd1d849ba69e301733194154cb42a05c1dd32065367d8c6336af711",
        "confirmations":20,
        "contract_address":"",
        "sub_wallet_id":"123",
        "address_from":"0xc70d1eebb7c687ec8d56bead73f104d41e6e0bda",
        "updated_at":1672323030000,
        "base_symbol":"",
        "id":43,
        "status":2000
    }
]

响应参数数据结构

Param 类型 是否必须 说明
id Integer 收款id
sub_wallet_id Integer 子钱包id
symbol String 币种唯一标识,例:USDTERC20
amount String 收款金额
created_at Long 创建时间时间戳
updated_at Long 修改时间时间戳
address_from String 出币地址
address_to String 到账地址
memo String 到账地址memo
txid String 交易hash
confirmations Integer 区块确认数,例:10
status Integer 收款状态: 1000 未确认,1100 已确认(交易区块已确认), 2000 已完成(上账已完成),3000 异常
base_symbol String 收款币种主链唯一标识,例:ETH
contract_address String 收款币种合约地址

Web3交易

创建Web3交易

创建一笔Web3交易

HTTP请求

POST /api/mpc/web3/trans/create

请求参数数据结构

Param 类型 是否必须 说明
request_id String 交易唯一标识
main_chain_symbol String 主链币币名(唯一标识)
sub_wallet_id Integer 子钱包ID
interactive_contract String 交互合约
amount String 交易金额,-1:表示无穷大, 该金额表示主链币使用金额, 如金额为1ETH, 传值为:1
gas_price String gas 手续费,单位:Gwei
gas_limit String gas limit 手续费
input_data String 合约交易的方法参数组成的16进制数据
trans_type Integer 0:授权交易,1:其他交易。为0时,amount设置金额无效
dapp_name String dapp名称
dapp_url String dapp 访问url
dapp_img String dapp 图片

响应结果示例

{
     "trans_id": 198012
}

响应参数数据结构

Param 类型 是否必须 说明
trans_id Integer Web3交易ID

Web3交易加速

转账签名完成后,由于手续费不足而长时间未上链的时候,可以重新指定更高额的手续费加速上链

HTTP请求

POST /api/mpc/web3/pending

请求参数数据结构

Param 类型 是否必须 说明
trans_id Integer Web3交易ID
gas_price String gas peice, 单位:Gwei
gas_limit String gas limit

响应参数数据结构

获取web3交易记录

获取钱包下所有子钱包Web3交易记录,最多返回100条

HTTP请求

GET /api/mpc/web3/trans_list

请求参数数据结构

Param 类型 是否必须 说明
ids String request_id的字符串,英文逗号分割

响应结果示例

[
    {
        "id":435,
        "request_id":"0000000003",
        "sub_wallet_id":1000895,
        "txid":"0xbc87e486d28df91fe715436415bab38cc1cf5e4b23fbb8497ff688b823c08ba7",
        "symbol":"",
        "main_chain_symbol":"HECO",
        "amount":"0",
        "fee_symbol":"HECO",
        "fee":"0.00018",
        "real_fee":"0.000107277",
        "created_at":1684220373000,
        "updated_at":1684222558000,
        "address_from":"0xd5c2d98BF2d205039F62ee40c9A7ab1B36125d6d",
        "address_to":"",
        "confirmations":4,
        "input_data":"0xca718c65",
        "interactive_contract":"0xe012F3957226894B1a2a44b3ef5070417a069dC2",
        "status":2400,
        "trans_source":2
    }
]

响应参数数据结构

Param 类型 是否必须 说明
id Integer Web3交易ID
request_id String 交易唯一标识
sub_wallet_id Integer 子钱包ID
txid String 交易hash
symbol String 交易币种
main_chain_symbol String 主链币币名(唯一标识),例:ETH
amount String 交易金额。-1表示无穷大
fee_symbol String 手续费币种,例:ETH
fee String 手续费
real_fee String 真实消耗的手续费
created_at String 创建时间时间戳
updated_at String 修改时间时间戳
address_from String 交易from地址
address_to String 交易to地址
interactive_contract String 交互合约
confirmations Integer 确认数
input_data String 合约交易的方法参数组成的16进制数据
status Integer 交易状态: 1100 待签名,1200 支付中,2000 支付完成,2100 审批拒绝,2200 拒绝,2300 交易丢弃,2400 支付失败
trans_source Integer 交易类型: 1.app, 2.open-api

同步web3交易记录

获取钱包下所有子钱包Web3交易记录,最多返回100条

HTTP请求

GET /api/mpc/web3/sync_trans_list

请求参数数据结构

Param 类型 是否必须 说明
max_id String Web3交易记录起始id

响应结果示例

[
    {
        "id":435,
        "request_id":"0000000003",
        "sub_wallet_id":1000895,
        "txid":"0xbc87e486d28df91fe715436415bab38cc1cf5e4b23fbb8497ff688b823c08ba7",
        "symbol":"",
        "main_chain_symbol":"HECO",
        "amount":"0",
        "fee_symbol":"HECO",
        "fee":"0.00018",
        "real_fee":"0.000107277",
        "created_at":1684220373000,
        "updated_at":1684222558000,
        "address_from":"0xd5c2d98BF2d205039F62ee40c9A7ab1B36125d6d",
        "address_to":"",
        "input_data":"0xca718c65",
        "interactive_contract":"0xe012F3957226894B1a2a44b3ef5070417a069dC2",
        "confirmations":4,
        "status":2400,
        "trans_source":2
    }
]

响应参数数据结构

Param 类型 是否必须 说明
id Integer Web3交易ID
request_id String 交易唯一标识
sub_wallet_id Integer 子钱包ID
txid String 交易hash
symbol String 交易币种
main_chain_symbol String 主链币币名(唯一标识),例:ETH
amount String 交易金额。-1表示无穷大
fee_symbol String 手续费币种,例:ETH
fee String 手续费
real_fee String 真实消耗的手续费
created_at String 创建时间时间戳
updated_at String 修改时间时间戳
address_from String 交易from地址
address_to String 交易to地址
interactive_contract String 交互合约
confirmations Integer 确认数
input_data String 合约交易的方法参数组成的16进制数据
status Integer 交易状态: 1100 待签名,1200 支付中,2000 支付完成,2100 审批拒绝,2200 拒绝,2300 交易丢弃,2400 支付失败
trans_source Integer 交易类型: 1.app, 2.open-api

NFT

获取NFT信息

获取NFT图片,名称等数据

HTTP请求

POST /api/nft/info

请求参数数据结构

Param 类型 是否必须 说明
base_symbol String 主链币
contract_address String NFT合约地址
token_id String NFT token id

响应结果示例

{
     "base_symbol": "bsc",
     "contract_address": "0xC2A19349D5f451071C3085B90f531D19F190FF21",
     "token_id": "75000000000000000281",
     "nft_name": "#75000000000000000281",
     "image": "https://ipfs.io/ipfs/QmXCaMVmRWviaFtRpEH7dJXrJav8dsJdGcsj7M8NpgAgPW",
     "image_type": ".svg",
     "is_video": false,
}

响应参数数据结构

Param 类型 是否必须 说明
base_symbol String 主链币
contract_address String NFT合约地址
token_id String NFT token id
nft_name String NFT 名称, 不存在时, 使用 "# + tokenId", 如: #1000001
image String nft图片或视频url, 或图片base64
image_type String nft图片或视频类型, 如:".png", ".mp4"
is_video bool 是否是视频, true: image是视屏, 反之不是视频

交易通知

统一说明

POST /用户回调通知地址

交易通知请求接口示例

app_id=2128eb8de9e932a4376909f3d69424cc&data=SWYYr-LBVAmaS0eq8n-CUT_nHkM3OBxyWOsImMTe41UaqAoYI2ZghmaphXHov-7hsRsVmOhyPqC-JFuRGvonJKFd2Jirxv6Vn_8V40r_MMYTkhqcviQbZWYW5xX8Ai8CIpqas9fIWVDIYA_NKBl0UCJpwGxscxLNpjq5Z8-BTyIYDsVBquM9zEQGBCfcA7szD9n2fN_loSkoexlwqV8wg9HIZO5yQ6utZ_Kt0lNDQQb8zn8BwfAvsEsbJlOINUAqhxh1vV_AJ4bXn2uYx8TaYcBht-n_ZcBdxIDt975dbOFUiH-oCzIuDi1oLDtb4EylfCvhU5E4ozel_lQ-6cyIG0Dqiiyx0RFFOCJzPSXIoV031pvoa8pTCpkWklh8mRw1rylBgeZtqSxpnJO2_u2RIlXq6Hs8Yly9CmhIXaSrUgPir0h6xVxlf4VC6PFVCkiiTlp0kZ_H_UbKm0nUis3v3U2sflWJ2C449waSrikhuxVrFAQ6PQmrFVCAE6MYXNrFXJQuam2HAIQNSGbFQjspw8b_bXyfyZMGZ3K2oBC4I_v3eETTdPe0pfSNJb-5g37K0tOAr_UFbWK8pkC8yl56fSjn8tcR3yCRWwoi8jxTcUBiswTtvXZtzgG4dyzkaHXjsZjSGiywXSqP76VZWlyOmAx6IDSViLcPLPISdU3ruCI

交易通知请求参数统一格式

Param 类型 是否必须 说明
app_id String 必须 商户唯一标识
data String 必须 加密之后的字符串,具体加密信息见各接口 请求参数数据结构

交易通知响应参数统一格式

返回字符串:SUCCESS表示成功,FAILURE表示失败 (注意此处返回参数无需进行加密)

转账通知

请求参数数据结构

Param 类型 是否必须 说明
charset String 编码格式,无特殊情况,传参数utf-8
side String 通知类型, 收款通知:deposit, 转账通知: withdraw,Web3交易通知:web3-trans
notify_time String 通知时间,例:2022-11-02 11:04:05
id String 转账id
request_id String 转账唯一标识
sub_wallet_id String 子钱包id
symbol String 币种唯一标识,转账时使用,例:USDTERC20
amount String 转账金额
fee_symbol String 手续费币种,例:ETH
fee String 手续费,例:0.00123
real_fee String 真实消耗的手续费,例:0.00111
created_at String 创建时间时间,如:2006-01-02 15:04:05
updated_at String 修改时间时间,如:2006-01-02 15:04:05
address_from String 出币地址
address_to String 到账地址
memo String 到账地址memo
txid String 交易hash
confirmations String 区块确认数,例:10
status String 转账状态: 1000 未审批, 1100 审批通过, 待签名,1200 支付中,2000 支付完成,2100 审批拒绝,2200 拒绝,2300 交易丢弃,2400 支付失败
withdraw_source String 转账类型: 1app, 2openapi
base_symbol String 转账币种主链唯一标识,例:ETH
contract_address String 转账币种合约地址

收款通知

请求参数数据结构

Param 类型 是否必须 说明
charset String 编码格式,无特殊情况,传参数utf-8
side String 通知类型, 收款通知:deposit, 转账通知: withdraw,Web3交易通知:web3-trans
notify_time String 通知时间,例:2022-11-02 11:04:05
id String 收款id
sub_wallet_id String 子钱包id
symbol String 币种唯一标识,例:USDTERC20
amount String 收款金额
created_at String 创建时间时间,如:2006-01-02 15:04:05
updated_at String 修改时间时间,如:2006-01-02 15:04:05
address_from String 出币地址
address_to String 到账地址
memo String 到账地址memo
txid String 交易hash
confirmations String 区块确认数,例:10
status String 收款状态: 1000 未确认,1100 已确认(交易区块已确认), 2000 已完成(上账已完成),3000 异常
base_symbol String 收款币种主链唯一标识,例:ETH
contract_address String 收款币种合约地址

Web3交易通知

请求参数数据结构

Param 类型 是否必须 说明
charset String 编码格式,无特殊情况,传参数utf-8
side String 通知类型, 收款通知:deposit, 转账通知: withdraw,Web3交易通知:web3-trans
notify_time String 通知时间,例:2022-11-02 11:04:05
id String 收款id
request_id String 转账唯一标识
sub_wallet_id String 子钱包id
main_chain_symbol String 主链币币名(唯一标识),例:ETH
symbol String 币种唯一标识,例:USDTERC20
amount String 交易金额
created_at String 创建时间时间,如:2006-01-02 15:04:05
updated_at String 修改时间时间,如:2006-01-02 15:04:05
address_from String 出币地址
address_to String 到账地址
txid String 交易hash
confirmations String 区块确认数,例:10
status String 转账状态: 1000 未审批, 1100 审批通过, 待签名,1200 支付中,2000 支付完成,2100 审批拒绝,2200 拒绝,2300 交易丢弃,2400 支付失败
interactive_contract String 交互合约
fee_symbol String 手续费币种,例:ETH
fee String 手续费
real_fee String 真实消耗的手续费
input_data String 合约交易的方法参数组成的16进制数据
trans_type String 交易类型, 0:授权交易,1:转账交易
dapp_img String dapp 图片
dapp_name String dapp名称
dapp_url String dapp 访问url

Co-Signer

概述

Co-Signer可以帮助您快速对接API,需要您单独部署在服务器上。Co-Signer需要绑定您钱包的分片私钥,用于创建地址和交易签名。

Co-Signer在交易签名前会回调您的业务系统,得到授权通过后才能发起签名,否则无法进行交易。

对接流程

Co-Signer主要实现了两个功能:创建地址和自动签名,具体流程如下图:

创建地址流程:

自动签名流程:

Co-Signer回调

为了保证交易的安全,您需要在Co-Signer中配置一个业务系统的回调地址,在交易签名之前授权。

授权交易数据采用明文传输,您需要在应用服务中保证业务系统和Co-Signer之间的通信安全。

提现回调

HTTP请求

POST /{url}

Content-Type application/json;charset=UTF-8

回调参数示例

POST /callback/example

{
    "type":"sign_start",
    "withdraw_id":321456,
    "request_id":"c70d1eebb7c687ec8d56bead73f104",
    "pending_round":false,
    "from":"0xc70d1eebb7c687ec8d56bead73f104d41e6e0bda",
    "to":"0x5EDc9177997Bf6B4db559A5C184051858B3B3704",
    "memo": "123321",
    "amount":167230.4978,
    "symbol":"BTC"
}

回调参数格式:

Param 类型 是否必须 说明
type String 回调类型,sign_start签名开始,sign_success签名成功
withdraw_id Integer 交易ID
request_id String 发起交易唯一标识
pending_round Boolean 加速状态,true是,false否(普通交易)
from String 交易出币地址
to String 交易到账地址
memo String 交易到账memo
amount Decimal 交易金额
symbol String 交易币种唯一标识
txid String 交易hash,签名成功返回txid

回调响应参数统一格式

返回字符串:SUCCES表示成功,FAILURE表示失败

Web3交易回调

HTTP请求

POST /{url}

Content-Type application/json;charset=UTF-8

回调参数示例

POST /callback/example

{
    "type":"sign_start",
    "trans_id":432,
    "request_id":"0000000003",
    "pending_round":false,
    "from":"0xc70d1eebb7c687ec8d56bead73f104d41e6e0bda",
    "to":"0x5EDc9177997Bf6B4db559A5C184051858B3B3704",
    "amount":0,
    "main_chain_symbol":"HECO",
    "input_data":"0xca718c65",
    "interactive_contract":"0xe012F3957226894B1a2a44b3ef5070417a069dC2",
    "txid":"",
}

回调参数格式:

Param 类型 是否必须 说明
type String 回调类型,sign_start签名开始,sign_success签名成功
trans_id Integer 交易ID
request_id String 发起交易唯一标识
pending_round Boolean 加速状态,true是,false否(普通交易)
from String 交易from地址
to String 交易to地址
amount Decimal 交易金额。-1表示无穷大
main_chain_symbol String 主链币币名(唯一标识),例:ETH
input_data String 交易币种唯一标识
interactive_contract String 交互合约
txid String 交易hash,签名成功返回txid

回调响应参数统一格式

返回字符串:SUCCES表示成功,FAILURE表示失败

错误码

接口错误码表 - 表格

code msg
0 成功
100001 系统错误
100004 请求参数不合法
100005 签名校验失败
100007 非法IP
100011 余额不足
100015 商户ID无效
100016 商户信息过期
110055 转账地址错误
110088 请勿重复提交请求
110160 注册失败
110161 超过转账最大支持精度
110227 币种已暂停转账
120202 币种不支持
120204 构建交易失败
200004 暂无权限进行此操作
200005 钱包不存在
200008 超出子钱包可创建最大数量
200007 正在创建子钱包,请耐心等待
200011 币种地址已存在
200013 节点配置错误,请联系客服
200015 签名失败
200025 正在处理,请耐心等待
200040 钱包已到期
200066 子钱包展示最多可操作1000条
200067 名称超过限制长度
210003 订单不存在
3040006 不能给自己转账
200071 该主链不支持加速
200072 子钱包类型不支持该类型交易
200073 多签地址不存在,请检查输入是否正确
200074 该地址并不是您参与的多签钱包,请检查后再次操作
200075 预估手续费失败
200076 暂不支持该交易