4 底层链锚定
通过该接口由骨干链或子链底层数据锚定至主链,确保数据不可篡改。
4.1 链基础信息同步
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 是 | 子链AC号 |
name | String(128) | 是 | 链名称 |
chainType | String | 是 | 链架构类型,10000:星火·链网、10001:Fabric、10002:Ethereum 10003:BubiChain、10004:Quorum,10005:Xuperchain,10006:cita , 10007:FISCO |
time | Long | 是 | 链申请时间/建设时间 (Unix时间戳 毫秒) |
backBoneNodeBid | String(64) | 是 | 申请子链的骨干节点BID,bid不带ACSN |
industryType | String(1) | 是 | 所属行业类型值,见行业类型10 |
trafficWarning | Long | 是 | 节点网络流量告警值,单位字节 |
trafficOverload | Long | 是 | 节点网络流量过载值,单位字节 |
consensus | String(128) | 是 | 区块链共识机制, 如 POW 或 DPOS 或 DPOS + PBFT (自定义填写) |
genesisBid | String(128) | 否 | 创世账户地址 |
genesisInitValue | String(30) | 否 | 创世账户初始化TOKEN数 |
baseReserve | String(30) | 否 | 账户最小TOKEN保留数 |
gasPrice | String(30) | 否 | 最小TOKEN单价 |
firstReward | String(30) | 否 | 首次出块奖励数 |
introduce | String | 否 | 区块链介绍 |
version | String(16) | 是 | 区块链版本号 |
ledgerDB | String(128) | 是 | 支持的账本数据库类型名称(全小写,英文逗号间隔) |
topTps | Integer | 是 | 理论tps峰值 |
organization | String(256) | 是 | 链的运营机构名称 |
explorerUrl | String(256) | 否 | 区块链浏览器地址,如:https://explorer.bif.cn |
defaultDbType | String(20) | 是 | 链上默认账本数据库类型,(规则:全小写,英文逗号间隔,比如leveldb) |
location | Object | 是 | 链的运营机构地理位置 |
location.latitude | String(16) | 是 | 地理位置纬度 |
location.longitude | String(16) | 是 | 地理位置经度 |
location.province | String(32) | 是 | 省、直辖市、自治区,比如:陕西省 |
location.city | String(32) | 是 | 城市,比如:西安市 |
location.district | String(32) | 是 | 区、市、县,比如:雁塔区 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
errorCode | Integer | 错误码 |
message | String | 错误描述 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/info/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjIxNTk0NDQ4LCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.MxWdV-mwCScUq8QwmTXTaxKli8jvXq1sNVvAYQWWsSo",
"params": {
"ACSN": "acc1",
"name": "营口行业链",
"chainType" : "10000",
"time" : 1593338217000,
"backBoneNodeBid" : "did:bid:hHTsFXTTqQfVH1oThGEKf6iwCK2c31Bes",
"industryType" : "A",
"trafficWarning" : 4096,
"trafficOverload" : 8192,
"consensus" : "DPOS+PBFT",
"genesisBid": "did:bid:hHTsFXTTqQfVH1oThGEKf6iwCK2c31Bes",
"genesisInitValue": 100000000,
"baseReserve": 10000000,
"gasPrice": 1000,
"firstReward": 100000000,
"introduce": "",
"version": "1",
"ledgerDB": "rocksdb,tidb,mysql",
"topTps": 1000,
"organization": "信通院",
"explorerUrl": "https://explore.bif.com",
"defaultDbType": "",
"location": {
"latitude": "29.5",
"longitude": "113.4",
"province": "辽宁省",
"city": "营口市",
"district": "渝中区"
}
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": 0,
"message": "成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.2 链个性化信息同步
接口说明:
用于骨干链、异构链数据上报到主链(要求有变动时将数据同步上来)
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 是 | 子链AC号 |
chainType | String(10) | 是 | 链架构类型,10000:星火·链网、10001:Fabric、10002:Ethereum、 10003:BubiChain、10004:Quorum,10005:Xuperchain,10006:cita , 10007:FISCO |
dataType | Integer | 是 | 提交的数据类型,用于区分异构链同步数据,具体使用请按照示例进行 |
dataList | List | 是 | 数据数组 (最大100) |
dataList.key | String(64) | 是 | 数据唯一值,用于更新value |
dataList.value | Object | 是 | 数据对象,具体使用请按照示例进行 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
errorCode | Integer | 错误码 |
message | String | 错误描述 |
示例:
1) Xuperchain链同步数据
1.1)同步总览数据:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc5",
"chainType": "10005", // Xuperchain
"dataType": 1, // 同步总览数据
"dataList": [{
"key": "aaa1",
"value": {
"chainType": "xuperchain",
"chainCnt": 1,
"nodeCnt": 1,
"contractCnt": 10,
"blockHeight": 1,
"createdTime": 1593338217000,
"consensus": ""
}
}]
}
}
1.2)同步权限管理数据:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10005",
"dataType": 2,
"dataList": [{
"key": "",
"value": {
"maxBlockSize": "", // 块大小最大值
"reward": "", // 出块奖励
"declineRate": "", // 奖励衰退率
"blockGap": "", // 出块时间间隔
"turnGap": "", // 提案节点轮换间隔
"voteCost": "", // 投票单元成本
"gas": "", // GAS成本
"initNodeAddr": "", // 初始提案节点地址
}
}]
}
}
1.3)同步平行链列表:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10005",
"dataType": 3,
"dataList": [{
"key": "",
"value": {
"chainID": 123, // chainID
"chainName": "", // 平行链名称
"owner": 1, // 创建者
"fee": 2, // 创建花费utxo
"hasGrp": 2, // 是否有群组
"statue": 0, // 平行链状态
"blockHeight": 1, // 区块高度
"lastModifyTime": date, // 最新修改时间
"createdTime": data, // 创建时间
}
}]
}
}
1.4)同步平行链群组节点白名单列表:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10005",
"dataType": 4,
"dataList": [{
"key": "",
"value": {
"nodeId": "", // node id
"nodeName": "", // 节点名
"host": "", // 域名
"port": 4004, // 端口
}
}]
}
}
1.5)同步合约账号列表
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10005",
"dataType": 5,
"dataList": [{
"key": "",
"value": {
"id": "", // account id
"accountName": "", // 账号名
"privType": "", // 合约权限类型 签名阈值、AKSet签名
"akCnt": "", // AK数量
"deployContractCnt": "", // 部署合约量
"InvokeContractCnt": "", // 调用合约量
"createdTime": date, // 创建时间
"akSet": "", // 基础AK集
}
}]
}
}
1.6)同步背书权重列表
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10005",
"dataType": 6,
"dataList": [{
"key": "",
"value": {
"address": "", // 地址
"weight": 0.1, // 权重
}
}]
}
}
1.7)同步集合列表
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10005",
"dataType": 6,
"dataList": [{
"key": "",
"value": {
"AKSetName": "", // AKSet名称
"addresses": "adress1,adress2", // 地址列表
}
}]
}
}
2) Cita链同步数据
2.1)同步总览数据:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10006",
"dataType": 1,
"dataList": [{
"key":"",
"value":{
"chainType": "CITA", // 区块链类型
"accountCnt": 1, //账号数量
"nodeCnt": 1, //节点数量
"contractCnt": 1, //合约数量
"blockHeight": 1, // 区块高度
"createdTime": 1593338217000, //"2020-06-28 17:56:57",子链建设时间
"consensus": "" // 共识机制
}
}]
}
}
2.2)同步详细配置:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10006",
"dataType": 2,
"dataList": [{
"key": "",
"value": {
"host": "www.cita.chain", //域名
"isAward": false, // 出块激励选择开关(关)
"isInvokeContractCheck": false, // 合约调用权限检查开关(关)
"isTxCheck": false, // 发送交易权限检查开关(关)
"isCreateContactCheck": false, // 创建合约权限检查开关(关)
"token": "", // 通证
"consensusList": [{
"consensus": "ip:port"
}]
}
}]
}
}
2.3)同步高阶服务:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10006",
"dataType": 3,
"dataList": [{
"key": "",
"value": {
"supportSM": 0, // 国密支持 返回0即不支持该服务,返回1即支持该服务
"supportMigrate": 0, //数据迁移 节点容量超过X%时启动,返回0即不支持该服务,返回1-100即支持该服务,且节点容量超过该百分比时启动数据迁移
"supportSGX": 0, //SGX安全防护 返回0即不支持该服务,返回1即支持该服务
"supportOracle": 0 // 预言机 返回0即不支持该服务,返回1即支持该服务
}
}]
}
}
2.4)同步账号统计:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10006",
"dataType": 4,
"dataList": [{
"key": "",
"value": {
"accountCnt": 10, // 账号总数
"externalAccountCnt": 10, // 外部账号数
"contractAccountCnt": 10, // 合约账号数
"grpCnt": 2 // 账号组数
}
}]
}
}
3) Fisco链同步数据
3.1)同步总览数据:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10007",
"dataType": 1,
"dataList": [{
"key": "",
"value": {
"chainType": "FISCO BCOS", // 区块链类型
"grpCnt": 1, //群组数量
"nodeCnt": 1, //节点数量
"contractCnt": 1, //合约数量
"blockHeight": 1, // 区块高度
"createdTime": 1593338217000, //"2020-06-28 17:56:57",子链建设时间
"consensus": "" // 共识机制
}
}]
}
}
2.2)同步详细配置:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10007",
"dataType": 2,
"dataList": [{
"key": "",
"value": {
"threshold": 100, //委员投票阈值
"account": "委员账户", //委员账户
"ticketCnt": 1 // 委员票数
}
}]
}
}
2.3)同步高阶服务:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10007",
"dataType": 3,
"dataList": [{
"key": "",
"value": {
"supportSM": 0, // 国密支持 返回0即不支持该服务,返回1即支持该服务
"supportMigrate": 0, //数据迁移 节点容量超过X%时启动,返回0即不支持该服务,返回1-100即支持该服务,且节点容量超过该百分比时启动数据迁移
"supportSGX": 0, //SGX安全防护 返回0即不支持该服务,返回1即支持该服务
"supportOracle": 0 // 预言机 返回0即不支持该服务,返回1即支持该服务
}
}]
}
}
2.4)同步群组列表:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10007",
"dataType": 4,
"dataList": [{
"key": "",
"value": {
"grpName": "群组1", //群组名称
"crtCnt": 1, //证书数
"conNodeCnt": 1, //共识节点数
"absNodeCnt": 1, // 观察者节点数
"contractCnt": 1, //合约部署数
"createTime": 1593338217000, //创建时间
"lastModifyTime": 1593338217000, //最近修改时间
"grpId": 1, //群组ID
"consensus": "", //共识机制
"maxTxCnt": 1, //最大交易量
"delay": 100, //打包延时,单位是毫秒
"periodBlockCnt": 1, //共识周期出块数
"periodConNodeCnt": 1, //每周共识节点数
"syncPolicy": "", //区块同步策略
"consensusNode": "", // 共识节点
"abserveNode": "", //观察节点
"blockHeight": 1 //区块高度
}
}]
}
}
2.5)同步群组列表:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10007",
"dataType": 5,
"dataList": [{
"key": "",
"value": {
"certName": "证书1", // 证书名称
"certType": 1, //证书类型 0:委员会证书、1:SDK证书、2:机构证书、3:节点证书、4:其他证书
"certIssuer": "", // 证书签发者
"status": 1, // 证书状态
"time": "YYYY.MM.DD-YYYY.MM.DD" // 生效时间 返回示例:YYYY.MM.DD-YYYY.MM.DD
}
}]
}
}
4) Fabric链同步数据
4.1)同步总览数据:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10001",
"dataType": 1,
"dataList": [{
"key":"",
"value":{
"chainType": "Fabric", // 区块链类型
"channelCnt": 1, // 通道数量
"orgCnt": 1, // 组织数量
"nodeCnt": 1, //节点数量
"chainCodeCnt": 1, // 链码数量
"blockHeight": 1, // 区块高度
"createdTime": 1593338217000, //"2020-06-28 17:56:57",子链建设时间
"consensus": "" // 共识机制
}
}]
}
}
4.2)同步共识节点列表:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10001",
"dataType": 2,
"dataList": [{
"key":"",
"value":{
"host": "", // 域名
"address": "", //接口
"consensus" : "", // 所属共识 例"Raft"、"PBFT"
"certStatus" : "", //证书状态 返回0即无效,返回1即有效
}
}]
}
}
4.3)同步策略列表:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10001",
"dataType": 3,
"dataList": [{
"key":"",
"value":{
"policyName": "", // 策略名
"policyType": "", //策略类别 返回1即背书策略,返回2即投票策略,返回3即其他策略
"policyDetail" : "", // 具体策略集
"purpose" : "" // 策略应用对象 返回1即成员,返回2即链码,返回3即其他
}
}]
}
}
4.4)同步通道列表:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10001",
"dataType": 4,
"dataList": [{
"key":"",
"value":{
"channelID": 123, // channelID
"name": "", // 通道名称
"orderOrgCnt": 1, // 排序组织数
"orderNodeCnt" : 2, // 排序节点数 例"Raft"、"PBFT"
"peerOrgCnt" : 2, // peer组织数
"peerNodeCnt" : 2, // peer节点数
"chainCodeDeployCnt" : 100, // 链码部署数
"blockHeight": 1111, // 区块高度
"statue": 0, // 通道状态
"hashWidth": 1, // 区块数据哈希结构宽度
"hashAlgorithm": "", // 哈希算法
"delay": 0.1, // 打包延时 ms
"maxSize": 22, // 打包最大字节数
"maxTxCnt": 12, // 打包最大交易数
"defaultMaxSize": 1234 // 推荐打包最大字节数
}
}]
}
}
4.5)同步排序组织列表:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10001",
"dataType": 5,
"dataList": [{
"key":"",
"value":{
"channel": "", // channel id
"channelName": "", // 所属通道名称
"orgName" : "", // 组织名称
"orgType" : "", // 组织类型
"nodeType" : "", // 节点类型
"nodeName" : "", // 节点名
"host": "", // 域名
"port": 4004 // 端口
}
}]
}
}
4.6)同步Peer组织列表:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10001",
"dataType": 6,
"dataList": [{
"key":"",
"value":{
"channel": "", // channel id
"channelName": "", // 所属通道名称
"orgName" : "", // 组织名称
"nodeType" : "", // 节点类型
"nodeName" : "", // 节点名
"host": "", // 域名
"port": 4004 // 端口
}
}]
}
}
4.7)同步组织列表:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10001",
"dataType": 7,
"dataList": [{
"key":"",
"value":{
"orgId": "", // org id
"orgName": "", // 组织名称
"host": "", // 域名
"orgType" : "", // 组织类型
"nodeCnt" : 10, // 节点数量
"channel" : "", // 加入通道
"consortuim" : "", // 加入联盟
"anchor" : "" // 锚节点
}
}]
}
}
4.8)同步组织节点列表:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10001",
"dataType": 8,
"dataList": [{
"key":"",
"value":{
"orgId": "", // org id
"orgName": "", // 组织名称
"nodeName" : "", // 节点名称
"host": "", // 域名,包含端口
"nodeType" : "", // 节点类型
"channel" : "" // 加入通道
}
}]
}
}
4.9)同步组织证书列表:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10001",
"dataType": 9,
"dataList": [{
"key":"",
"value":{
"orgId": "", // org id
"orgName": "", // 组织名称
"certId" : "", // 证书ID
"certIdentification": "", // 证书标识
"certType" : 1, // 证书类型,1管理员证书,2组织证书,3用户证书,4节点证书
"validTime" : "", // 有效时间
"statue" : "", // 状态
}
}]
}
}
4.10)同步高阶服务:
http请求方式:POST
https://{url}/v1/chain/isomerism/data/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"ACSN": "acc1",
"chainType": "10001",
"dataType": 10,
"dataList": [{
"key":"",
"value":{
"supportSM": 0, // 国密支持 返回0即不支持该服务,返回1即支持该服务
"supportMigrate": 0, //数据迁移 节点容量超过X%时启动,返回0即不支持该服务,返回1-100即支持该服务,且节点容量超过该百分比时启动数据迁移
"supportSGX": 0, //SGX安全防护 返回0即不支持该服务,返回1即支持该服务
"supportOracle": 0 // 预言机 返回0即不支持该服务,返回1即支持该服务
}
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": "0",
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.3 链状态信息同步
骨干节点将子链的动态信息同步到主链,需要两步操作:4.3.1获取链动态信息同步交易blob;4.3.2链动态信息同步提交。要求每隔5分钟同步一次数据。
4.3.1 获取子链状态信息同步blob
接口说明:
子链状态信息同步时需要将信息同步到链上
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 是 | 链AC号 |
gatewayAddress | String(64) | 是 | 数据网关地址(在平台链详情中查看该地址),如:did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA |
blockHeight | Long | 是 | 区块高度 |
validationNodeCount | Long | 是 | 参与共识的节点数量 |
totalNodeCount | Long | 是 | 节点总数量 |
systemContractCount | Long | 是 | 系统合约数量 |
normalContractCount | Long | 是 | 普通合约数量 |
serviceNodeCount | Long | 是 | 业务节点个数 |
txNumber | Long | 是 | 总交易数 |
accountCount | Long | 是 | 总账户数 |
tps | Long | 是 | 平均tps |
extra | String | 否 | 额外字段 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
blobId | String | blodId |
txHash | String | 交易hash |
blob | String | blod串 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/status/syn/blob
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjIxNTcxMjg0LCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.9tTPWasYgCs1yC3qYJYSjCGvd9Syl1mr6G2EVrKeq2E",
"params": {
"ACSN": "by01",
"gatewayAddress": "did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA",
"blockHeight": 50003,
"txNumber": 200000,
"tps": 101,
"validationNodeCount":0,
"totalNodeCount": 0,
"systemContractCount": 0,
"normalContractCount": 0,
"serviceNodeCount": 0,
"accountCount": 0,
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": 0,
"message": "操作成功",
"data": {
"blobId": "15",
"txHash": "d60c15bacbb7f98f00921d5ad17d49fafe0c65ea706d5d4ced25e490ac35e9e0",
"blob": "0A286469643A6269643A65663477776B727A53564650545A4A627257433439446B416554535169377241101E228304080712286469643A6269643A656662384568753953475643546D32426276705069516A7A4E576F344C51414152D4030A286469643A6269643A6566427070397753676564315A5A72437566426D36374A4C55635255396375321AA7037B226D6574686F64223A227375626D6974426C6F636B486561646572222C22706172616D73223A7B22626C6F636B486561646572223A7B226163636F756E745F747265655F68617368223A22222C22636C6F73655F74696D65223A2231353933333338343030303032303030222C22636F6E73656E7375735F76616C75655F68617368223A22222C22666565735F68617368223A22222C2268617368223A2235323134303538363966626533633132396237383434383232333566616365633435656438653432313666633834653962623665336136386661653430636232222C2270726576696F75735F68617368223A2231323334363966626533633132396237383434383232333566616365633435656438653233313435363537646161313233343131326136386661653430636232222C22736571223A223938222C2274785F636F756E74223A223132222C2276616C696461746F72735F68617368223A22696E7465726E616C436861696E496432222C2276657273696F6E223A22227D2C22636861696E436F6465223A2262793031222C2264796E616D6963496E666F223A7B7D7D7D3080EAADE907"
}
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.3.2 子链的状态信息提交(上链)
接口说明:
对blob数据进行签名(参考 签名算法 章节),并提交至主链执行上链操作,用于链的状态信息同步提交至主链并上链备案。
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
blobId | String(20) | 是 | Blob序号,通过获取交易Blob接口获取 |
signerList | List | 是 | 签名者列表(注意:需要数据网关签名) |
signerList.signBlob | String(128) | 是 | 签名串(数据网关签名) |
signerList.publicKey | String(128) | 是 | 签名者公钥(数据网关公钥) |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
txHash | String | 链上交易hash |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/status/syn/submit
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"blobId": "1",
"signerList": [{
"signBlob": "BDE955FF0A0F52A39E95815962836D13172D6EF92C55A72A97ECCF2CE882E2E2EAC73FA1A624D73C959E18126B4A35947375621D819F539DDC0692EEF0F4D702",
"publicKey": "b06566086febd16adf6553cc9c000dba5f9f410d34f8541392303561dddc045b15ef4c"
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": "0",
"message": "操作成功",
"data": {
"txHash": "083b797ea00204d2c17a9e1bd77cab11385f475da756f76a96b922e4c7b8f7c7"
}
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.4 链节点信息同步
骨干节点将链的信息同步到主链,需要两步操作:4.4.1获取链节点信息同步交易blob;4.4.2链节点信息同步提交。节点有新增和修改时需要同步至主链。
4.4.1 获取链节点信息同步blob
接口说明:
节点信息同步时需要将信息同步到链上
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 是 | AC号 |
gatewayAddress | String(64) | 是 | 数据网关地址(在平台链详情中查看该地址),如:did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA |
nodeList | List | 是 | 节点对象集合 |
nodeList.nodeAddress | String(128) | 是 | 节点地址(BID格式,即对子链原节点地址映射为BID格式),例如壹诺区块链华东节点地址:adxSdh5znTeNgjLNoX1e4CuHJoC9hDUbgMrtf,需要映射一个新的BID格式: did:bid:ynjr:ef6bRF4FDPzjvatNmFu6YAvegBtcv86r |
nodeList.name | String(128) | 是 | 节点名称 |
nodeList.createTime | Long | 是 | 节点申请时间 (Unix时间戳 毫秒) |
nodeList.bindNodeBid | String(64) | 是 | 所属骨干节点bid |
nodeList.owner | String(64) | 是 | 该节点归属的企业bid |
nodeList.location | Object | 是 | 节点地理位置 |
nodeList.location.district | String(32) | 是 | 区域编码(比如:810008,通过4.13接口获取区域信息 需要获取到县级的编号 ) |
nodeList.type | Integer | 是 | 节点类型:0 业务节点(目前仅支持 业务节点,后续扩展其他类型) |
nodeList.p2pAddress | String(64) | 是 | 节点间p2p通信地址,如:172.10.3.1:49900 |
nodeList.serverType | Integer | 是 | 服务器类型: 0自建服务器,1云服务 |
nodeList.hostIp | String | 是 | 节点公网IP,没有公网IP填内网IP |
nodeList.cloudName | Integer | 是 | 云类型,0非公有云,1阿里云,2百度云、3金山云、4华为云、5亚马逊云、6微软云、7腾讯云、8京东云、9物理机、100其他云 |
nodeList.extra | String | 否 | 扩展字段 |
nodeList.extra.nodeType | Integer | 否 | 节点类型:0 共识节点 1 观察者节点,当子链架构为cita、fiscobcos时必填 |
nodeList.extra.group | String | 否 | 群组id,当子链架构为fiscobcos、fabric时必填 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
blobId | String | blodId |
txHash | String | 交易hash |
blob | String | blod串 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/nodeInfo/syn/blob
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjIxNTcxMjg0LCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.9tTPWasYgCs1yC3qYJYSjCGvd9Syl1mr6G2EVrKeq2E",
"params": {
"ACSN": "ynjr",
"gatewayAddress": "did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA",
"nodeList": [{
"nodeAddress": "did:bid:ynjr:ef6bRF4FDPzjvatNmFu6YAvegBtcv86r",
"name": "业务节点1",
"createTime": 1593338217000,
"bindNodeBid": "did:bid:WWBVgCnREaLjegUvkpeiY8BaiAojvcv1b",
"owner": "did:bid:WWBVgCnREaLjegUvkpeiY8BaiAojvcv11",
"location": {
"district": "810008"
},
"type": 1,
"p2pAddress": "127.0.0.1:18001",
"serverType": 0,
"hostIp": "192.168.1.12",
"cloudName": 1
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": 0,
"message": "操作成功",
"data": {
"blobId": "15",
"txHash": "d60c15bacbb7f98f00921d5ad17d49fafe0c65ea706d5d4ced25e490ac35e9e0",
"blob": "0A286469643A6269643A65663477776B727A53564650545A4A627257433439446B416554535169377241101E228304080712286469643A6269643A656662384568753953475643546D32426276705069516A7A4E576F344C51414152D4030A286469643A6269643A6566427070397753676564315A5A72437566426D36374A4C55635255396375321AA7037B226D6574686F64223A227375626D6974426C6F636B486561646572222C22706172616D73223A7B22626C6F636B486561646572223A7B226163636F756E745F747265655F68617368223A22222C22636C6F73655F74696D65223A2231353933333338343030303032303030222C22636F6E73656E7375735F76616C75655F68617368223A22222C22666565735F68617368223A22222C2268617368223A2235323134303538363966626533633132396237383434383232333566616365633435656438653432313666633834653962623665336136386661653430636232222C2270726576696F75735F68617368223A2231323334363966626533633132396237383434383232333566616365633435656438653233313435363537646161313233343131326136386661653430636232222C22736571223A223938222C2274785F636F756E74223A223132222C2276616C696461746F72735F68617368223A22696E7465726E616C436861696E496432222C2276657273696F6E223A22227D2C22636861696E436F6465223A2262793031222C2264796E616D6963496E666F223A7B7D7D7D3080EAADE907"
}
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.4.2 子链节点信息提交(上链)
接口说明:
对blob数据进行签名(参考 签名算法 章节),并提交至主链执行上链操作,用于节点信息同步提交至主链并上链备案。
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
blobId | String(20) | 是 | Blob序号,通过获取交易Blob接口获取 |
signerList | List | 是 | 签名者列表(注意:需要数据网关签名) |
signerList.signBlob | String(128) | 是 | 签名串(数据网关签名) |
signerList.publicKey | String(128) | 是 | 签名者公钥(数据网关公钥) |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
txHash | String | 链上交易hash |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/nodeInfo/syn/submit
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"blobId": "1",
"signerList": [{
"signBlob": "BDE955FF0A0F52A39E95815962836D13172D6EF92C55A72A97ECCF2CE882E2E2EAC73FA1A624D73C959E18126B4A35947375621D819F539DDC0692EEF0F4D702",
"publicKey": "b06566086febd16adf6553cc9c000dba5f9f410d34f8541392303561dddc045b15ef4c"
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": "0",
"message": "操作成功",
"data": {
"txHash": "083b797ea00204d2c17a9e1bd77cab11385f475da756f76a96b922e4c7b8f7c7"
}
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.5 链节点运行状态同步
接口说明:
骨干节点将链下节点运行状态到主链。(每隔5分钟同步一次)
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 是 | AC号 |
nodeRunningList | List | 是 | 运行状态信息对象 |
nodeRunningList.nodeAddress | String(64) | 是 | 节点地址(BID格式,即对子链原节点地址映射为BID格式),例如壹诺区块链华东节点地址:adxSdh5znTeNgjLNoX1e4CuHJoC9hDUbgMrtf,需要映射一个新的BID格式: did:bid:ynjr:ef6bRF4FDPzjvatNmFu6YAvegBtcv86r |
nodeRunningList.status | Integer | 是 | 节点运行状况,1:正常, 2:故障 |
nodeRunningList.delay | Long | 是 | 节点响应时延, 单位毫秒 |
nodeRunningList.upTraffic | Long | 是 | 上行流量, 单位字节 |
nodeRunningList.downTraffic | Long | 是 | 下行流量, 单位字节 |
nodeRunningList.latestBlockHeight | Long | 是 | 最新区块高度 |
nodeRunningList.latestBlockHash | String(128) | 是 | 最新区块哈希 |
nodeRunningList.latestTxNum | Long | 是 | 最新交易总量 |
nodeRunningList.latestAccountNum | Long | 是 | 最新账户总数 |
nodeRunningList.unblockedTxNum | Long | 是 | 实时未打包交易数 |
nodeRunningList.cpuUsage | Integer | 是 | 节点处理器使用率,为百分数整数,如78%请填写78 |
nodeRunningList.memoryUsage | Integer | 是 | 节点内存使用率,为百分数整数,如78%请填写78 |
nodeRunningList.diskUsage | Integer | 是 | 节点磁盘使用率,为百分数整数,如78%请填写78 |
nodeRunningList.memoryUsed | Long | 是 | 节点内存占用,单位字节,比如:占用3G,请填写 3221225472 |
nodeRunningList.diskUsed | Long | 是 | 节点磁盘占用总大小,单位字节,比如:占用3G,请填写3221225472 |
nodeRunningList.ledgerDBUsed | Long | 是 | 节点的账本数据库磁盘占用大小,单位字节,比如:占用3G,请填写 3221225472 |
nodeRunningList.accountDBUsed | Long | 是 | 节点的账户数据库磁盘占用大小,单位字节,比如:占用3G,请填写 3221225472 |
nodeRunningList.kvDBUsed | Long | 是 | 节点的kv数据库磁盘占用大小,单位字节,比如:占用3G,请填写 3221225472 |
nodeRunningList.loadavg | Long | 是 | 一分钟内的系统平均负载值,由于原始值为保留2位小数的浮点值,这里扩大100提供整数,如,原始值是20.88 请填写 2088 |
nodeRunningList.diskRead | Long | 是 | 磁盘实时读取速度,单位字节每秒,如:3M/s 请填写 3145728 |
nodeRunningList.diskWrite | Long | 是 | 磁盘实时写入速度,单位字节每秒,如:3M/s 请填写 3145728 |
nodeRunningList.tcpCount | Integer | 是 | tcp链接总数 |
nodeRunningList.time | Long | 是 | 节点状态上报的时间戳,目前节点每分钟上报一次信息 |
nodeRunningList.extra | String | 否 | 额外数据,(数据格式JSON字符串) |
nodeRunningList.extra.group | String | 否 | 群组,当子链架构为xuperchain时必填 |
nodeRunningList.nodeFaultList | List | 否 | 节点故障数据,节点运行状况发生变化时必填,如正常状态更新为故障状态,需要提供故障产生记录,如故障状态更新为正常状态,需要提供故障恢复记录,列表为同步时间间隔内的增量记录 |
nodeRunningList.nodeFaultList.id | String(32) | 是 | 上报数据索引号(子链上唯一,建议用UUID再进行MD5运算生成的字符串) |
nodeRunningList.nodeFaultList.time | Long | 是 | 故障发生时间(Unix时间戳 毫秒) |
nodeRunningList.nodeFaultList.type | Integer | 是 | 标示产生或者恢复日志,1:产生, 2:恢复 |
nodeRunningList.nodeFaultList.faultType | Integer | 是 | 故障类型,1:区块停止产生, 2:节点已宕机 |
nodeRunningList.nodeFaultList.faultLevel | Integer | 是 | 故障等级,1:严重 2:一般 3:轻微, |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
errorCode | Integer | 错误码 |
message | String | 错误描述 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/nodeRunningStatus/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjIxNTEzODE4LCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.kqeuSumhvdHLnrvw0WkWxrY3Cy6bThVKBmv7h2-a1po",
"params": {
"ACSN": "ynjr",
"nodeRunningList": [{
"nodeAddress": "did:bid:ynjr:ef6bRF4FDPzjvatNmFu6YAvegBtcv86r",
"status": 1,
"delay": 300,
"upTraffic": 10000,
"downTraffic": 1000,
"latestBlockHeight": 1000,
"latestBlockHash": "71a4abdc812bb6d94c56e3a2a849250747a76dbab5559f6fc89338876d4b879f",
"latestTxNum": 1000,
"latestAccountNum": 1000,
"unblockedTxNum": 1000,
"cpuUsage": 10,
"memoryUsage": 30,
"diskUsage": 5,
"memoryUsed": 1048576,
"diskUsed": 104857600,
"ledgerDBUsed": 1024,
"accountDBUsed": 100,
"kvDBUsed": 1024,
"loadavg": 70,
"diskRead": 1024,
"diskWrite": 1024,
"tcpCount": 10,
"time": 1593338217000,
"extra": "{}",
"nodeFaultList": [{
"id": "c4ca4238a0b923820dcc509a6f75849b",
"time": 1593338217000,
"type": 2,
"faultType": 1,
"faultLevel": 2
}]
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": "0",
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.6 链的区块信息同步
骨干节点将链的区块信息同步到主链锚定,需要两步操作:4.6.1获取链的区块信息同步blob ;4.6.2链的区块信息提交(上链)。(要求每隔5分钟同步一次数据。)
4.6.1 获取链的区块信息同步blob
接口说明:
获取链的区块信息同步blob
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 是 | AC号 |
gatewayAddress | String(64) | 是 | 数据网关地址(在平台链详情中查看该地址),如:did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA |
blockList | List | 是 | 区块头信息列表 |
blockList.height | Long | 是 | 区块高度 |
blockList.nodeAddress | String(64) | 是 | 出块节点地址(BID格式,即对子链原节点地址映射为BID格式),例如壹诺区块链华东节点地址:adxSdh5znTeNgjLNoX1e4CuHJoC9hDUbgMrtf,需要映射一个新的BID格式: did:bid:ynjr:ef6bRF4FDPzjvatNmFu6YAvegBtcv86r |
blockList.nodeName | String(128) | 是 | 出块节点名称 |
blockList.txNum | Long | 是 | 区块交易数 |
blockList.preBlockHash | String(64) | 否 | 上一个区块hash |
blockList.blockHash | String(64) | 是 | 区块hash |
blockList.time | Long | 是 | 区块生成时间(Unix时间戳 毫秒) |
blockList.size | Long | 是 | 区块大小,单位字节 |
blockList.internalChainId | String(128) | 否 | 标记链内子链id,用于兼容channel字段(Fabric链)、chainID字段(XuperChain链)、grpId字段(FISCO BCOS链)等,需要全局唯一且不可修改,默认为空字符串 |
blockList.extra | Object | 否 | 扩展字段 |
blockList.extra.channelName | String | 否 | 通道名称,当子链架构为fabric时必填 |
blockList.extra.chainName | String | 否 | 平行链名称,当子链架构为xuperchain时必填 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
blobId | String | blodId |
txHash | String | 链上交易hash |
blod | String | blod串 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/block/syn/blob
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjIxNTcxMjg0LCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.9tTPWasYgCs1yC3qYJYSjCGvd9Syl1mr6G2EVrKeq2E",
"params": {
"ACSN": "ynjr",
"gatewayAddress": "did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA",
"blockList": [{
"height": 98,
"nodeAddress": "did:bid:ynjr:ef6bRF4FDPzjvatNmFu6YAvegBtcv86r",
"nodeName": "节点2",
"txNum": 12,
"preBlockHash": "123469fbe3c129b784482235facec45ed8e23145657daa1234112a68fae40cb2",
"blockHash": "521405869fbe3c129b784482235facec45ed8e4216fc84e9bb6e3a68fae40cb2",
"time": 1593338400002,
"size": 1282,
"internalChainId":"internalChainId2",
"extra":"extra2"
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": 0,
"message": "操作成功",
"data": {
"blobId": "15",
"txHash": "d60c15bacbb7f98f00921d5ad17d49fafe0c65ea706d5d4ced25e490ac35e9e0",
"blob": "0A286469643A6269643A65663477776B727A53564650545A4A627257433439446B416554535169377241101E228304080712286469643A6269643A656662384568753953475643546D32426276705069516A7A4E576F344C51414152D4030A286469643A6269643A6566427070397753676564315A5A72437566426D36374A4C55635255396375321AA7037B226D6574686F64223A227375626D6974426C6F636B486561646572222C22706172616D73223A7B22626C6F636B486561646572223A7B226163636F756E745F747265655F68617368223A22222C22636C6F73655F74696D65223A2231353933333338343030303032303030222C22636F6E73656E7375735F76616C75655F68617368223A22222C22666565735F68617368223A22222C2268617368223A2235323134303538363966626533633132396237383434383232333566616365633435656438653432313666633834653962623665336136386661653430636232222C2270726576696F75735F68617368223A2231323334363966626533633132396237383434383232333566616365633435656438653233313435363537646161313233343131326136386661653430636232222C22736571223A223938222C2274785F636F756E74223A223132222C2276616C696461746F72735F68617368223A22696E7465726E616C436861696E496432222C2276657273696F6E223A22227D2C22636861696E436F6465223A2262793031222C2264796E616D6963496E666F223A7B7D7D7D3080EAADE907"
}
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.6.2 链的区块信息提交(上链)
接口说明:
对blob数据进行签名(参考 签名算法 章节),并提交至主链执行上链操作,用于子链的区块信息提交至主链并上链存储
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
blobId | String(20) | 是 | blobId(4.6.1返回blobId) |
signerList | List | 是 | 签名者列表(注意:需要数据网关签名) |
signerList.signBlob | String(128) | 是 | 签名串(数据网关签名) |
signerList.publicKey | String(128) | 是 | 签名者公钥(数据网关公钥) |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
txHash | String | 链上交易hash |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/block/syn/submit
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"blobId": "3",
"signerList": [{
"signBlob": "4D47D46AA467C8DF8FD1D60374D9D2378AC536612C3B84E1AC9BA4EA55E10810482EC634EADED63A389F82573AB1E055698189F7497DF23C5E32CF26A7D8270F",
"publicKey": "b06566086febd16adf6553cc9c000dba5f9f410d34f8541392303561dddc045b15ef4c"
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": "0",
"message": "操作成功",
"data": {
"txHash": "083b797ea00204d2c17a9e1bd77cab11385f475da756f76a96b922e4c7b8f7c7"
}
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.7 交易信息同步
接口说明:
用于将子链的交易上报到主链(要求每隔5分钟同步一次,将5分钟内的交易都同步上来)
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 是 | AC号 |
txList | List | 是 | 交易列表 |
txList.hash | String(64) | 是 | 交易hash |
txList.content | String | 是 | 交易内容 JSON字符串 或者交易内容hash |
txList.time | Long | 是 | 交易时间(Unix时间戳 毫秒) |
txList.height | Long | 是 | 交易高度 |
txList.status | String(2) | 是 | 交易状态,0成功,1失败 |
txList.txSign | String(65535) | 是 | 交易签名 |
txList.contractBid | String(128) | 否 | 合约地址,合约调用交易为调用的合约地址,非合约调用交易留空 |
txList.size | Long | 是 | 交易大小,单位字节 |
txList.internalChainId | String(128) | 否 | 链内子链id,默认留空。如Fabric链填写channel,XuperChain链填写chainID,FISCO链填写grpId |
txList.extra | String | 否 | 额外数据 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
errorCode | Integer | 错误码 |
message | String | 错误描述 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/tx/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjIxNTEzODE4LCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.kqeuSumhvdHLnrvw0WkWxrY3Cy6bThVKBmv7h2-a1po",
"params": {
"ACSN":"by01",
"txList": [{
"hash": "71a4abdc812bb6d94c56e3a2a849250747a76dbab5559f6fc89338876d4b879f",
"content": "a6f9f1e8a18674ac915932e1d700b12b676d22b542f952d0d0f96517f9f5f806",
"time": 1593338217000,
"height": 10,
"status":"0",
"txSign":"{sign:1234}",
"contractBid":"0",
"size":100,
"internalChainId": "",
"extra": "123"
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": "0",
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.8 合约信息同步
骨干节点将合约信息同步到主链,便于备案审查。需要两步操作:4.8.1获取合约信息同步blob ;4.8.2合约信息同步提交(上链)。要求每隔5分钟同步一次数据。
4.8.1 获取合约信息同步blob
接口说明:
获取合约信息同步blob。
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 是 | 链AC号 |
gatewayAddress | String(64) | 是 | 数据网关地址(在平台链详情中查看该地址),如:did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA |
smartContractList | List | 是 | 合约列表 |
smartContractList.ownerAddress | String(64) | 是 | 合约拥有人BID(BID格式) |
smartContractLis.contractAddress | String(64) | 是 | 合约地址(BID格式,即对子链原合约地址映射为BID格式),例如原合约地址:adxSBrVVtaWZVuGxGGPZCmyna7C6dKo3WVXd4,需要映射一个新的BID格式: did:bid:ynjr:did:bid:efv7DynieC5sF1UoKAthKTfUCkuzaBfR |
smartContractList.time | Long | 是 | 合约创建时间(Unix时间戳 毫秒) |
smartContractList.name | String(128) | 否 | 合约名称 |
smartContractList.contractType | Integer | 是 | 合约类型,0 :普通合约, 1:主子链管理系统合约, 2:DPOS系统合约 3:部署系统合约 4:认证系统合约 5:隐私保护系统合约 6:跨链系统合约 7:BID注册合约 |
smartContractList.industryType | String(2) | 是 | 行业类型,参考 10证件及行业类型 |
smartContractList.payload | String() | 是 | 合约代码 |
smartContractList.vm | String(16) | 是 | 合约引擎 |
smartContractList.internalChainId | String(128) | 否 | 标记链内子链id,如Fabric链填写channel,XuperChain链填写chainID,FISCO链填写grpId等,需要全局唯一且不可修改,默认为空字符串 |
smartContractList.version | String(16) | 是 | 合约版本 |
smartContractList.extra | String | 否 | 扩展字段,json字符串 |
smartContractList.extra.identification | String | 否 | 链码标识,当子链架构为fabric时必填 |
smartContractList.extra.nodeCnt | Long | 否 | 安装节点数,当子链架构为fabric时必填 |
smartContractList.extra.channelCnt | Long | 否 | 部署通道数,当子链架构为fabric时必填 |
smartContractList.extra.address | String | 否 | 合约地址,当子链架构为xuperchain时必填 |
smartContractList.extra.creator | String | 否 | 合约创建账号,当子链架构为xuperchain时必填 |
smartContractList.extra.type | String | 否 | 合约类型, wasm合约、native合约,当子链架构为xuperchain时必填 |
smartContractList.extra.chainName | String | 否 | 平行链名称,当子链架构为xuperchain时必填 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
blobId | String | blodId |
txHash | String | 交易hash |
blob | String | blob串 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/contract/syn/blob
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjIxNTcxMjg0LCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.9tTPWasYgCs1yC3qYJYSjCGvd9Syl1mr6G2EVrKeq2E",
"params": {
"ACSN": "ynjr",
"gatewayAddress": "did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA",
"smartContractList": [{
"ownerAddress":"did:bid:efPGyex2nVvTJZPg8RzdtzEqF5UWCzdL22",
"contractAddress": "did:bid:ynjr:efv7DynieC5sF1UoKAthKTfUCkuzaBfR",
"time": 1593338217002,
"name": "部署系统合约2",
"contractType": 2,
"industryType": "A",
"payload": "'use strict'; function init(){return;} function main(){return;}",
"vm": "v2",
"version":"1.0.2",
"extra":"extra2",
"internalChainId":"internalChainId2"
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": 0,
"message": "操作成功",
"data": {
"blobId": "15",
"txHash": "d60c15bacbb7f98f00921d5ad17d49fafe0c65ea706d5d4ced25e490ac35e9e0",
"blob": "0A286469643A6269643A65663477776B727A53564650545A4A627257433439446B416554535169377241101E228304080712286469643A6269643A656662384568753953475643546D32426276705069516A7A4E576F344C51414152D4030A286469643A6269643A6566427070397753676564315A5A72437566426D36374A4C55635255396375321AA7037B226D6574686F64223A227375626D6974426C6F636B486561646572222C22706172616D73223A7B22626C6F636B486561646572223A7B226163636F756E745F747265655F68617368223A22222C22636C6F73655F74696D65223A2231353933333338343030303032303030222C22636F6E73656E7375735F76616C75655F68617368223A22222C22666565735F68617368223A22222C2268617368223A2235323134303538363966626533633132396237383434383232333566616365633435656438653432313666633834653962623665336136386661653430636232222C2270726576696F75735F68617368223A2231323334363966626533633132396237383434383232333566616365633435656438653233313435363537646161313233343131326136386661653430636232222C22736571223A223938222C2274785F636F756E74223A223132222C2276616C696461746F72735F68617368223A22696E7465726E616C436861696E496432222C2276657273696F6E223A22227D2C22636861696E436F6465223A2262793031222C2264796E616D6963496E666F223A7B7D7D7D3080EAADE907"
}
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.8.2 合约信息同步提交(上链)
接口说明:
对blob数据进行签名(参考 签名算法 章节),并提交至主链执行上链操作,用于子链合约信息同步提交至主链并上链存储
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
blobId | String(20) | 是 | blobId |
signerList | List | 是 | 签名者列表(注意:需要数据网关签名) |
signerList.signBlob | String(128) | 是 | 签名串(数据网关签名) |
signerList.publicKey | String(128) | 是 | 签名者公钥(数据网关公钥) |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
txHash | String | 交易hash |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/contract/syn/submit
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
"params": {
"blobId": "4",
"signerList": [{
"signBlob": "5EC044231995FD4AF61CCA0AA7BA2479021509E48F3E3C061ED3CDB1CFECC79FCFE1BD28571236E55F72BA1260A8707CAF2D1D104D79A9218EBCCA9225066B06",
"publicKey": "b06566086febd16adf6553cc9c000dba5f9f410d34f8541392303561dddc045b15ef4c"
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": "0",
"message": "操作成功",
"data": {
"txHash": "083b797ea00204d2c17a9e1bd77cab11385f475da756f76a96b922e4c7b8f7c7"
}
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.9 链智能合约调用信息同步
接口说明:
用于子链合约调用记录上报到主链(要求每5分钟同步一次。将5分钟内的合约调用记录数据同步上来)
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 是 | 子链AC号 |
contractCallList | List | 是 | 数据数组 |
contractCallList.bid | String(64) | 是 | 智能合约调用者账户地址 |
contractCallList.time | Long | 是 | 调用时间(Unix 时间戳 毫秒) |
contractCallList.contractBid | String(64) | 是 | 智能合约地址(BID格式,即对子链原合约地址映射为BID格式),例如原合约地址:adxSBrVVtaWZVuGxGGPZCmyna7C6dKo3WVXd4,需要映射一个新的BID格式: did:bid:ynjr:did:bid:efv7DynieC5sF1UoKAthKTfUCkuzaBfR |
contractCallList.name | String(64) | 否 | 合约调用者名称 |
contractCallList.internalChainId | String(128) | 否 | 链内子链id,如Fabric链填写channel,XuperChain链填写chainID,FISCO链填写grpId等,需要全局唯一且不可修改,默认为空字符串 |
contractCallList.extra | Object | 否 | 额外数据 |
contractCallList.extra.org | String | 否 | 调用组织,当子链架构为fabric时必填 |
contractCallList.extra.grp | String | 否 | 调用群组,当子链架构为xuperchain时必填 |
contractCallList.extra.invokeGroup | String | 否 | 调用群组,当子链架构为fiscobcos时必填 |
contractCallList.extra.invokeCertificate | String | 否 | 调用证书,当子链架构为fiscobcos和cita时必填 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
errorCode | Integer | 错误码 |
message | String | 错误描述 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/contractCall/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjIxNTk0NDQ4LCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.MxWdV-mwCScUq8QwmTXTaxKli8jvXq1sNVvAYQWWsSo",
"params": {
"ACSN": "ynjr",
"contractCallList": [{
"bid": "bid:bid:ynjr:hHTsFXTTqQfVH1oThGEKf6iwCK2c31Bes",
"name": "aaa",
"contractBid": "did:bid:ynjr:did:bid:efv7DynieC5sF1UoKAthKTfUCkuzaBfR",
"time": 1593338217000,
"internalChainId": "",
"extra": "{}"
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": "0",
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.10 链智能合约部署信息同步
接口说明:
用于子链合约部署记录上报到主链(要求每5分钟同步一次。将5分钟内的合约部署记录数据同步上来)
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 是 | 子链AC号 |
contractDeployList | List | 是 | 合约部署记录 |
contractDeployList.bid | String(64) | 是 | 智能合约地址(BID格式,即对子链原合约地址映射为BID格式),例如原合约地址:adxSBrVVtaWZVuGxGGPZCmyna7C6dKo3WVXd4,需要映射一个新的BID格式: did:bid:ynjr:did:bid:efv7DynieC5sF1UoKAthKTfUCkuzaBfR |
contractDeployList.time | Long | 是 | 部署时间 (Unix时间戳 毫秒) |
contractDeployList.contractName | String(64) | 否 | 智能合约名称 |
contractDeployList.version | String(16) | 是 | 智能合约版本 |
contractDeployList.operateType | Integer | 是 | 合约操作类型,0:第一次部署 1:合约升级 |
contractDeployList.internalChainId | String(128) | 否 | 链内子链id,如Fabric链填写channel,XuperChain链填写chainID,FISCO链填写grpId等,需要全局唯一且不可修改,默认为空字符串 |
contractDeployList.extra | Object | 否 | 额外数据 |
contractDeployList.extra.channelName | String | 否 | 通道名称,当子链架构为fabric时必填 |
contractDeployList.extra.nodeName | String | 否 | 节点名称,当子链架构为fabric时必填 |
contractDeployList.extra.status | String | 否 | 状态,当子链架构为fabric时必填 |
contractDeployList.extra.chainName | String | 否 | 平行链名称,当子链架构为xuperchain时必填 |
contractDeployList.extra.status | String | 否 | 状态,当子链架构为xuperchain时必填 |
contractDeployList.extra.grpName | String | 否 | 群组名称,当子链架构为fiscobcos时必填 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
errorCode | Integer | 错误码 |
message | String | 错误描述 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/contractDeploy/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjIxNTk0NDQ4LCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.MxWdV-mwCScUq8QwmTXTaxKli8jvXq1sNVvAYQWWsSo",
"params": {
"ACSN": "ynjr",
"contractDeployList": [{
"bid": "did:bid:ynjr:did:bid:efv7DynieC5sF1UoKAthKTfUCkuzaBfR",
"contractName": "跨链合约",
"time": 1593338217000,
"version": "1.0",
"operateType": 0,
"internalChainId": "",
"extra": "{}"
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": "0",
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.11 未打包的交易数同步
接口说明:
每隔一小时同步一次,同步最近24小时每小时未打包交易数,按整点取值。
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 是 | AC号 |
txNumList | List | 是 | 每个小时未打包交易总数列表 |
txNumList.time | Long | 是 | 整点时间戳 (单位 毫秒) |
txNumList.unblockedTxNum | Long | 是 | 未打包的交易数 |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
errorCode | Integer | 错误码 |
message | String | 错误描述 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/unblockedTxNum/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjIxNTEzODE4LCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.kqeuSumhvdHLnrvw0WkWxrY3Cy6bThVKBmv7h2-a1po",
"params": {
"ACSN": "by01",
"txNumList": [
{"time":1600128000000,"unblockedTxNum":10},
{"time":1600124400000,"unblockedTxNum":10},
{"time":1600131400000,"unblockedTxNum":14},
{"time":1600041600000,"unblockedTxNum":10}
]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": "0",
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.12 底层链节点故障日志同步(已弃用)
接口说明:
用于底层链节点故障信息上报到主链(要求每5分钟同步一次。将5分钟内的底层链节点故障日志数据同步上来)
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ACSN | String(4) | 是 | 子链AC号 |
nodeFaultList | List | 是 | 节点故障数据 |
nodeFaultList.id | String(32) | 是 | 上报数据索引号(子链上唯一,建议用UUID再进行MD5运算生成的字符串) |
nodeFaultList.time | Long | 是 | 故障发生时间(Unix时间戳 毫秒) |
nodeFaultList.bid | String(64) | 是 | 节点地址(bid格式) |
nodeFaultList.type | Integer | 是 | 标示产生或者恢复日志,1:产生, 2:恢复 |
nodeFaultList.faultType | Integer | 是 | 故障类型,1:区块停止产生, 2:节点已宕机 |
nodeFaultList.faultLevel | Integer | 是 | 故障等级,1:严重 2:一般 3:轻微, |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
errorCode | Integer | 错误码 |
message | String | 错误描述 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/chain/nodeFault/syn
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjIxNTk0NDQ4LCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.MxWdV-mwCScUq8QwmTXTaxKli8jvXq1sNVvAYQWWsSo",
"params": {
"ACSN": "by02",
"nodeFaultList": [{
"id": 1,
"time": 1593338217000,
"bid": "did:bid:WWBVgCnREaLjegUvkpeiY8BaiAojvcv1b",
"type": 2,
"faultType": 1,
"faultLevel": 2
}]
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": "0",
"message": "操作成功"
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}
4.13 获取区域信息
接口说明:
用于获取区域信息(省、市、县)
请求参数:
字段名 | 类型 | 是否必填 | 描述 |
---|---|---|---|
pcode | String(8) | 否 | 父级编码(为空获取所有省、通过省的编号获取到下面市的编号、通过市获取县的编号) |
返回数据:
字段名 | 类型 | 描述 |
---|---|---|
errorCode | Integer | 错误码 |
message | String | 错误描述 |
areaList.name | String | 区域名称 |
areaList.adcode | String | 区域编码 |
areaList.longitude | String | 经度 |
areaList.latitude | String | 纬度 |
示例:
(1)请求示例:
http请求方式:POST
https://{url}/v1/bid/area/info/list
{
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjIxNTk0NDQ4LCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.MxWdV-mwCScUq8QwmTXTaxKli8jvXq1sNVvAYQWWsSo",
"params": {
"pcode":"510000"
}
}
(2)返回结果示例:
a. 接口调用成功,则返回JSON数据示例为:
{
"errorCode": 0,
"message": "操作成功",
"data": {
"areaList": [
{
"name": "巴中市",
"adcode": "511900",
"longitude": "106.753669",
"latitude": "31.858809"
},
{
"name": "成都市",
"adcode": "510100",
"longitude": "104.065735",
"latitude": "30.659462"
},
{
"name": "广元市",
"adcode": "510800",
"longitude": "105.829757",
"latitude": "32.433668"
},
{
"name": "南充市",
"adcode": "511300",
"longitude": "106.082974",
"latitude": "30.795281"
},
{
"name": "德阳市",
"adcode": "510600",
"longitude": "104.398651",
"latitude": "31.127991"
},
{
"name": "绵阳市",
"adcode": "510700",
"longitude": "104.741722",
"latitude": "31.46402"
},
{
"name": "遂宁市",
"adcode": "510900",
"longitude": "105.571331",
"latitude": "30.513311"
},
{
"name": "资阳市",
"adcode": "512000",
"longitude": "104.641917",
"latitude": "30.122211"
},
{
"name": "广安市",
"adcode": "511600",
"longitude": "106.633369",
"latitude": "30.456398"
},
{
"name": "内江市",
"adcode": "511000",
"longitude": "105.066138",
"latitude": "29.58708"
},
{
"name": "达州市",
"adcode": "511700",
"longitude": "107.502262",
"latitude": "31.209484"
},
{
"name": "眉山市",
"adcode": "511400",
"longitude": "103.831788",
"latitude": "30.048318"
},
{
"name": "自贡市",
"adcode": "510300",
"longitude": "104.773447",
"latitude": "29.352765"
},
{
"name": "泸州市",
"adcode": "510500",
"longitude": "105.443348",
"latitude": "28.889138"
},
{
"name": "宜宾市",
"adcode": "511500",
"longitude": "104.630825",
"latitude": "28.760189"
},
{
"name": "乐山市",
"adcode": "511100",
"longitude": "103.761263",
"latitude": "29.582024"
},
{
"name": "攀枝花市",
"adcode": "510400",
"longitude": "101.716007",
"latitude": "26.580446"
},
{
"name": "凉山彝族自治州",
"adcode": "513400",
"longitude": "102.258746",
"latitude": "27.886762"
},
{
"name": "雅安市",
"adcode": "511800",
"longitude": "103.001033",
"latitude": "29.987722"
},
{
"name": "阿坝藏族羌族自治州",
"adcode": "513200",
"longitude": "102.221374",
"latitude": "31.899792"
},
{
"name": "甘孜藏族自治州",
"adcode": "513300",
"longitude": "101.963815",
"latitude": "30.050663"
}
]
}
}
b. 接口调用失败,则返回JSON数据示例为:
{
"errorCode": 940000,
"message": "系统内部错误"
}