3 底层链业务接入
骨干节点下属子链接入时,需要骨干节点将子链申请信息同步至主链,由超级节点对其子链签发AC号,以获取子链接入星火·链网的许可权限。提报的子链、节点、用户信息需要变更时需要重新提报申请,由主链审核或备案。
3.1 申请子链
接口说明:
请确认在调用该接口前,您已在星火·链网主链业务管理平台申请成为骨干节点,获得调用该接口权限。
接口功能:
通过该接口,骨干节点可以为新加入的子链申请AC号,并由超级节点审核并为该子链签发。AC号是由四位小写字母和数字组成,代表子链在星火·链网中代表其合法身份的唯一代码,用于子链身份识别及全网寻址功能。主链无AC号。
调用流程:
申请子链需要两步操作,(1)通过主链获取申请子链blob,用于将审批过程上链;(2)使用骨干节点私钥blob进行签名,并提交上链。
3.1.1 获取申请子链blob
接口说明:
提交申请子链的材料,获取申请子链的blob数据(blob是星火·链网上交易结构序列化后的十六进制格式),用于执行申请信息上链。
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
backboneNodeBid | String(64) | 是 | 骨干节点主链bid |
chainInfo | Object | 是 | 链基本信息 |
chainInfo.industry | String(4) | 是 | 链的行业(见第10节行业类型) |
chainInfo.name | String(30) | 是 | 链名称 |
chainInfo.subChainType | String | 是 | 链类型。0是子链,1是骨干链 |
chainInfo.chainArch | String(10) | 是 | 链架构 10000:BIF-CORE、10001:Fabric、10002:Ethereum、 10003:BubiChain、10004:Quorum、10005:Xuperchain、10006:cita 、 10007:FISCO、10008:其他 |
chainInfo.genesisAccount | String(64) | 否 | 创世账户 |
chainInfo.genesisAmount | String(30) | 否 | 创世账户Token总数(区块链底层最小单位、根据精度来计算 比如 精度是2,Token总数是真实1亿,需要在1亿的基础上乘以100) |
chainInfo.unit | String (32) | 否 | Token单位 |
chainInfo.precision | String(30) | 否 | Token精度 |
chainInfo.baseReserve | String(30) | 否 | 账户Token保留数(区块链底层最小单位、根据精度来计算 比如 精度是2,账户保留token是真实1,需要在1的基础上乘以100,填100) |
chainInfo.feeGasPrice | String(30) | 否 | 最低Gas单价 |
chainInfo.rewardInitValue | String(30) | 否 | 出块奖励(区块链底层最小单位、根据精度来计算 比如 精度是2,出块奖励是真实8,需要在8的基础上乘以100 填800) |
chainInfo.genesisSlogan | String(1024) | 否 | 区块链slogan |
chainInfo.description | String(1024) | 是 | 区块链介绍 |
chainInfo.gatewayNodeList | Array | 是 | 数据网关列表(需要填写主链的BID) |
chainInfo.gatewayCrossList | Array | 是 | 跨链网关列表(需要填写主链的BID。建议数据网关和跨链网关使用不同的BID账号,否则开发者在多个服务中并发交易时,可能出现交易上链失败问题) |
chainInfo.remark | String(1024) | 否 | 申请备注 |
system | Object | 是 | 链系统信息 |
system.visitUrl | String(255) | 是 | 子链访问地址 |
system.publicStatus | String(2) | 是 | 开放许可,0 许可, 1开放 |
system.ACSN | String(4) | 是 | 链AC号(不能超过4位 格式小写字母或数字组合)。此处填写的是意向AC号,最终由超级节点签发的为准。 |
resolveServiceList | Object | 否 | 解析服务对象列表 |
resolveServiceList.ipv4[i].ip | String(64) | 否 | IPv4地址 |
resolveServiceList.ipv4[i].port | String(5) | 否 | 服务端口 |
resolveServiceList.ipv4[i].remark | String(128) | 否 | 备注信息 |
resolveServiceList.ipv6[i].ip | String(64) | 否 | IPv6地址 |
resolveServiceList.ipv6[i].port | String(5) | 否 | 服务端口 |
resolveServiceList.ipv6[i].remark | String(128) | 否 | 备注信息 |
resolveServiceList.url[i].address | String(255) | 否 | URL地址,HTTP,HTTPS开始,不支持IP,以"/"为结尾 |
resolveServiceList.url[i].remark | String(128) | 否 | 备注信息 |
contacts | Object | 否 | 联系人信息 |
contacts.name | String(20) | 否 | 联系人名称 |
contacts.phoneNum | String(12) | 否 | 联系电话 |
contacts.mail | String(30) | 否 | 联系人邮箱 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
blobId | String | blobId |
txHash | String | 链上交易hash |
blob | String | blob串 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/apply/blob
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MjU2OTEwLCJiaWQiOiJkaWQ6YmlkOmVmaXV5cXVHV1R2UkVzWTltclZvS1ZoRmU1Wkp4WmRSIn0.0nUb20tqYIhcD-cS_a6YCGFM9AwZDyB7x_MFeIQv_Pc",
"params": {
"backboneNodeBid":"did:bid:ef28pM9MG3TGXGyWAW4JpWCFsJDd5MBnc",
"chainInfo":{
"subChainType": "0",
"chainArch": "10000",
"industry": "A",
"name": "openapi测试链",
"genesisAmount": "123",
"genesisAccount": "did:bid:2hTooMvcA4Xr7aAnFH7gT2Z5o67XER7",
"unit": "unit",
"precision": "1",
"baseReserve": "100",
"feeGasPrice": "1000",
"rewardInitValue": "10000",
"genesisSlogan": "genesisSlogan",
"description": "description",
"gatewayNodeList":["did:bid:ef248yRNC7XjBepsy631wV42q8RW96nX", "did:bid:efixsfN3agXnM8JVWa7Hh9PmAi3EuirM"],
"gatewayCrossList":[""did:bid:ef448yRNC7XjBepsy631wV42q8RW96nX", "did:bid:efixsfN7agXnM8JVWa7Hh9PmAi3EuirM""],
"remark": "remark"
},
"system":{
"visitUrl": "http://www.baidu.com",
"ACSN": "t700",
"publicStatus": "0"
},
"resolveServiceList":{
"ipv4": [{
"ip": "192.168.1.1",
"port": "18122",
"remark": "4444"
},
{
"ip": "192.168.2.2",
"port": "18122",
"remark": "55555"
}
],
"ipv6": [{
"ip": "1111:0410:0000:1234:FB00:1400:5000:45FF",
"port": "18122",
"remark": "aaa"
},
{
"ip": "2222:0410:0000:1234:FB00:1400:5000:45FF",
"port": "18122",
"remark": "bbb"
}
],
"url": [{
"address": "",
"remark": ""
}]
}
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"data":{
"blobId": "2",
"txHash": "985ac10a6cda2f4b6c910f11bffed35fa504e53125c045d1fbbade6b335da50",
"blob":"A296469643A6269643A6652665770673644675A6B3232346F7A5570644343654C5A6231394635705238511001225A080712296469643A6269643A666D6E7A42315A724156375966727933665759795071646B6A57776F7458635258622B0A296469643A6269643A6841706E5959474C4550614678467A35543946383374485A6242474338483776513080DAC40938E807"
},
"errorCode": 0,
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
3.1.2 申请子链提交交易(上链)
接口说明:
对blob数据进行签名(参考 签名算法 章节),并提交至主链执行上链操作;上链完成后由超级节点对申请信息进行审核,并为子链签发AC号。
请求参数:
用于将申请子链流程提交至主链并上链存储,请示参数由3.1.1接口中获取,参数如下:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
blobId | String(19) | 是 | blobID |
signerList | List | 是 | 签名者列表(骨干节点签名) |
signerList.signBlob | String(128) | 是 | 签名串(骨干节点对blob进行签名) |
signerList.publicKey | String(128) | 是 | 签名者公钥(骨干节点公钥) |
返回数据:
(1)成功:
返回的交易哈希,可通过3.2接口查询子链申请详情。
字段名 | 类型 | 描述 |
---|---|---|
txHash | String | 链上交易hash |
errorCode | int | 0 |
message | String | 成功 |
(2)失败:
说明调用接口失败,请参考错误码执行下一步操作。
字段名 | 类型 | 描述 |
---|---|---|
errorcode | int | 错误码,如940000 |
message | String | 错误信息,如系统内部错误 |
示例:
(1)提交获取到的申请子链blob数据,示例如下:
http请求方式:POST
https://{url}/v1/chain/apply/submit
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MjU2OTEwLCJiaWQiOiJkaWQ6YmlkOmVmaXV5cXVHV1R2UkVzWTltclZvS1ZoRmU1Wkp4WmRSIn0.0nUb20tqYIhcD-cS_a6YCGFM9AwZDyB7x_MFeIQv_Pc",
"params": {
"blobId": "144",
"blob":"",
"signerList": [{
"signBlob": "5DFE2A2136B49321DDB7F5E83B23B27BE3E05FBCE8240782EE75BF592D53C7EEFEDF1D7CCA33FC8FE972E94FA67E3D083E58DFCC81E4DF78DC3B910341413701",
"publicKey": "b065660ae694d678de4d648e04f4b86247fae59cef3590da8370664a520d9aaaaf1de3"
}]
}
}
(2)返回结果示例:
a. 成功:
接口调用成功,则返回JSON数据示例如下:
{
"data":{
"txHash": "985ac10a6cda2f4b6c910f11bffed35fa504e53125c045d1fbbade6b335da50"
},
"errorCode": "0",
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
3.2 查询子链申请状态
接口说明:
骨干节点可通过该接口查询子链申请状态,用于子链申请进度跟踪。
请求参数:
将在3.1.2中申请子链时返回的交易哈希通过接口进行查询,参数信息如下:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
txHash | String(64) | 是 | 链上交易hash |
返回数据:
(1)成功:
接口将结果返回给骨干节点,返回数据见下表:
字段名 | 类型 | 描述 |
---|---|---|
ACSN | String | AC号 |
status | String | 状态(0待审核,1审核通过,2审核不通过) |
errorCode | int | 0 |
message | String | 成功 |
(2)失败:
说明调用接口失败,请参考错误码执行下一步操作。
字段名 | 类型 | 描述 |
---|---|---|
errorCode | int | 940000 |
message | String | 失败 |
示例:
(1)骨干节点可通过该接口查询子链申请状态,示例如下:
http请求方式:POST
https://{url}/v1/chain/apply/status
{
"accessToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
"params":{
"txHash": "985ac10a6cda2f4b6c910f11bffed35fa504e53125c045d1fbbade6b335da50"
}
}
(2)返回结果示例:
a. 成功:
接口调用成功,则返回JSON数据示例如下:
{
"data":{
"ACSN":"by01",
"status":"1"
},
"errorCode": 0,
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
3.3查询链信息
接口说明:
骨干节点通过该接口可查询其申请子链的信息,便于骨干节点对其子链信息查询和校验。
请求参数:
通过向接口请求子链AC号,获取该子链信息;若不填写具体AC号,则获取该骨干节点下属所有子链信息。
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 否 | AC号 |
返回数据:
(1)成功:
接口调用成功,将结果返回给骨干节点,返回数据见下表:
字段名 | 类型 | 描述 |
---|---|---|
chainList | List | 链列表 |
ACSN | String | 链AC号 |
name | String | 链名称 |
chainType | String | 链类型 0是子链,1是骨干链 |
chainArch | String | 链架构 10000:BIF-CORE、10001:Fabric、10002:Ethereum、 10003:BubiChain、10004:Quorum、10005:Xuperchain、10006:cita 、 10007:FISCO、10008:其他 |
createTime | Long | 链创建时间(时间戳 毫秒) |
industryType | String | 行业类型 |
genesisBid | String | 创世账户BID |
genesisInitValue | Long | 创世账户初始化积分数 |
baseReserve | Long | 账户最小积分保留数 |
gasPrice | Long | 最小积分单价 |
firstReward | Long | 首次出块奖励数 |
introduce | String | 区块链介绍 |
version | String | 区块链版本号 |
backboneNodeBid | String | 骨干节点地址 |
(2)失败:
调用接口失败,返回失败信息。请参考错误码执行下一步操作。
字段名 | 类型 | 描述 |
---|---|---|
errorCode | int | 错误码 |
message | String | 接口调用失败信息 |
示例:
(1)数据骨干节点通过该接口可查询其所申请子链的信息,接口示例如下:
http请求方式:POST
https://{url}/v1/chain/list
{
"accessToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
"params":{
"ACSN":"by01"
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例如下:
{
"errorCode": 0,
"message": "操作成功",
"data": {
"chainList": [
{
"ACSN": "by01",
"name": "营口子链",
"chainType": "0",
"createTime": 1606457957000,
"industryType": "B",
"genesisBid": "",
"genesisInitValue": null,
"baseReserve": "100000000",
"gasPrice": "1",
"firstReward": "100000000",
"introduce": "descirbe-营口子链",
"version": "V1.0.0",
"chainArch": "10000",
"backboneNodeBid": "did:bid:ef28pM9MG3TGXGyWAW4JpWCFsJDd5MBnc"
}
]
}
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940033,
"message": "链码不存在"
}
3.4用户备案
接口说明:
通过该接口,将骨干节点用户及其下属子链用户信息同步到主链,用于超级节点备案管理。
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
bid | String(64) | 是 | 子链数字身份bid |
ACSN | String(4) | 是 | 所属AC号 |
userType | String(4) | 是 | 101人 102企业 |
userName | String(100) | 否 | 用户名 |
userPublicKey | String(100) | 是 | 用户公钥 |
registerTime | Long | 是 | 注册时间(时间戳 单位毫秒) |
linkPhone | String | 否 | 联系电话 |
返回数据:
(1)成功:
用户信息备案成功,返回成功信息:
字段名 | 类型 | 描述 |
---|---|---|
errorCode | int | 0 |
message | String | 成功 |
(2)失败:
用户信息备案失败,返回失败信息。请参考错误码执行下一步操作。
字段名 | 类型 | 描述 |
---|---|---|
errorCode | int | 940000 |
message | String | 失败 |
示例:
(1)用户信息同步至主链,示例如下:
http请求方式:POST
https://{url}/v1/chain/user/record
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MjY0OTI4LCJiaWQiOiJkaWQ6YmlkOmVmaXV5cXVHV1R2UkVzWTltclZvS1ZoRmU1Wkp4WmRSIn0.hTw23Ihi49nuX94Am_f5nKdIrrW6X09QAXIJk96LZBw",
"params": {
"bid": "did:bid:by01:efHAvQztBKA7hT2BgHLeqtez5QQ964w8",
"ACSN":"by01",
"userType": "101",
"userName": "张三",
"userPublicKey": "b065660ad4b4d603c6794115a6749a4b7ea9987fb61f457680b8751c5c12dab9c1a19e",
"registerTime":1624521999286
}
}
(2)返回结果示例:
a. 用户信息备案成功,则返回JSON数据示例如下:
{
"errorCode": 0,
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
3.5活跃用户同步记录
接口说明:
通过该接口将骨干节点下属子链用户(该用户需在星火·链网主链备案)的登录记录同步至主链
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
loginRecordList | list(100) | 是 | 用户登录列表 |
loginRecordList.bid | String(64) | 是 | 子链数字身份bid |
loginRecordList.loginTime | Long | 是 | 登录时间 |
返回数据:
(1)成功:
用户登录记录同步成功,返回成功信息:
字段名 | 类型 | 描述 |
---|---|---|
errorCode | int | 0 |
message | String | 成功 |
(2)失败:
用户登录记录同步失败,返回失败信息。请参考错误码执行下一步操作。
字段名 | 类型 | 描述 |
---|---|---|
errorCode | int | 940000 |
message | String | 失败 |
示例:
(1)用户登录记录同步至主链,示例如下:
http请求方式:POST
https://{url}/v1/chain/user/login/record
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MjY0OTI4LCJiaWQiOiJkaWQ6YmlkOmVmaXV5cXVHV1R2UkVzWTltclZvS1ZoRmU1Wkp4WmRSIn0.hTw23Ihi49nuX94Am_f5nKdIrrW6X09QAXIJk96LZBw",
"params": {
"loginRecordList":[
{
"bid": "did:bid:by01:efHAvQztBKA7hT2BgHLeqtez5QQ964w8",
"loginTime":1624521999286
}
]
}
}
(2)返回结果示例:
a. 用户信息备案成功,则返回JSON数据示例如下:
{
"errorCode": 0,
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
3.6 查询用户入链申请列表
接口说明:
骨干节点可向主链查询骨干节点子链的入链申请用户列表
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 是 | AC号 |
auditStatus | Integer | 是 | 审核状态(0待审核、1通过、2不通过) |
pageStart | Integer | 否 | 开始页 默认1 |
pageSize | Integer | 否 | 每页条数 默认100条 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
inchainApplyList | List | 入链列表 |
inchainApplyList.applyNo | String | 申请编号 |
inchainApplyList.ACSN | String | 申请子链的AC号 |
inchainApplyList.userBid | String | 用户主链Bid |
inchainApplyList.applyTime | String | 申请时间 |
inchainApplyList.applyRemark | String | 申请备注 |
inchainApplyList.auditStatus | String | 审核状态(0待审核、1通过、2不通过) |
page | Object | 分页对象 |
page.pageSize | Integer | 每页条数 |
page.pageStart | Integer | 开始页 |
page.pageTotal | Integer | 总条数 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/inchain/apply/list
{
"accessToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
"params":{
"ACSN":"by01",
"auditStatus":1,
"pageStart":1,
"pageSize":20
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": 0,
"message": "操作成功",
"data": {
"inchainApplyList": [{
"applyNo": "20210407001",
"ACSN": "by01",
"userBid": "did:bid:efhbk6Y1kF7SuuvT2389JExuQtUVEX4n",
"applyTime": 1618195086782,
"applyRemark": ""
}],
"page": {
"pageSize": 20,
"pageStart": 1,
"pageTotal": 4
}
}
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
3.7用户入链申请状态同步
接口说明:
骨干节点可向主链查询骨干节点子链的入链申请用户列表,骨干节点可以审核这些入链申请的用户,并将审核的结果同步到主链
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
applyNo | String(32) | 是 | 申请编号 |
ACSN | String(4) | 是 | AC号 |
auditStatus | String(2) | 是 | 审核状态(0待审核、1通过、2不通过) |
返回数据:
类型 | 字段名 | 描述 |
---|---|---|
Integer | errorCode | 错误码 |
String | message | 错误描述 |
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/inchain/status/syn
{
"accessToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
"params":{
"ACSN":"by01",
"applyNo":"20210407001",
"auditStatus":"1"
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": 0,
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
3.8 链标识数据同步
接口说明:
用于将子链的标识数据上报到主链(要求每5分钟同步一次。将5分钟内的标识数据同步上来)
3.8.1 标识数据详情上报
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
identList | List | 是 | 标识列表 |
identList.identListACSN | String(4) | 是 | AC号 |
identList.identListName | String(64) | 是 | 标识名称 |
identList.identListidentBid | String(64) | 是 | 标识bid |
identList.identListRegisterTime | Long | 是 | 标识注册时间(时间戳 毫秒) |
identList.identListuserBid | String(64) | 是 | 标识所属企业或者用户bid |
identList.identListuserName | String(64) | 否 | 标识所属企业或者用户的名称 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
code | Integer | 状态码 200成功 其他异常 |
msg | String |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/bdp/bidServer/uploadDataInfoDetail
{
"accessToken":
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJkaWQ6YmlkOmVmbXlnZFJpSm1uT
XN4bkJzYUZzMUFMcXoyRFVjazZjIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjYwMTIwMzQ1LCJi
aWQiOiJkaWQ6YmlkOmVmSDNLTDdicm5IZzFMVXk0RHVVRGI1RWNlM21maU1jIn0.pnm_i1pAVHdze8y
qJADPufL9x8nPQjUYLD1dw7o889A",
"params": {
"identList": [{
"identListACSN": "by01",
"identListName": "桌子",
"identListIdentBid": "23",
"identListRegisterTime": 54,
"identListUserBid": "56",
"identListUserName": "万丽"
}, {
"identListACSN": "by02",
"identListName": "已花直共引",
"identListIdentBid": "100",
"identListRegisterTime": 41,
"identListUserBid": "44",
"identListUserName": "曾娟"
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"code": "200",
"msg": "成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"code": 10001,
"msg": "调⽤接⼝异常,请联系管理员"
}
{
"code": 10002,
"msg": "数据格式错误,请检查输⼊参数"
}
{
"code": 10003,
"msg": "集合数据不能超过50条"
}
3.8.2 标识统计数据上报
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
identStatisticsList | List | 是 | 标识数据 |
identStatisticsList.identRegAmt | Integer | 是 | 标识注册量 |
identStatisticsList.startTime | Long | 是 | 开始时间 |
identStatisticsList.endTime | Long | 是 | 结束时间 |
identStatisticsList.identListACSN | String | 是 | AC号 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
code | Integer | 状态码 200成功 其他异常 |
msg | String |
示例:
(1)请求示例:
http请求⽅式:POST
http://{url}/bdp/bidServer/uploadDateStatistics
{
"accessToken":
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJkaWQ6YmlkOmVmbXlnZFJpSm1uT
XN4bkJzYUZzMUFMcXoyRFVjazZjIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjYwMTIwMzQ1LCJi
aWQiOiJkaWQ6YmlkOmVmSDNLTDdicm5IZzFMVXk0RHVVRGI1RWNlM21maU1jIn0.pnm_i1pAVHdze8y
qJADPufL9x8nPQjUYLD1dw7o889A",
"params": {
"identStatisticsList": [{
"identRegAmt": 17,
"startTime": 673233721005,
"endTime": 1061340722561,
"identListACSN": "8"
}, {
"endTime": 1535247813331,
"startTime": 47828390839,
"identListACSN": "4",
"identRegAmt": 68
}]
}
}
(2)返回结果示例:
a. 接⼝调⽤成功,则返回JSON数据示例为:
{
"code": 200, "msg": "成功"
}
b. 接⼝调⽤失败,则返回JSON数据示例为:
{
"code": 10001,
"msg": "调⽤接⼝异常,请联系管理员"
}
{
"code": 10002,
"msg": "数据格式错误,请检查输⼊参数"
}
{
"code": 10003,
"msg": "集合数据不能超过50条"
}
3.9 链标识解析数据同步
接口说明:
用于子链解析标识数据记录上报到主链(要求每5分钟同步一次。将5分钟内的解析标识数据同步上来)
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
identAnalysisList | List | 是 | 标识解析列表 |
identAnalysisList.ACSN | String(4) | 是 | AC号 |
identAnalysisList.recordId | String(32) | 是 | 解析记录ID唯一(最长32位,所属子链下唯一即可) |
identAnalysisList.identBid | String(64) | 是 | 标识bid |
identAnalysisList.analysisTime | Long | 是 | 标识解析时间(Unix时间戳 毫秒) |
identAnalysisList.userBid | String(64) | 是 | 解析用户bid |
identAnalysisList.userName | String(64) | 否 | 解析用户的名称 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
errorCode | Integer | 错误码 |
message | String | 错误描述 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/identAnalysis/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJkaWQ6YmlkOmVmb1R5cHVUeFloR25vNkM2V0JYeG9TZVo4SjJCaFRHIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjI5ODkwNTgzLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.N9Bh-m965GLDtV0lrscUSiXY-cLXyepqEfvFmj91gDY",
"params": {
"identAnalysisList": [{
"ACSN": "by01",
"recordId": "21af7f1398edbcc9a71eff24311",
"identBid": "did:bid:by01:efphXYwrDzCgE5RTCC1HesQKJvyDrQDm",
"analysisTime": 1593338217000,
"userBid": "did:bid:ef76xXoCF9xXqkhgSadKK3vy5khZR8sn",
"userName": ""
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": "0",
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
3.10 链应用服务信息同步
接口说明:
子链应用服务信息同步到主链(要求每5分钟同步一次。将5分钟内的子链应用服务信息同步上来)
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 是 | 子链AC号 |
businessType | Integer | 是 | 业务类型:1溯源,2存证,3供应链金融 20 其他 |
dataType | Integer | 是 | 数据类型: 当业务类型为溯源时,1-溯源产品记录、2-生产环节记录; 当业务类型为存证时,1-存证作品记录、2-作品权利列表、3-作品侵权列表; 当业务类型为供应链金融时,1-参与主体记录、2-供应链金融流程记录 |
dataList | Array | 是 | 数据数组 |
dataList.key | String(64) | 是 | 记录ID,用于标记同步的某条数据 |
dataList.time | Long | 是 | 毫秒级时间戳,用于数据查询时排序 |
dataList.value | Object | 是 | 业务数据对象,具体结构详见后表 |
1) 溯源类应用服务同步数据
1.1)同步溯源产品记录:
http请求方式:POST
https://{url}/v1/chain/appService/info/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "cc11",
"businessType": 1,
"dataType": 1,
"dataList": [{
"key": "{key}",
"time": 1593338217000,
"value": {
"name": "名称",
"type": "名称",
"num": "123",
"creator": "123",
"time": 1593338217000,
"picture": ""
}
}]
}
}
业务数据对象:溯源类产品记录核心字段说明
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
name | String | 是 | 产品名称 |
type | String | 是 | 业务类型 |
time | Integer | 是 | 毫秒级时间戳,生成时间 |
num | String | 是 | 产品信息编号,子链上唯一 |
creator | String | 是 | 创建用户 |
picture | String | 是 | 产品图片 |
1.2)同步生产环节记录:
http请求方式:POST
https://{url}/v1/chain/appService/info/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "cc11",
"businessType": 1,
"dataType": 1,
"dataList": [{
"key": "{key}",
"time": 1593338217000,
"value": {
"productName": "名称",
"stepName": "名称",
"stepType": 0,
"infoType": 0,
"operator": "123",
"lastOps": "123",
"totalOps": 89,
"blockHeight": 78668,
"txHash": "{txHash}",
"lastStatus": 0,
"time": 1593338217000,
"num": ""
}
}]
}
}
业务数据对象:溯源类生产环节记录核心字段说明
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
productName | String | 是 | 产品名称 |
stepName | String | 是 | 环节名称 |
stepType | Integer | 是 | 环节类型,0:生产 1:加工 2:运输 3:销售 |
infoType | Integer | 是 | 录入信息,0:产品信息 1:生产信息 2:溯源信息 3:溯源码导出 |
operator | String | 是 | 操作人员名称 |
lastOps | String | 是 | 最近操作 |
totalOps | Integer | 是 | 操作总数 |
blockHeight | Integer | 是 | 区块高度 |
txHash | String | 是 | 交易哈希 |
time | Integer | 是 | 毫秒级时间戳,记录时间 |
lastStatus | Integer | 是 | 最近状态, 0:操作中 1:已完成 |
num | String | 是 | 产品信息编号,子链上唯一 |
2) 存证类应用服务同步数据
2.1)同步存证作品记录:
http请求方式:POST
https://{url}/v1/chain/appService/info/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "cc11",
"businessType": 2,
"dataType": 1,
"dataList": [{
"key": "{key}",
"time": 1593338217000,
"value": {
"name": "名称",
"businessType": "",
"type": 0,
"nature": 0,
"creator": "贾平凹",
"notaryOffice": "陕西省文学认证机构",
"issueStatus": 1,
"blockHeight": 148838,
"txHash": "590f278351091ed924e70f7611558bae0b7d6faaade3f3cc8ad16c1242573fa3",
"time": 1623032433,
"num": "ffd6baaed492b3195764b4b2febfde73"
}
}]
}
}
业务数据对象:(存证业务)存证作品列表核心字段说明
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
name | String | 是 | 作品名称 |
businessType | String | 是 | 业务类型 |
type | Integer | 是 | 作品类别,0:文学 1:歌曲 2:视频 3:电影 4:其他 |
nature | Integer | 是 | 作品性质, 0:原创 1:改编 2:翻译 3:汇编 4:注释 5:整理 6:其他 |
creator | String | 是 | 作者名称 |
notaryOffice | String | 是 | 公证机构 |
issueStatus | Integer | 是 | 发表状态,0:未发表,1:已发表 |
blockHeight | Integer | 是 | 区块高度 |
txHash | String | 是 | 交易哈希 |
time | Integer | 是 | 存证时间(Unix时间戳 毫秒) |
num | String | 是 | 作品编号,子链上唯一 |
2.2)同步作品权利列表:
http请求方式:POST
https://{url}/v1/chain/appService/info/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "cc11",
"businessType": 2,
"dataType": 1,
"dataList": [{
"key": "{key}",
"time": 1593338217000,
"value": {
"name": "名称",
"rightName": [{
"type": 0,
"trans": "张三",
"proxies":[{
"key":"{key}",
"value":"{value}"
}]
}],
"time": 1593338217000,
"num": "11e9c0a13f2cef98d366929de72be286"
}
}]
}
}
业务数据对象:(存证业务)作品权利列表核心字段说明
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
name | String | 是 | 作品名称 |
rightName | List | 是 | 权益名称 |
rightName.type | Integer | 是 | 权利类型,0:复制权、1:发行权、2:出租权、3:展览权、4:表演权、5:放映权、6:广播权、7:信息网络传播权、8:摄影权、9:改编权、10:翻译权、11:汇编权、12:其他权利 |
rightName.trans | String | 是 | 转让人 |
rightName.proxies | Map |
是 | 代理人列表,Map结构的key用于排序 |
time | Integer | 是 | 权益创建时间 (Unix 时间戳 毫秒) |
num | String | 是 | 作品编号,子链上唯一 |
2.3)同步作品侵权列表:
http请求方式:POST
https://{url}/v1/chain/appService/info/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "cc11",
"businessType": 2,
"dataType": 1,
"dataList": [{
"key": "{key}",
"time": 1593338217000,
"value": {
"name": "名称",
"website": "",
"blockHeight": 869855,
"txHash": "5016e1e7cca7b83c3d0a89d90e01e50ed587d2a6b6fbabae9105584015c9ab87",
"certHash": "15970183d8aa7538bf06030f7784f91e220a6d05b80c6aedeb89e030756e26b3",
"time": 1593338217000,
"num": "11e9c0a13f2cef98d366929de72be286"
}
}]
}
}
业务数据对象:(存证业务)作品侵权列表核心字段说明
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
name | String | 是 | 作品名称 |
website | String | 是 | 侵权网站 |
blockHeight | Integer | 是 | 区块高度 |
txHash | String | 是 | 交易哈希 |
time | Integer | 是 | 取证时间(Unix 时间戳 毫秒) |
num | String | 是 | 作品编号,子链上唯一 |
certHash | String | 是 | 证书哈希 |
3) 供应链金融类应用服务同步数据
3.1)同步参与主体记录:
http请求方式:POST
https://{url}/v1/chain/appService/info/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "cc11",
"businessType": 2,
"dataType": 1,
"dataList": [{
"key": "{key}",
"time": 1593338217000,
"value": {
"name": "名称",
"type": 0,
"quota": 869855,
"invoiceAmount": "5487",
"financingAmount": "3453",
"time": 1593338217000,
"repaymentAmount": "3456",
"overdueAmount": "4234",
"blockHeight": 499884
}
}]
}
}
业务数据对象:(供金业务)参与主体列表核心字段说明
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
name | String | 是 | 主体名称,子链上唯一 |
type | Integer | 是 | 主体类型, 0:国有企业 1:私有企业 2:国外企业 3:其他 |
quota | String | 是 | 授信额度 |
invoiceAmount | String | 是 | 开具金额 |
financingAmount | String | 是 | 融资金额 |
repaymentAmount | String | 是 | 还款金额 |
overdueAmount | String | 是 | 逾期金额 |
time | Integer | 是 | 毫秒级时间戳,上链时间 |
blockHeight | Integer | 是 | 区块高度 |
3.2)同步供应链金融流程记录:
http请求方式:POST
https://{url}/v1/chain/appService/info/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "cc11",
"businessType": 2,
"dataType": 1,
"dataList": [{
"key": "{key}",
"time": 1593338217000,
"value": {
"amount": "名称",
"num": "0d77d483634cd4e8e4ddd712e0a15910",
"type": 0,
"from": "did:bid:eftnSnkPZQhoUnaySFhKgGAuK4gxUeFc",
"to": "did:bid:efhX1bSmnC8pwd7KW8SHxeFLQYB6UwTg",
"preNum": "07d38c31850033fff867094cf05b8308",
"status": 0,
"txHash": "9b687618d61a61e3c9caaf8039f486a3b6be8f87447935200f9bc810930298e5",
"blockHeight": 499884,
"time": 1593338217000
}
}]
}
}
业务数据对象:(供金业务)供金流程列表
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
amount | String | 是 | 资金额 |
num | String | 是 | 单据编号 |
type | Integer | 是 | 流程类型,0:授信 1:开具 2:融资 3:转让 4:还款 |
from | String | 是 | 转出主体名称 |
to | String | 是 | 转入主体名称 |
preNum | String | 是 | 上一环节编号 |
status | Integer | 是 | 状态,0:未完成 1:已完成 |
txHash | String | 是 | 交易哈希 |
blockHeight | Integer | 是 | 区块高度 |
time | Integer | 是 | 上链时间(Unix时间戳 毫秒) |
3.11更新子链接口
3.11.1获取更新子链blob
接口说明:
提交更新子链的材料,获取更新子链的blob数据(blob是星火·链网上交易结构序列化后的十六进制格式),用于执行更新信息上链
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
backboneNodeBid | String(64) | 是 | 骨干节点bid |
ACSN | String(8) | 是 | 要进行修改的链的链码 |
contacts | object | 否 | 联系人对象 |
contacts.name | string(20) | 否 | 联系人姓名 |
contacts.phoneNum | string(12) | 否 | 联系人电话 |
contacts.mail | string(30) | 否 | 联系人邮箱 |
chainInfo | object | 否 | 要进行修改的链信息对象 |
chainInfo.industry | string(4) | 否 | 链行业类型(见第10节行业类型) |
chainInfo.name | string(30) | 否 | 子链名称 |
chainInfo.architectureId | string(10) | 否 | 链架构id: 链架构 10000:BIF-CORE、10001:Fabric、10002:Ethereum、 10003:BubiChain、10004:Quorum、10005:Xuperchain、10006:cita 、 10007:FISCO、10008:其他 |
chainInfo.genesisAmount | string(30) | 否 | 创世账户token总数 |
chainInfo.unit | string(32) | 否 | token单位 |
chainInfo.precision | String(30) | 否 | token精度 |
chainInfo.baseReserve | string(30) | 否 | token保留数 |
chainInfo.feeGasPrice | string(30) | 否 | 最低燃料单价 |
chainInfo.rewardInitValue | string(30) | 否 | 出块奖励 |
chainInfo.genesisSlogan | string(1024) | 否 | 子链slogan |
chainInfo.description | string(1024) | 否 | 子链介绍 |
chainInfo.gatewayNodeList | Array | 否 | 数据网关列表(需要填写主链的BID) |
chainInfo.gatewayCrossList | Array | 否 | 跨链网关列表(需要填写主链的BID。建议数据网关和跨链网关使用不同的BID账号,否则开发者在多个服务中并发交易时,可能出现交易上链失败问题) |
system | object | 否 | 链系统信息 |
system.visitUrl | string(255) | 否 | 子链入口 |
system.publicStatus | string(2) | 否 | 开发许可 |
resolveServiceList | Object | 否 | 解析服务对象列表 |
resolveServiceList.ipv4[i].ip | String(64) | 否 | IPv4地址 |
resolveServiceList.ipv4[i].port | String(5) | 否 | 服务端口 |
resolveServiceList.ipv4[i].remark | String(128) | 否 | 备注信息 |
resolveServiceList.ipv6[i].ip | String(64) | 否 | IPv6地址 |
resolveServiceList.ipv6[i].port | String(5) | 否 | 服务端口 |
resolveServiceList.ipv6[i].remark | String(128) | 否 | 备注信息 |
resolveServiceList.url[i].address | String(255) | 否 | URL地址,HTTP,HTTPS开始,不支持IP,以"/"为结尾 |
resolveServiceList.url[i].remark | String(128) | 否 | 备注信息 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
blobId | String | blobId |
txHash | String | 链上交易hash |
blob | String | blob串 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/update/blob
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"backboneNodeBid":"did:bid:ef28pM9MG3TGXGyWAW4JpWCFsJDd5MBnc",
"ACSN":"by01",
"contacts":{
"name":"dongzhiwei",
"phoneNum":"15555555555",
"mail":"dongzhiwei@qq.com"
},
"chainInfo":{
"architectureId": "10000",
"industry": "A",
"name": "openapi测试链",
"genesisAmount": "123",
"unit": "unit",
"precision": "1",
"baseReserve": "100",
"feeGasPrice": "1000",
"rewardInitValue": "10000",
"genesisSlogan": "genesisSlogan",
"description": "description",
"gatewayNodeList":["did:bid:ef248yRNC7XjBepsy631wV42q8RW96nX", "did:bid:efixsfN3agXnM8JVWa7Hh9PmAi3EuirM"],
"gatewayCrossList":[""did:bid:ef448yRNC7XjBepsy631wV42q8RW96nX", "did:bid:efixsfN7agXnM8JVWa7Hh9PmAi3EuirM""],
},
"system":{
"visitUrl": "http://www.baidu.com",
"publicStatus": "0"
},
"resolveServiceList":{
"ipv4": [{
"ip": "192.168.1.1",
"port": "18122",
"remark": "4444"
},
{
"ip": "192.168.2.2",
"port": "18122",
"remark": "55555"
}
],
"ipv6": [{
"ip": "1111:0410:0000:1234:FB00:1400:5000:45FF",
"port": "18122",
"remark": "aaa"
},
{
"ip": "2222:0410:0000:1234:FB00:1400:5000:45FF",
"port": "18122",
"remark": "bbb"
}
],
"url": [{
"address": "",
"remark": ""
}]
}
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"data":{
"blobId": "232975729572",
"txHash": "985ac10a6cda2f4b6c910f11bffed35fa504e53125c045d1fbbade6b335da50",
"blob":"A296469643A6269643A6652665770673644675A6B3232346F7A5570644343654C5A6231394635705238511001225A080712296469643A6269643A666D6E7A42315A724156375966727933665759795071646B6A57776F7458635258622B0A296469643A6269643A6841706E5959474C4550614678467A35543946383374485A6242474338483776513080DAC40938E807"
},
"errorCode": 0,
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
3.11.2更新子链提交交易(上链)
接口说明:
对blob数据进行签名(参考 签名算法 章节),并提交至主链执行上链操作;上链完成后由超级节点对更新信息进行审核。
请求参数:
用于将更新子链流程提交至主链并上链存储,请示参数由3.11.1接口中获取,参数如下:
字段名 | 类型 | 是否必填 | 描述 | |
---|---|---|---|---|
blobId | String(19) | 是 | blobID | |
signerList | List | 是 | 签名者列表(骨干节点签名) | |
signerList.signBlob | String(128) | 是 | 签名串(骨干节点对blob进行签名) | |
signerList.publicKey | String(128) | 是 | 签名者公钥(骨干节点公钥) |
返回数据:
(1)成功:
返回的交易哈希
字段名 | 类型 | 描述 |
---|---|---|
txHash | String | 链上交易hash |
errorCode | int | 0 |
message | String | 成功 |
(2)失败:
说明调用接口失败,请参考错误码执行下一步操作。
字段名 | 类型 | 描述 |
---|---|---|
errorcode | int | 错误码,如940000 |
message | String | 错误信息,如系统内部错误 |
示例:
(1)提交获取到的更新子链blob数据,示例如下:
http请求方式:POST
https://{url}/v1/chain/update/submit
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MjU2OTEwLCJiaWQiOiJkaWQ6YmlkOmVmaXV5cXVHV1R2UkVzWTltclZvS1ZoRmU1Wkp4WmRSIn0.0nUb20tqYIhcD-cS_a6YCGFM9AwZDyB7x_MFeIQv_Pc",
"params": {
"blobId": "144",
"blob":"",
"signerList": [{
"signBlob": "5DFE2A2136B49321DDB7F5E83B23B27BE3E05FBCE8240782EE75BF592D53C7EEFEDF1D7CCA33FC8FE972E94FA67E3D083E58DFCC81E4DF78DC3B910341413701",
"publicKey": "b065660ae694d678de4d648e04f4b86247fae59cef3590da8370664a520d9aaaaf1de3"
}]
}
}
(2)返回结果示例:
a. 成功:
接口调用成功,则返回JSON数据示例如下:
{
"data":{
"txHash": "985ac10a6cda2f4b6c910f11bffed35fa504e53125c045d1fbbade6b335da50"
},
"errorCode": "0",
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}