关于 BLUEHELIX BAAS
概述
BLUEHELIX BAAS 提供REST风格的API(HTTPS + JSON),方便BHOP客户自助接入第三方公链。
在请求API接口之前,需要申请APIKEY, 使用ED25519算法生成公私钥对(可以使用clients示例代码生成),用户自己保存私钥,16进制格式的公钥在上币申请时进行提交,得到APIKEY。
申请方式
- 工单系统
上币申请材料
参数 | 值 |
---|---|
币种ID | ABC |
所属公链 | ABC |
区块链浏览器 | https://cn.etherscan.io |
代币精度 | 8 |
代币总量 | 100亿 |
地址格式校验正则表达式 | ^0x[0-9a-fA-F]{50}$ |
是否需要memo | 是/否 |
memo格式校验正则表达式 | ^[0-9]{6-12}$ |
服务器IP地址 | 100.100.100.100 (用作IP白名单限制,请提交固定IP,严禁使用动态IP) |
客户端代码示例
提供3种编程语言(Python, Golang, Java)的用户端代码供用户使用 https://github.com/bhexopen/baas/clients。
API签名认证
签名前准备的数据如下: HTTP_METHOD + | + HTTP_REQUEST_PATH + | + TIMESTAMP + | + PARAMS 连接完成后,对数据进行 ED25519 签名,签名后的 bytes 进行 Hex 编码。
域名
- 正式环境:https://baas.bluehelix.com
HTTP方法
GET POST
TIMESTAMP
访问 API 时的 UNIX EPOCH 时间戳 (精确到毫秒), 过期时间120000ms。
完成示例
POST请求
METHOD | URL | TIMESTAMP |
---|---|---|
POST | https://baas.bluehelix.com/api/v1/test | 1580887996488 |
参数见右:
{
"side": 1,
"amount": "100.0543",
"token_id": "ABC",
"tx_hash":"0x1234567890",
"block_height": 1000000
}
在进行签名之前,需要对请求参数,按照key的首字母进行排序,得到如下数据: POST|/api/v1/test|1580887996488|amount=100.0543&block_height=1000000&side=1&token_id=ABC&tx_hash=0x1234567890
使用您本地生成的 private_key(私钥),对数据进行ED25519签名,并对签名后的bytes进行 Hex 编码, 得到最终签名signature。
在HTTP请求时,写入header,即可通过校验:
- BWAAS-API-KEY
- BWAAS-API-SIGNATURE
- BWAAS-API-TIMESTAMP
GET请求
METHOD | URL | TIMESTAMP |
---|---|---|
GET | https://baas.bluehelix.com/api/v1/test?chain=ABC | 1580887996488 |
在进行签名之前,需要对请求参数,按照key的首字母进行排序,得到如下数据: GET|/api/v1/test?chain=ABC|1580887996488
使用您本地生成的 private_key(私钥),对数据进行ED25519签名,并对签名后的bytes进行 Hex 编码, 得到最终签名signature。
在HTTP请求时,写入header,即可通过校验:
- BWAAS-API-KEY
- BWAAS-API-SIGNATURE
- BWAAS-API-TIMESTAMP
接口列表
获取剩余地址数量
获取剩余地址数量
curl
-X GET
-H "BWAAS-API-KEY: 123"
-H "BWAAS-API-TIMESTAMP: 1580887996488"
-H "BWAAS-API-SIGNATURE: f321da3"
https://baas.bluehelix.com/api/v1/address/unused/count/
?chain=ABC
返回结果:
{
"code": 10000,
"msg": "success",
"data": 1000
}
HTTP Request:
GET /api/v1/address/unused/count
请求参数:
参数 | 类型 | 必须 | 说明 |
---|---|---|---|
chain | string | 是 | 那个链,使用主网代币 |
响应结果:
参数 | 类型 | 说明 |
---|---|---|
code | int | 详情见返回类型表 |
msg | string | 返回内容;失败时为错误信息 |
data | int | 剩余地址数量 |
添加充值地址
添加充值地址
curl
-X POST
-H "BWAAS-API-KEY: 123"
-H "BWAAS-API-TIMESTAMP: 1580887996488"
-H "BWAAS-API-SIGNATURE: f321da3"
-- data '
{
"chain":"ABC",
"addr_list":[
"addr_111",
"addr_222"
]
}
'
https://baas.bluehelix.com/api/v1/address/add
返回结果:
{
"code": 10000,
"msg": "success",
}
HTTP Request:
POST /api/v1/address/add
请求参数:
参数 | 类型 | 必须 | 说明 |
---|---|---|---|
chain | string | 是 | 那个链,使用主网代币 |
addr_list | []string | 是 | 地址列表 |
响应结果:
参数 | 类型 | 说明 |
---|---|---|
code | int | 详情见返回类型表 |
msg | string | 返回内容;失败时为错误信息 |
充值到账通知
充值到账通知
curl
-X POST
-H "BWAAS-API-KEY: 123"
-H "BWAAS-API-TIMESTAMP: 1580887996488"
-H "BWAAS-API-SIGNATURE: f321da3"
-- data '
{
"token_id": "ABC",
"from": "addr1",
"to": "addr2",
"memo":"1234",
"amount": "124.23",
"tx_hash": "1234",
"index": "1",
"block_height": "124",
"block_time": "1234"
}
'
https://baas.bluehelix.com/api/v1/notify/deposit
返回结果:
{
"code": 10000,
"msg": "success",
}
HTTP Request:
POST /api/v1/notify/deposit
请求参数:
参数 | 类型 | 必须 | 说明 |
---|---|---|---|
token_id | string | 是 | 币种ID |
from | string | 是 | 从哪个地址转出来 |
to | string | 是 | 转给那个地址 |
memo | string | 可选 | memo标识,传值时不能为空 |
amount | string | 是 | 充值金额 |
tx_hash | string | 是 | 交易hash |
index | string | 是 | 该充值所在交易中的位置 |
block_height | string | 是 | 区块高度 |
block_time | string | 是 | 区块时间(秒) |
响应结果:
参数 | 类型 | 说明 |
---|---|---|
code | int | 详情见返回类型表 |
msg | string | 返回内容;失败时为错误信息 |
获取待处理提现请求
获取待处理提现请求
curl
-X GET
-H "BWAAS-API-KEY: 123"
-H "BWAAS-API-TIMESTAMP: 1580887996488"
-H "BWAAS-API-SIGNATURE: f321da3"
https://baas.bluehelix.com/api/v1/withdrawal/orders
返回结果:
{
"code": 10000,
"msg": "success",
"data"::[
{
"order_id": "1234",
"token_id":"ABC",
"to": "bhexaddr1",
"memo": "bhexmemo",
"amount": "12.34"
},
{
"order_id": "2345",
"token_id":"ABC",
"to": "bhexaddr1",
"memo": "bhexmemo",
"amount": "12.34"
}
]
}
HTTP Request:
GET /api/v1/withdrawal/orders?chain=ABC
请求参数:
参数 | 类型 | 必须 | 说明 |
---|---|---|---|
chain | string | 是 | 那个链,使用主网代币 |
响应结果:
参数 | 类型 | 说明 |
---|---|---|
code | int | 详情见返回类型表 |
msg | string | 返回内容;失败时为错误信息 |
data | []order | 待处理提现订单列表 |
order 信息:
参数 | 类型 | 说明 |
---|---|---|
order_id | string | 订单id |
token_id | string | 提现币种 |
to | string | 提现给那个地址 |
memo | string | memo标记 |
amount | string | 提现金额 |
提现处理完成通知
提现处理完成通知
curl
-X POST
-H "BWAAS-API-KEY: 123"
-H "BWAAS-API-TIMESTAMP: 1580887996488"
-H "BWAAS-API-SIGNATURE: f321da3"
--data '
{
"order_id": "1234",
"token_id": "ABC",
"to": "bhexaddr1",
"memo": "bhexmemo",
"amount": "12.34",
"tx_hash": "0x5f99810a4154379e5b7951419a77250f020be54b78acb9a8747ff8b0ec75769d",
"block_height": "6581548",
"block_time": "1540480255"
}
'
https://baas.bluehelix.com/api/v1/notify/withdrawal
返回结果:
{
"code": 10000,
"msg": "success",
}
HTTP Request:
POST /api/v1/notify/withdrawal
请求参数:
参数 | 类型 | 必须 | 说明 |
---|---|---|---|
order_id | string | 是 | 订单id |
token_id | string | 是 | 提现币种 |
to | string | 是 | 提现给那个地址 |
memo | string | 可选 | memo标记 |
amount | string | 是 | 提现金额 |
tx_hash | string | 是 | 交易hash |
block_height | string | 是 | 区块高度 |
block_time | string | 是 | 区块时间(秒) |
响应结果:
参数 | 类型 | 说明 |
---|---|---|
code | int | 详情见返回类型表 |
msg | string | 返回内容;失败时为错误信息 |
提现处理失败通知
提现处理失败通知
curl
-X POST
-H "BWAAS-API-KEY: 123"
-H "BWAAS-API-TIMESTAMP: 1580887996488"
-H "BWAAS-API-SIGNATURE: f321da3"
--data '
{
"order_id": "1234",
"token_id": "ABC",
"reason": "invalid address"
}
'
https://baas.bluehelix.com/api/v1/notify/failed
返回结果:
{
"code": 10000,
"msg": "success",
}
HTTP Request:
POST /api/v1/notify/failed
请求参数:
参数 | 类型 | 必须 | 说明 |
---|---|---|---|
order_id | string | 是 | 订单id |
token_id | string | 是 | 提现币种 |
reason | string | 是 | 失败原因 |
响应结果:
参数 | 类型 | 说明 |
---|---|---|
code | int | 详情见返回类型表 |
msg | string | 返回内容;失败时为错误信息 |
定期对账
定期对账
curl
-X POST
-H "BWAAS-API-KEY: 123"
-H "BWAAS-API-TIMESTAMP: 1580887996488"
-H "BWAAS-API-SIGNATURE: f321da3"
--data '
{
"token_id": "ABC",
"total_deposit_amount": "100000.567",
"total_withdrawal_amount": "10000",
"last_block_height": "100000"
}
'
https://baas.bluehelix.com/api/v1/asset/verify
返回结果:
{
"code": 10000,
"msg": "success",
}
HTTP Request:
POST /api/v1/asset/verify
请求参数:
参数 | 类型 | 必须 | 说明 |
---|---|---|---|
token_id | string | 是 | 提现币种 |
total_deposit_amount | string | 是 | 总充值金额 |
total_withdrawal_amount | string | 是 | 总提现金额 |
last_block_height | string | 是 | 对账最高区块高度 |
响应结果:
参数 | 类型 | 说明 |
---|---|---|
code | int | 详情见返回类型表 |
msg | string | 返回内容;失败时为错误信息 |
返回值列表
返回值 | 类型 | 说明 |
---|---|---|
10000 | SUCCESS | 成功 |
10001 | INVALID_SIGN | 无效签名 |
10002 | INVALID_APIKEY | 无效的api_key |
10003 | INVALID_CHAIN | 无效的chain |
10004 | INVALID_TOKEN_ID | 无效的token_id |
10005 | INVALID_PARAMS | 无效的参数 |
10006 | INVALID_TO_ADDRESS | 无效的充币地址 |
10007 | INVALID_ORDER_ID | 无效的订单id |
10008 | INVALID_AMOUNT | 无效的amount值 |
10009 | INVALID_DECIMALS | 无效的精度 |
10010 | INVALID_BLOCK_HEIGHT | 无效的区块高度 |
10011 | INVALID_BLOCK_TIME | 无效的区块时间 |
10012 | INVALID_TXHASH | 无效的tx_hash |
10013 | INVALID_INDEX | 无效的交易index |
10014 | NETWORK_ERROR | 网络错误 |
10015 | REPEAT_DEPOSIT | 重复充值 |
10016 | ASSET_VERIFY_FAILED | 资产校验失败 |
10017 | DEPOSIT_SUSPENDED | 充值暂停 |
10018 | WITHDRAWAL_SUSPENDED | 提现暂停 |
10019 | TIMESTAMP_EXPIRED | 时间戳过期 |
10020 | MEMO_REQUIRED | 需要memo |
10021 | NEED_WAIT | 通知提现失败时,需要等待队列释放 |
10022 | INVALID_FROM_ADDRESS | 无效的from地址 |
10023 | ADDRESS_ENOUGH | 备用地址足够多 |
10024 | NEED_RETRY | 处理失败,需要客户端重试 |
10025 | INVALID_MEMO | 无效的memo |
10026 | ADDRESS_TOO_LONG | 地址太长,最大 允许512 |