BCH科普:比特现金(BCH)钱包对接流程
虽然Bitcoin Cash(BCH)好像正慢慢淡出主流圈子,但它依然跻身加密货币市值TOP11之列。
那么,今天就和小编一起来认识下什么是BCH,它与BTC有哪些区别,在应用场景BCH具备哪些优点,以及BCH钱包对接流程。
什么是BCH?
BCH全称为Bitcoin Cash,是矿池ViaBTC基于Bitcoin ABC方案推出的新的加密数字资产。
BCH是比特币区块链的硬分叉(一种社区驱动的协议或代码层面的更新)。比特币分叉发生在2017年8月1日,其目的是将区块大小更新为8mb。
2018年11月16日,BCH进行了第二次硬分叉,分为比特币SV(Satoshi’s Vision 中本聪的愿景)和比特币ABC。比特币ABC由于拥有更多的哈希算力和节点,最终成为了主链并接管了BCH代号。
比特现金最近一次减半是在2020年4月8日,当时其区块奖励从12.5降低至6.25。
BCH和BTC有什么区别?
BTC可以说是BCH的前世,但是分叉以后,BCH一直被认为是新方向的BTC,BCH有更大的区块,能够处理更多交易,不会出现像BTC那样由于区块太小,处理速度跟不上交易数量的情况,从而造成拥堵的现象。这也是BCH与BTC最明细的区别。
这也直接造成了BCH的手续费用比BTC要低的多,BTC由于缓慢的交易处理速度,出现了谁的手续费价格高谁的交易先处理的规则,而BCH是不可能出现这种情况的。
由于BCH社区从理念上与现在BTC社区core团队不一样,简单的说BCH与BTC没有多少关联了,成为一种全新的币种。
BCH可以算是比特币中的“革新派”,他们认同比特币通过提升区块大小,认同有更多的项目能够落实,应该运用最新的技术在比特币上,但是他们的激进也让他们受到非议,说他们是逐利的矿工,不尊重中本聪的意志,他们就如同历史上的革新派一般,充满激情但又太过激进。
BCH在应用场景上具备哪些特点?
快速交易,根据设计,比特币现金网络的设立是为了快速处理交易并且花费很少。
与初始的比特币区块链受限于1MB区块和替换费用不同,比特币现金区块为8MB。 升级到更大的区块意味着矿工可以验证所有交易,而不仅仅是收费最高的交易。较大的区块有助于保持BCH内存池的空间和交易的快速确认。
对客户和商家来说都是负担得起的,比特币现金的交易很快就会被挖掘出来——即使费用低。由于在8MB的区块中适合更多的交易,因此确保交易在下一个区块中得到确认的竞争就更少了。
对消费者来说,低费用意味着对商家的低收费。商户可以开始接受比特币现金支付,无需支付每月的费用和每笔交易的百分比。另外,货币兑换成本不存在;BCH是一种全球性的无国界货币。
风险较小,接受信用卡支付的风险之一,尤其是在网上,是欺诈。商家总是面临着退款的风险(从消费者的信用卡或银行账户转回资金)。一些金融机构实际上向商户收取费用。
比特币现金交易以秒为单位,并在几分钟内得到确认。你可以在全球范围内发送或接收货币,交易是不可逆转的(即使是对欺诈者而言)。
易于实施,小商家只需要自己的比特币现金地址就可以开始接受BCH的付款。实体店应该有一个设备,比如手机或平板电脑,这样消费者就可以很容易地扫描二维码。
像Coinbase Commerce这样的商业服务使它变得更加容易。商户可以在电子商务平台上添加CoinbaseCommerce作为支付选项,也可以添加到现有的结账流程中。你所需要的只是一个电子邮件地址和一部电话。
定期升级,比特币现金社区在承诺继续升级网络方面是独一无二的。最近,开发人员发布了BCH地址格式的升级。BCH地址现在包括了“bitcoincash:”在通常的字母和数字串之前,所以人们扫描条形码不会误以为它是比特币地址。减轻这种风险有助于简化、快速支付。
BCH钱包对接流程
基于BCH运用广泛性,不管是交易所、商城、游戏又或者项目方对接BCH钱包以及充提币的需求进一步提升,但由于上述企业在区块链领域技术能力有限,往往会寻找第三方开放平台进行对接。
今天小编跟大家聊聊交易所等交易平台如何进行BCH钱包对接,以及BCH充提币API接口对接方法。
1、目录
1.1、生成地址
1.2、提币
1.3、代付
1.4、交易回调
1.5、校验地址合法性
1.6、获取商户支持币种信息
2、接口明细
1、生成地址
1.1 场景说明
请求指定币种地址,如要成功获取地址,需先存在钱包,且钱包支持该币种,
1.2 接口详情
1.2.1 接口地址
接口详情
|
|
URL
|
【/mch/address/create】
|
请求方式
|
POST
|
1.2.2 参数
1.2.2.1 参数说明
参数
|
类型
|
是否必填
|
说明
|
备注
|
timestamp
|
String
|
是
|
时间戳
|
见 验签说明
|
nonce
|
String
|
是
|
随机数
|
见 验签说明
|
sign
|
String
|
是
|
签名
|
见 验签说明
|
body
|
String
|
是
|
消息内容
|
json字符串,格式如下
|
[ {undefined "merchantId":"300015", "coinType":520, "callUrl":"http://localhost:8080/callBack" } ]
1.2.2.2 body参数字段
body参数名
|
类型
|
是否必填
|
说明
|
merchantId
|
String
|
是
|
商户号
|
coinType
|
Integer
|
是
|
主币种编号,见 附录一
|
callUrl
|
String
|
是
|
回调地址,通过该接口创建的地址,以后关于该地址的充币信息会通过您指定的回调地址通知您。具体示例见 交易回调接口
|
walletId
|
String
|
否
|
钱包编号,默认根据主钱包生成地址
|
alias
|
String
|
否
|
地址别名
|
1.2.2.3 示例
{undefined "timestamp": 1535005047, "nonce": 10000, "sign": "a230def43c1a12b14393880a28d4e005", "body": "[{\"merchantId\":\"300015\",\"coinType\":520,\"callUrl\":\"http://localhost:8080/callBack\"}]" }
1.2.3 返回状态码表
code
|
解释
|
200
|
成功
|
4005
|
非法参数
|
4001
|
商户不存在
|
4169
|
商户已禁用
|
4162
|
签名错误
|
4175
|
钱包编号错误
|
4017
|
商户没有创建钱包
|
4176
|
钱包未添加支持该币种
|
4166
|
商户没有配置套餐
|
4168
|
商户地址达到上限
|
4045
|
币种信息错误
|
-1
|
获取地址失败
|
1.3 调取示例
1.3.1 成功
{undefined "data":{undefined "coinType":520, "address":"0xbe4e3699cb870bc95365fe04a187dd279a651a58" }, "message":"SUCCESS", "code":200 }
1.3.2 失败
{undefined "code": "4101", "message": "SIGN_MSG_ERROR" }
2、发送提币申请
2.1 场景说明
提币申请
2.2 接口详情
2.2.1 接口地址
接口详情
|
|
URL
|
【/mch/withdraw】
|
请求方式
|
POST
|
2.2.2 参数
2.2.2.1 参数说明
参数
|
类型
|
是否必填
|
说明
|
备注
|
timestamp
|
String
|
是
|
时间戳
|
见 验签说明
|
nonce
|
String
|
是
|
随机数
|
见 验签说明
|
sign
|
String
|
是
|
签名
|
见 验签说明
|
body
|
String
|
是
|
消息内容
|
json字符串,格式如下
|
[ {undefined "address":"raadSxrUhG5EQVCY75CSGaVLWCeXd6yH6s", "amount":"0.11", "merchantId":"100109", "mainCoinType":"144", "coinType":"144", "callUrl":"http://localhost:8080/mch/callBack", "businessId":"15", "memo":"10112" } ]
2.2.2.2 body参数字段
body参数名称
|
是否必填
|
类型
|
说明
|
address
|
是
|
String
|
提币地址
|
amount
|
是
|
String
|
提币数量
|
merchantId
|
是
|
String
|
商户号
|
mainCoinType
|
是
|
String
|
主币种编号 (见 附录一 )
|
coinType
|
是
|
String
|
子币种编号 (见 附录一 )
|
callUrl
|
是
|
String
|
回调地址,通过该callUrl告知您该笔提币交易的状态,具体示例见 交易回调接口
|
businessId
|
是
|
String
|
业务id,必须保证该字段在系统内唯一,如果重复,则该笔审核钱包不会接收。
|
memo
|
否
|
String
|
备注,XRP和EOS,这两种币的提币申请该字段可选,起他类型币种不填
|
2.2.2.3 示例
{undefined "timestamp": 1535005047, "nonce": 100000, "sign": "6df1512ee650431632ce1541a6b064e1", "body": "[{\"address\":\"raadSxrUhG5EQVCY75CSGaVLWCeXd6yH6s\",\"amount\":\"0.11\",\"merchantId\":\"100109\",\"mainCoinType\":\"144\",\"coinType\":\"144\",\"callUrl\":\"http://localhost:8080/callBack\",\"businessId\":\"15\",\"memo\":\"10112\"}]" }
2.2.3 返回状态码表
code
|
解释
|
200
|
成功
|
4005
|
非法参数
|
4598
|
传入body中的list对象中的所有merchantId必须保持一致
|
4001
|
商户不存在
|
4169
|
商户已被禁用
|
4183
|
到账地址异常
|
4193
|
EOS金额小数点后超过4位长度
|
4034
|
未找到该币种信息
|
2.3.1 成功
{undefined "message":"SUCCESS", "code":200 }
2.3.2 失败
{undefined "code": "4101", "message": "SIGN_MSG_ERROR" }
3、代付
3.1 场景说明
代付,发送自动付款申请,未设置代付信息或代付失败则进入审核状态。
3.2 接口详情
3.2.1 接口地址
接口详情
|
|
URL
|
【/mch/withdraw/proxypay】
|
请求方式
|
POST
|
3.2.2 参数
3.2.2.1 参数说明
参数
|
类型
|
是否必填
|
说明
|
备注
|
timestamp
|
String
|
是
|
时间戳
|
见 验签说明
|
nonce
|
String
|
是
|
随机数
|
见 验签说明
|
sign
|
String
|
是
|
签名
|
见 验签说明
|
body
|
String
|
是
|
消息内容
|
JSON字符串,格式如下
|
[ {undefined "address":"raadSxrUhG5EQVCY75CSGaVLWCeXd6yH6s", "amount":"0.1", "merchantId":"100146", "mainCoinType":"144", "coinType":"144", "callUrl":"http://localhost:8080/callBack", "businessId":"571001", "memo":"10112" } ]
3.2.2.2 body参数说明
body参数名称
|
类型
|
是否必填
|
说明
|
merchantId
|
String
|
是
|
商户号
|
address
|
String
|
是
|
提币地址
|
mainCoinType
|
String
|
是
|
主币种编号,见 附录一
|
coinType
|
String
|
是
|
子币种编号,见 附录一
|
amount
|
String
|
是
|
交易数量
|
callUrl
|
String
|
是
|
回调地址,提币(审核、交易)结果将通过该地址进行回调,具体示例见 交易回调接口
|
businessId
|
String
|
是
|
业务id,必须保证该字段在系统内唯一,如果重复,则该笔提币钱包将不会进行接收
|
memo
|
String
|
否
|
备注,XRP和EOS,这两种币的提币申请该字段可选,起他类型币种不填
|
3.2.2.2 示例
{undefined "timestamp": 1535005047, "nonce": 100000, "sign": "e1bee3a417b9c606ba6cedda26db761a", "body": "[{\"address\":\"raadSxrUhG5EQVCY75CSGaVLWCeXd6yH6s\",\"amount\":\"0.1\",\"merchantId\":\"100146\",\"mainCoinType\":\"144\",\"coinType\":\"144\",\"callUrl\":\"http://localhost:8080/callBack\",\"businessId\":\"571001\",\"memo\":\"10112\"}]" }
3.2.3 返回状态码表
code
|
解释
|
200
|
成功
|
4005
|
非法参数
|
4001
|
商户不存在
|
4166
|
商户没有配置套餐
|
4169
|
商户已被禁用
|
4612
|
签名错误
|
4163
|
签名信息错误
|
569
|
无效的地址
|
571
|
已存在审核记录,将不再进行处理
|
581
|
非法提币金额
|
554
|
商户不支持该币种
|
3.3 调取示例
3.3.1 成功
{undefined "message":"SUCCESS", "code":200 }
3.3.2 失败
{undefined "code": "4101", "message": "SIGN_MSG_ERROR" }
4、交易回调接口
4.1 场景说明
网关收到交易处理结果,调用商户提供的回调接口,通知商户具体变化信息。该接口网关发送给您指定的回调地址的内容,处理您的业务信息。 分充值回调和提币回调,其中提币最多会进行两次回调(审核回调+交易结果回调)
4.2 接口详情
4.2.1 接口地址
接口详情
|
|
URL
|
|
请求方式
|
POST
|
4.2.2 参数
4.2.2.1 参数说明
参数
|
类型
|
是否必填
|
说明
|
备注
|
timestamp
|
String
|
是
|
时间戳
|
见 验签说明
|
nonce
|
String
|
是
|
随机数
|
见 验签说明
|
sign
|
String
|
是
|
签名
|
见 验签说明
|
body
|
String
|
是
|
消息内容
|
JSON字符串,格式如下
|
{undefined "address":"DJY781Z8qbuJeuA7C3McYivbX8kmAUXPsW", "amount":"12345678", "blockHigh":"102419", "coinType":"206", "decimals":"8", "fee":"452000", "mainCoinType":"206", "status":3, "tradeId":"20181024175416907", "tradeType":1, "txId":"31689c332536b56a2246347e206fbed2d04d461a3d668c4c1de32a75a8d436f0", "businessId":"",// 提币回调为提币接口传入的businessId,充币无值 "memo":"" }
4.2.2.2 body参数说明
body参数名称
|
类型
|
说明
|
address
|
String
|
地址
|
amount
|
String
|
交易数量,根据币种精度获取实际金额,实际金额=amount/pow(10,decimals),即实际金额等于amount除以10的decimals次方
|
fee
|
String
|
矿工费,根据币种精度获取实际金额,实际金额获取同上
|
decimals
|
String
|
币种精度
|
coinType
|
String
|
子币种编号,见 附录一
|
mainCoinType
|
String
|
主币种编号,见 附录一
|
businessId
|
String
|
业务编号,提币回调时为提币请求时传入的,充币回调无值
|
blockHigh
|
String
|
区块高度
|
status
|
Integer
|
状态,见 回调接口状态说明
|
tradeId
|
String
|
交易流水号
|
tradeType
|
Integer
|
交易类型,见 回调接口交易类型说明
|
txid
|
String
|
区块链交易哈希
|
memo
|
String
|
备注,XRP和EOS(见 附录一 ),这2种类型币的充提币可能有值
|
4.2.2.2 示例
{undefined "timestamp": 1535005047, "nonce": 100000, "sign": "e1bee3a417b9c606ba6cedda26db761a", "body": "{\"address\":\"DJY781Z8qbuJeuA7C3McYivbX8kmAUXPsW\",\"amount\":\"12345678\",\"blockHigh\":\"102419\",\"coinType\":\"206\",\"decimals\":\"8\",\"fee\":\"452000\",\"mainCoinType\":\"206\",\"status\":3,\"tradeId\":\"20181024175416907\",\"tradeType\":1,\"txId\":\"31689c332536b56a2246347e206fbed2d04d461a3d668c4c1de32a75a8d436f0\"}" }
5、校验地址合法性
5.1 场景说明
校验地址的合法性,添加地址、提币申请等场景时可先校验地址合法性,参看 校验规则
5.2 接口详情
5.2.1 接口地址
接口详情
|
|
URL
|
【/mch/check/address】
|
请求方式
|
Post
|
5.2.2 参数
5.2.2.1 参数说明
参数
|
类型
|
是否必填
|
说明
|
备注
|
timestamp
|
String
|
是
|
时间戳
|
|
nonce
|
String
|
是
|
随机数
|
|
sign
|
String
|
是
|
签名
|
|
body
|
String
|
是
|
消息内容
|
JSON字符串,格式如下
|
{undefined "merchantId":200000, "mainCoinType":"206", "address":"DJY781Z8qbuJeuA7C3McYivbX8kmAUXPsW" }
5.2.2.2 body参数说明
body参数名称
|
类型
|
是否必填
|
说明
|
merchantId
|
Long
|
是
|
商户号
|
mainCoinType
|
String
|
是
|
主币种编号,见 附录一
|
address
|
String
|
是
|
需校验的地址
|
5.2.2.2 示例
{undefined "timestamp": 1535005047, "nonce": 100000, "sign": "e1bee3a417b9c606ba6cedda26db761a", "body": "[{\"merchantId\":200000,\"mainCoinType\":\"206\",\"address\":\"DJY781Z8qbuJeuA7C3McYivbX8kmAUXPsW\"}]"
5.2.3 返回状态码表
code
|
解释
|
200
|
成功
|
4005
|
非法参数
|
4162
|
签名错误
|
4165
|
地址不合法
|
5.3 调取示例
5.3.1 成功
{undefined "code":200, "message":"SUCCESS" }
5.3.2 失败
{undefined "code":4005, "message":"PARAM_ERROR" }
6、获取商户支持的币种信息
6.1 场景说明
获取商户支持的币种,以及余额
6.2 接口详情
6.2.1 接口地址
接口详情
|
|
URL
|
【/mch/support-coins】
|
请求方式
|
POST
|
6.2.2 参数
6.2.2.1 参数说明
参数
|
类型
|
是否必填
|
说明
|
timestamp
|
String
|
是
|
时间戳
|
nonce
|
String
|
是
|
随机数
|
sign
|
String
|
是
|
签名
|
body
|
String
|
是
|
消息内容
|
6.2.2.2 body参数说明
body参数名称
|
类型
|
是否必填
|
说明
|
merchantId
|
Long
|
是
|
商户号
|
showBalance
|
Boolean
|
是
|
是否查询余额,false不获取,true获取
|
6.2.2.3 示例
{undefined "timestamp": 1535005047, "nonce": 100000, "sign": "e1bee3a417b9c606ba6cedda26db761a", "body": "{\"merchantId\":\"200032\",\"showBalance\":true}" }
6.2.3 返回状态码表
状态码
|
解释
|
200
|
成功
|
4005
|
body参数错误
|
6.3 调取示例
6.3.1 成功
{undefined "code": 200, "message": "SUCCESS", "data":[ {undefined "name": "BTC", // 币种别名 "coinName":"Bitcoin", // 币种全称 "symbol":"BTC", // 币种单位 "mainCoinType":"0", //主币种类型 "coinType":"0", // 币种类型 "decimals":"8", // 币种精度 "tokenStatus":"0", // 0: 主币 1:代币 "mainSymbol":"BTC", //主币种单位 "balance":"0", // 币种余额 "logo":"http://bipay-admin.oss-cn-hangzhou.aliyuncs.com/bipay-admin-release/coin-logo/BTC.png" // 币种log地址 }, {undefined "name": "ETH", // 币种别名 "coinName":"Ethereum", // 币种全称 "symbol":"ETH", // 币种单位 "mainCoinType":"60", //主币种类型 "coinType":"60", // 币种类型 "decimals":"18", // 币种精度 "tokenStatus":"0", // 0: 主币 1:代币 "mainSymbol":"ETH", //主币种单位 "balance":"0", // 币种余额 "logo":"https://bipay-admin.oss-cn-hangzhou.aliyuncs.com/bipay-admin-release/coin-logo/ETH.png" // 币种log地址 } ] }
6.3.2 失败
{undefined "code":4005, "message":"BGS_ILLEGAL_PARAMETER" }
附录一
主币种编号
|
子币种编号
|
币种简称
|
币种英文名
|
币种中文名称
|
精度
|
0
|
0
|
BTC
|
Bitcoin
|
比特币
|
8
|
60
|
60
|
ETH
|
Ethereum
|
以太坊
|
18
|
0
|
31
|
USDT
|
Tether USD
|
泰达币
|
8
|
520
|
520
|
CNT
|
CNT
|
测试币
|
18
|
5
|
5
|
DASH
|
DASH
|
达世币
|
8
|
133
|
133
|
ZEC
|
ZEC
|
大零币
|
8
|
145
|
145
|
BCH
|
Bitcoincash
|
比特币现金
|
8
|
61
|
61
|
ETC
|
Ethereum Classic
|
以太坊经典
|
18
|
2
|
2
|
LTC
|
LTC
|
莱特币
|
8
|
2301
|
2301
|
QTUM
|
QTUM
|
量子链币
|
8
|
502
|
502
|
GCC
|
GalaxyChain
|
|
8
|
60
|
合约地址
|
eth代币
|
eth代币
|
|
根据代币具体情况而定
|
144
|
144
|
XRP
|
Ripple
|
瑞波币
|
6
|
194
|
194
|
EOS
|
EOS
|
柚子币
|
4
|
194
|
194
|
EOS
|
EOS
|
柚子币
|
4
|
2304
|
2304
|
IOTE
|
IOTE
|
IOTE
|
8
|
2303
|
2303
|
VDS
|
Vollar
|
Vollar币
|
8
|
回调接口状态说明
状态
|
说明
|
0
|
待审核
|
1
|
审核成功
|
2
|
审核驳回
|
3
|
交易成功
|
4
|
交易失败
|
回调接口交易类型说明
状态
|
说明
|
1
|
充币回调
|
2
|
提币回调
|
验签说明
为了保证商户传送到优盾的参数信息不被恶意篡改,网关为商户接口提供Md5加密摘要认证。商户可用基础加密参数:时间戳、随机数、签名密钥(商户唯一的APIKEY)、请求明文参数按指定顺序排列进行Md5加密,产生一个验签串sign,商户请求网关接口时,带上参数时间戳、随机数、请求明文参数、sign作为参数。网关拿到相应的参数以同样的方式进行签名验签。同理,网关请求商户也以同样的方式进行身份验证。
sign=md5(body + key + nonce + timestamp)
key为接口授权码APIKEY,由网关分配给商户,加密字段顺序不能错误
币种地址校验规则
主币种类型
|
币种简称
|
币种英文名称
|
币种中文名称
|
地址前缀
|
地址长度限制区间
|
0
|
BTC
|
Bitcoin
|
比特币
|
1或者3
|
[26,36]
|
60
|
ETH
|
Ethereum
|
以太坊
|
0x
|
[42]
|
145
|
BCH
|
Bitcoincash
|
比特币现金
|
1
|
[26,36]
|
61
|
ETC
|
EthereumClassic
|
以太坊经典
|
0x
|
[42]
|
2
|
LTC
|
Litecoin
|
莱特币
|
L或者M
|
[26,36]
|
508
|
GX
|
GX
|
|
G
|
[26,36]
|
503
|
NBTC
|
NBTC
|
|
N
|
不限制
|
99
|
STO
|
STO
|
证券型通证发行
|
S
|
不限制
|
5
|
DASH
|
DASH
|
达世币
|
X
|
[26,36]
|
2301
|
QTUM
|
QTUM
|
量子链币
|
Q
|
[26,36]
|
133
|
ZEC
|
ZCash
|
大零币
|
t1
|
不限制
|
144
|
XRP
|
Ripple
|
瑞波币
|
r
|
[34]
|
以上就是BCH科普:比特现金(BCH)钱包对接流程的详细内容,更多关于比特现金(BCH)钱包的资料请关注脚本之家其它相关文章!
本站提醒:投资有风险,入市须谨慎,本内容不作为投资理财建议。