7.3.2 泰安链(基于FISCO BCOS)网关接入说明
密钥算法
泰安链(基于FISCO BCOS)通过ECDSA(secp256k1)算法生成链账户地址以及公私钥,具体可以参考SDK中提供的方法。或者使用openssl生成密钥,具体参考:
https://zhuanwang.bsnbase.com/static/tmpFile/bzsc/helper/5-2.html
Chain ID
泰安链Chain ID为1。
接入方式
泰安链(基于FISCO BCOS)目前仅支持JSON-RPC API方式接入,API文档参考:
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/api.html
密钥模式
支持密钥托管模式、发布公钥模式以及上传链账户地址模式。
在发布公钥模式与上传链账户地址模式下,用户自己管理密钥,完全按照API文档发起交易。
在密钥托管模式下,由于BSN需要代替用户对上链数据进行签名,所以sendRawTransaction和sendRawTransactionAndGetProof接口无法按照API文档中的报文格式提交交易,需要按照以下格式提交数据:
{
"method": "sendRawTransaction",
"id": 1,
"jsonrpc": "2.0",
"params": {
"blockNumber": 95, //当前块高
"contractAbi": "合约ABI",
"contractBin": "合约BIN", //非必填,若为合约部署该字段必填
"contractAddress": "合约地址", //非必填,若为合约调用该字段必填
"funcName": "合约方法", //非必填,若为合约调用该字段必填
"funcParam" : [
"参数"
],
"groupId": 1
}
}
注:泰安链新建链账户不再支持密钥托管模式,原有的密钥托管模式下的链账户可正常使用。
区块链浏览器:
http://explorer.taian.bsnbase.com
网关地址规则:
若添加BsnAccount则认为是通过网关托管加签(密钥托管模式),若为非托管模式(发布公钥模式、上传链账户地址模式)则不需要添加。
- RPC访问地址
网关地址/api/[项目id]/[BsnAccount]/[Protocol];
如果使用项目key接入,需按照网关地址/api/[项目id]/[BsnAccount]/[Protocol]格式拼接请求地址,同时请求报文头header中增加x-api-key:{项目key值}。
注:密钥托管模式下,BsnAccount必传,代表BSN网关进行签名,其他模式可不传,默认自己签名,网关只负责进行交易转发。
项目id:创建项目后生成的项目ID,见下图;
项目id也可以从项目管理->操作->下载接入参数获取:
BsnAccount:BSN链账户标识, 链账户管理->链账户详情页面可看到,如图:
Protocol:开放链-协议(rpc)。
合约语言
泰安链(基于FISCO BCOS)官方使用Solidity语言进行合约的开发。
开发文档
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/app_dev/index.html
开发实例:
https://github.com/WeBankBlockchain/SmartDev-Contract/tree/dev-bsn
示例:
1) 获取块高(getBlockNumber)
- 适用于密钥托管模式、发布公钥模式与上传链账户地址模式。
接口地址:网关地址/api/{您的开放联盟链项目ID}/rpc
若启用项目key则需要在HTTP Header中添加x-api-key请求头。
请求报文:
{
"jsonrpc": "2.0",
"method": "getBlockNumber",
"params": [
1
],
"id": 1
}
2) 发送交易(sendRawTransaction)
- 适用于密钥托管模式
接口地址:网关地址/api/{您的开放联盟链项目ID}/rpc
若启用项目key则需要在HTTP Header中添加x-api-key请求头。
请求报文:
{
"method": "sendRawTransaction",
"id": 1,
"jsonrpc": "2.0",
"params": {
"blockNumber": 102,
"contractAbi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"get\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"word\",\"type\":\"string\"}],\"name\":\"set\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
"contractAddress": "0xbfa50ab0a208921456f705bed36411134cc2133",
"funcName": "set",
"funcParam": [
"taianchain"
],
"groupId": 1
}
}
- 适用于发布公钥模式和上传链账户地址模式
请求地址:网关地址/api/{您的开放联盟链项目ID}/rpc
若启用项目key则需要在HTTP Header中添加x-api-key请求头。
请求报文:
{
"id": 1,
"jsonrpc": "2.0",
"method": "sendRawTransaction",
"params": [
1,
"0xf8f0a00230a0915f8b2f7a485891baae4bc77efec4c16ae6e0e2af44252d5dda785b8885051f4d5c0083419ce08202f894f01e3be20884bbbe4bd08430a6f12aff90bbb4fc80b8644ed3885e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000632313031323700000000000000000000000000000000000000000000000000000101801ba091cee4d6c73a1e6f033104f82833690f6f93c143f3af965cc39fd7ef7f5793a5a01d11202fef96d543fee52699b7f305cb11004ebc25fd0dc608165dab6d96a414"
]
}