8 跨链服务接入

8.1通用查询操作

8.1.1查询跨链交易列表

接口说明:

骨干节点可以查询主链上的跨链交易列表

请求参数说明:

字段名 类型 是否必填 描述
ACSN String 被查询链的链码
srcACSN String 源AC码
destACSN String 目标AC码
srcAddress String 源用户
destAddress String 目标用户
payloadType String 跨链交易类型。"0"主链积分转移,"1"子链积分兑换,"2"合约互操作,3数据传递
result String 跨链交易的状态。"0":初始化,"1":已确认成功, "2":已确认失败, "3":已超时。
refunded String 星火积分交易失败后的退款信息。"0"无需退款,"1"是待退款,"2"是已退款。
useAsc Boolen 是否使用升序排列。默认不填为否,即降序排列
pageStart int 开始页
pageSize int 每页条数

响应参数说明:

字段名 类型 描述
crossTxNo String 跨链编号。"A:B:XXXXXXXX",A为源AC码,B为目标AC码,XXXX为随机编码
srcACSN String 源链的AC码
destACSN String 目标链的AC码
srcAddress String 源地址
destAddress String 目标地址
payloadType String 跨链交易类型。"0"主链积分转移,"1"子链积分兑换,"2"合约互操作,3数据传递
remark String 用户备注信息
result String 跨链交易的状态。"0":初始化,"1":已确认成功, "2":已确认失败, "3":已超时。非0是终止态,不会发生变化。
refunded String 星火积分交易失败后的退款信息。0无需退款,1是待退款,2是已退款。
extension String 扩展消息。用户自定义消息
version String 协议版本号.如果版本号不兼容,则跨链交易失败
lastUpdateSeqNum String 最新更新的区块号
page obj 分页对象

示例:

(1)请求示例:

http请求方式:POST
https://{url}/crosschain/query/tx/list

{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params": {
        "ACSN": "0",
        "srcACSN": "",
        "destACSN": "",
        "srcAddress": "",
        "destAddress": "",
        "payloadType": "",
        "result": "",
        "refunded": "",
        "useAsc": true,
        "pageStart": 1,
        "pageSize": 2
    }
}

(2)返回结果示例:

a. 接口调用成功,则返回JSON数据示例为:

{
  "errorCode": 0,
  "message": "操作成功",
  "data": {
    "page": {
      "pageSize": 2,
      "pageStart": 1,
      "pageTotal": 25
    },
    "list": [
      {
        "ACSN": "0",
        "crossTxNo": "0:by01:83e951266fc90b4fb0a9c35f01b072b9",
        "srcACSN": "0",
        "destACSN": "by01",
        "srcAddress": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "destAddress": "did:bid:by01:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "payloadType": "1",
        "remark": "remark",
        "result": "1",
        "refunded": "0",
        "lastUpdateSeqNum": "699434"
      },
      {
        "ACSN": "0",
        "crossTxNo": "by01:0:2e51d896fd392a4aca439f530e9d62e7",
        "srcACSN": "by01",
        "destACSN": "0",
        "srcAddress": "did:bid:by01:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "destAddress": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "payloadType": "2",
        "remark": "remark",
        "result": "1",
        "refunded": "0",
        "lastUpdateSeqNum": "699429"
      }
    ]
  }
}

b. 接口调用失败,则返回JSON数据示例为:

{
    "errorCode": 940000,
    "message": "系统内部错误"
}

8.1.2查询跨链交易详情

接口说明:

骨干节点可以查询主链上的跨链交易详情

请求参数:

字段名 类型 是否必填 描述
ACSN String 链AC号
crossTxNo String 跨链交易编号

返回数据:

字段名 类型 描述
crossTxNo String 跨链编号。"A:B:XXXXXXXX",A为源AC码,B为目标AC码,XXXX为随机编码
srcACSN String 源链的AC码
destACSN String 目标链的AC码
srcAddress String 源地址
destAddress String 目标地址
remark String 用户备注信息
result String 跨链交易的状态。"0":初始化,"1":已确认成功, "2":已确认失败, "3":已超时。非0是终止态,不会再次发生变化。
refunded String 星火积分交易失败后的退款信息。0无需退款,1是待退款,2是已退款。
extension String 扩展消息。用户自定义消息
version String 协议版本号.如果版本号不兼容,则跨链交易失败
lastUpdateSeqNum String 最新更新的区块号
payloadType String 交易类型。0主链积分转移,1子链积分兑换,2合约互操作,3数据传递
payloadGas Object 星火链积分对象,当payloadType=0时候有值
payloadGas.amount String 转移的积分
payloadSgas Object 子链积分对象,当payloadType=1时候有值
payloadSgas.masterAmount String 主链积分数
payloadSgas.srcAmount String 源链积分数
payloadSgas.srcTokenRate String 源链积分汇率
payloadSgas.destAmount String 目标链积分数
payloadSgas.destTokenRate String 目标链积分汇率
payloadCall Object 调用合约对象,当payloadType=2时候有值
payloadCall.contractMethod String 调用方法
payloadCall.contractInput[] Array 参数数组[{"key-param1":"value-param1"},{"key-param2":"value-param2"}]
payloadCall.token Object 合约调用积分对象
payloadCall.token.masterAmount String 主链积分数
payloadCall.token.srcAmount String 源链积分数
payloadCall.token.srcTokenRate String 源链积分汇率
payloadCall.token.destAmount String 目标链积分数
payloadCall.token.destTokenRate String 目标链积分汇率
payloadData Object 跨链转移数据,当payloadType=3时有值
payloadData.data Object 参考BID协议文档定义
flowList Array 跨链事务流程的数组
flowList[i].ACSN String 交易所在的链
flowList[i].type String 事务类型。"0"用户发起,"1"子链跨链网关转发跨链,"2"子链跨链网关反馈,"3"用户取出
flowList[i].txSender String 交易发起人
flowList[i].txHash String 交易hash
flowList[i].lastUpdateSeqNum String 交易的区块号
flowList[i].txErrorCode String 交易错误码
flowList[i].txTime String 交易时间
flowList[i].ack Object 当flowList[i].type=2时候,有值
flowList[i].ack.ackResult String 跨链交易结果。"1"成功,"2"失败,"3":"超时"
flowList[i].proof Object 跨链证据,当flowList[i].type=1或者2时,有值
flowList[i].proof.ledgerSeq String 区块号
flowList[i].proof.txHash String 交易hash

示例:

(1)请求示例:

http请求方式:POST
https://{url}/crosschain/query/tx/detail
{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params": {
        "ACSN": "0",
        "crossTxNo": "0:by01:83e951266fc90b4fb0a9c35f01b072b9"
    }
}

(2)返回结果示例:

a. 接口调用成功,则返回JSON数据示例为:

{
  "errorCode": 0,
  "message": "操作成功",
  "data": {
    "ACSN": "0",
    "crossTxNo": "0:by01:83e951266fc90b4fb0a9c35f01b072b9",
    "srcACSN": "0",
    "destACSN": "by01",
    "srcAddress": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
    "destAddress": "did:bid:by01:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
    "remark": "remark",
    "result": "1",
    "refunded": "0",
    "lastUpdateSeqNum": "699434",
    "payloadType": "1",
    "payloadGas": null,
    "payloadContractCall": null,
    "payloadSgas": {
      "masterAmount": "1000",
      "srcAmount": "1000",
      "srcTokenRate": "1",
      "destAmount": "729",
      "destTokenRate": "0.7291"
    },
    "payloadData": null,
    "flowList": [
      {
        "ACSN": "0",
        "extension": "startTx, extension",
        "version": "1000",
        "type": "0",
        "txSender": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "txHash": "d4da61d82afe8b54f7cdf223889dc1dcb0833dc5ac487085ff177e2c3c94a747",
        "lastUpdateSeqNum": "699430",
        "txErrorCode": "0",
        "txTime": "1627999296000",
        "ack": null
      },
      {
        "ACSN": "0",
        "extension": "extension",
        "version": "1000",
        "type": "2",
        "txSender": "did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA",
        "txHash": "05b04091cd5b53e8ac64e30fb02d615f0d1ccb6e042321cdce6ea32edbab64fe",
        "lastUpdateSeqNum": "699434",
        "txErrorCode": "0",
        "txTime": "1627999333000",
        "ack": {
          "ackResult": "1"
        },
        "proof": {
           "ledgerSeq": "ledgerSeq",
           "txHash": "txHash"
        }
      }
    ]
  }
}

b. 接口调用失败,则返回JSON数据示例为:

{
    "errorCode": 940000,
    "message": "系统内部错误"
}

8.1.3查询跨链网关BID地址

接口说明:

查询当前子链子链网关BID地址

请求参数说明:

字段名 类型 是否必填 描述
ACSN String 目标链码

响应参数说明:

字段名 类型 描述
list Array 数组
list[i].ACSN String 链AC号
list[i].address String 公证人地址

示例:

(1)请求示例:

http请求方式:POST
https://{url}/crosschain/query/gateway/list

{
	"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params":{
    	"ACSN": "by02"
    }
}

(2)返回结果示例:

a. 接口调用成功,则返回JSON数据示例为:

{
  "errorCode": 0,
  "message": "操作成功",
  "data": {
    "list": [
      {
        "address": "did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA",
        "ACSN": "by02"
      }
    ]
  }
}

b. 接口调用失败,则返回JSON数据示例为:

{
    "errorCode": 940000,
    "message": "系统内部错误"
}

8.1.4查询子链兑换比例

接口说明:

查询主链积分兑换子链积分的兑换比例

请求参数说明:

字段名 类型 是否必填 描述
ACSN String 子链AC码

响应参数说明:

字段名 类型 描述
ACSN String 子链AC码
rate String 子链兑换比率
remark String 备注

示例:

(1)请求示例:

http请求方式:POST
https://{url}/crosschain/query/token/rate
{
  "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjI4MDcwODc0LCJiaWQiOiJkaWQ6YmlkOmVmQlpxY2lYc3UydG5nOWNFVlZXU0VQU3dFMlBod210In0.UVXqQaCF75hTjxpZYXk9gH2a5cKiGMr0CxweiCVR-X4",
  "params":{
    "ACSN": "by02"
  }
}

(2)返回结果示例:

a. 接口调用成功,则返回JSON数据示例为:

{
  "errorCode": 0,
  "message": "操作成功",
  "data": {
    "ACSN": "by02",
    "rate": "6.5893",
    "remark": "remark"
  }
}

b. 接口调用失败,则返回JSON数据示例为:

{
    "errorCode": 940000,
    "message": "系统内部错误"
}

8.1.5查询链积分精度

接口说明:

查询区块链积分的精度

请求参数说明:

字段名 类型 是否必填 描述
ACSN String 链AC码

响应参数说明:

字段名 类型 描述
ACSN String 子链AC码
precision String 精度

示例:

(1)请求示例:

http请求方式:POST
https://{url}/crosschain/query/chain/precision
{
	"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params":{
    	"ACSN": "by01"
    }
}

(2)返回结果示例:

a. 接口调用成功,则返回JSON数据示例为:

{
  "errorCode": 0,
  "message": "操作成功",
  "data": {
    "ACSN": "by01",
    "precision": "8"
  }
}

b. 接口调用失败,则返回JSON数据示例为:

{
    "errorCode": 940000,
    "message": "系统内部错误"
}

8.1.6查询跨链合约版本信息

接口说明:

查询主链或者子链其他子链版本信息

请求参数说明:

字段名 类型 是否必填 描述
ACSN String 链AC码

响应参数说明:

字段名 类型 描述
version String 版本信息

示例:

(1)请求示例:

http请求方式:POST
https://{url}/crosschain/query/base/version
{
	"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params":{
    	"ACSN": "by01"
    }
}

(2)返回结果示例:

a. 接口调用成功,则返回JSON数据示例为:

{
  "errorCode": 0,
  "message": "操作成功",
  "data": {
    "version": "1000"
  }
}

b. 接口调用失败,则返回JSON数据示例为:

{
    "errorCode": 940000,
    "message": "系统内部错误"
}

8.2 用户发起跨链交易

8.2.1 主链积分

A 获取交易blob

接口说明:

用户发起跨链交易,该接口用于构建交易的Blob内容。

http请求方式:POST
https://{url}/crosschain/user/start/tx/maingas/blob
{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params": {
        "userBid": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "srcAddress": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "destAddress": "did:bid:by02:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "destACSN": "by02",
        "payload": {
            "amount": "10"
        },
        "remark": "Iam from by01 for start main gas",
        "extension": "extension",
        "version": "1000"
    }
}

请求参数说明:

变量 类型 描述
userBid String 发起交易者BID,必须与srcAddress保持一致
srcAddress String 源地址
destAddress String 目标地址
destACSN String 目标链的AC码
payload Object 主链积分信息
payload.amount String 积分数量
extension String 用户扩展信息,选填
version String 版本信息,由原始用户发起交易携带,填写源链跨链合约的版本信息
remark String 备注信息

接口调用成功,则返回JSON数据示例为:

{
  "errorCode": 0,
  "message": "操作成功",
  "data": {
    "blobId": "289",
    "txHash": "13ef98abcfcef7d68cf7459d34a3ed472c1c8a8148314666bd94f7b384f3f3d9",
    "blob": "0A286469643A6269643A6566766F354D4B7842314B676671787A57757A64464B34756D59776338476A471026228303080712286469643A6269643A6566766F354D4B7842314B676671787A57757A64464B34756D59776338476A4752D4020A286469643A6269643A656634354C437344614A53385272576A58737A7031317066626F76665A744C41100A1AA5027B226D6574686F64223A2273746172745478222C22706172616D73223A7B22657874656E73696F6E223A22657874656E73696F6E222C227061796C6F616454797065223A2230222C227061796C6F6164223A7B22616D6F756E74223A223130227D2C22737263426964223A226469643A6269643A6566766F354D4B7842314B676671787A57757A64464B34756D59776338476A47222C2264657374426964223A226469643A6269643A627930323A6566766F354D4B7842314B676671787A57757A64464B34756D59776338476A47222C2272656D61726B223A2249616D2066726F6D206279303120666F72207374617274206D61696E20676173222C2276657273696F6E223A2231303030222C2264657374436861696E436F6465223A2262793032227D7D3098B3870538E807"
  }
}

返回数据:

字段名 类型 描述
blobId String blodId
txHash String 链上交易hash
blod String blod串

B 提交交易(上链)

接口说明:

用户构建完blob后使用用户私钥签名(参考 签名算法 章节),并通过该接口提交交易上链。

http请求方式:POST
https://{url}/crosschain/user/start/tx/maingas/submit
{
    	"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params":{
      "blobId": "3",
    "signerList": [{
        "signBlob": "4D47D46AA467C8DF8FD1D60374D9D2378AC536612C3B84E1AC9BA4EA55E10810482EC634EADED63A389F82573AB1E055698189F7497DF23C5E32CF26A7D8270F",
        "publicKey": "b06566086febd16adf6553cc9c000dba5f9f410d34f8541392303561dddc045b15ef4c"
    }]
   }
}

请求参数:

字段名 类型 是否必填 描述
blobId String(20) blobId(上一小节返回的blobId)
signerList List 签名者列表(注意:需要源用户签名)
signerList.signBlob String(128) 签名串
signerList.publicKey String(128) 签名者公钥

返回成功的JSON:

{
    "errorCode": "0",
    "message": "操作成功",
    "data": {
      	"txHash": "083b797ea00204d2c17a9e1bd77cab11385f475da756f76a96b922e4c7b8f7c7"
    }
}

返回数据:

字段名 类型 描述
txHash String 链上交易hash

8.2.2 子链积分兑换

A 获取交易blob

接口说明:

用户发起跨链交易,该接口用于构建交易的Blob内容。

http请求方式:POST
https://{url}/crosschain/user/start/tx/subgas/blob

{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params": {
        "userBid": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "srcAddress": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "destAddress": "did:bid:by02:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "destACSN": "by02",
        "payload": {
            "masterAmount": "10",
            "srcAmount": "10",
            "srcTokenRate": "1",
            "destAmount": "10",
            "destTokenRate": "6.5893"
        },
        "remark": "remark",
        "extension": "extension",
        "version": "1000"
    }
}

请求参数说明:

变量 类型 描述
userBid String 发起交易者BID,必须与srcAddress保持一致
srcAddress String 源地址
destAddress String 目标地址
destACSN String 目标链的AC码
payload Object
payload.masterAmount String 主链星火令数量
payload.srcAmount String 源链积分数量
payload.srcTokenRate String 源链积分的汇率
payload.destAmount String 目标链积分数量
payload.destTokenRate String 目标链积分的汇率(从主链获取)
extension String 用户扩展信息,选填
version String 版本信息,由原始用户发起交易携带,填写源链跨链合约的版本信息
remark String 备注信息

接口调用成功,则返回JSON数据示例为:

{
  "errorCode": 0,
  "message": "操作成功",
  "data": {
    "blobId": "15",
    "txHash": "d60c15bacbb7f98f00921d5ad17d49fafe0c65ea706d5d4ced25e490ac35e9e0",
    "blob": "0A286469643A6269643A65663477776B727A53564650545A4A627257433439446B416554535169377241101E228304080712286469643A6269643A656662384568753953475643546D32426276705069516A7A4E576F344C51414152D4030A286469643A6269643A6566427070397753676564315A5A72437566426D36374A4C55635255396375321AA7037B226D6574686F64223A227375626D6974426C6F636B486561646572222C22706172616D73223A7B22626C6F636B486561646572223A7B226163636F756E745F747265655F68617368223A22222C22636C6F73655F74696D65223A2231353933333338343030303032303030222C22636F6E73656E7375735F76616C75655F68617368223A22222C22666565735F68617368223A22222C2268617368223A2235323134303538363966626533633132396237383434383232333566616365633435656438653432313666633834653962623665336136386661653430636232222C2270726576696F75735F68617368223A2231323334363966626533633132396237383434383232333566616365633435656438653233313435363537646161313233343131326136386661653430636232222C22736571223A223938222C2274785F636F756E74223A223132222C2276616C696461746F72735F68617368223A22696E7465726E616C436861696E496432222C2276657273696F6E223A22227D2C22636861696E436F6465223A2262793031222C2264796E616D6963496E666F223A7B7D7D7D3080EAADE907"
  }
}

返回数据:

字段名 类型 描述
blobId String blodId
txHash String 链上交易hash
blod String blod串

B 提交交易(上链)

接口说明:

用户构建完blob后使用用户私钥签名(参考 签名算法 章节),并通过该接口提交交易上链。

http请求方式:POST
https://{url}/crosschain/user/start/tx/subgas/submit
{
    	"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params":{
      "blobId": "3",
    "signerList": [{
        "signBlob": "4D47D46AA467C8DF8FD1D60374D9D2378AC536612C3B84E1AC9BA4EA55E10810482EC634EADED63A389F82573AB1E055698189F7497DF23C5E32CF26A7D8270F",
        "publicKey": "b06566086febd16adf6553cc9c000dba5f9f410d34f8541392303561dddc045b15ef4c"
    }]
   }
}

请求参数:

字段名 类型 是否必填 描述
blobId String(20) blobId(上一小节返回的blobId)
signerList List 签名者列表(注意:需要源用户签名)
signerList.signBlob String(128) 签名串
signerList.publicKey String(128) 签名者公钥

返回成功的JSON:

{
    "errorCode": "0",
    "message": "操作成功",
    "data": {
      	"txHash": "083b797ea00204d2c17a9e1bd77cab11385f475da756f76a96b922e4c7b8f7c7"
    }
}

返回数据:

字段名 类型 描述
txHash String 链上交易hash

8.2.3 合约互操作

A 获取交易blob

接口说明:

用户发起跨链交易,该接口用于构建交易的Blob内容。

http请求方式:POST
https://{url}/crosschain/user/start/tx/contractcall/blob

{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params": {
        "userBid": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "srcAddress": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "destAddress": "did:bid:by02:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "destACSN": "by02",
        "payload": {
            "contractMethod": "helloMethord",
            "contractInput": [{
                "key": "key",
                "value": "value"
            }],
            "token": {
                "masterAmount": "10",
                "srcAmount": "10",
                "srcTokenRate": "1",
                "destAmount": "10",
                "destTokenRate": "6.5893"
            }
        },
        "remark": "remark",
        "extension": "extension",
        "version": "1000"
    }
}

请求参数说明:

变量 类型 描述
userBid String 发起交易者BID,必须与srcAddress保持一致
srcAddress String 源地址
destAddress String 目标地址
destACSN String 目标链的AC码
payload Object 自定义消息
payload.contractMethod String 目标合约方法
payload.contractInput Array 合约参数。用户自定义
payload.contractInput[n] Object/String/Array 自定义参数N
payload.token Object 可以为空,源链积分信息当涉及到需要支付资产时候,可以使用子链积分兑换的协议进行扩展
payload.token.masterAmount String 主链积分数量
payload.token.srcAmount String 源链积分数量
payload.token.srcTokenRate String 源链积分的汇率
payload.token.destAmount String 目标链积分数量
payload.token.destTokenRate String 目标链积分的汇率
extension String 用户扩展信息,选填
version String 版本信息,由原始用户发起交易携带,填写源链跨链合约的版本信息
remark String 备注信息

接口调用成功,则返回JSON数据示例为:

{
  "errorCode": 0,
  "message": "操作成功",
  "data": {
    "blobId": "15",
    "txHash": "d60c15bacbb7f98f00921d5ad17d49fafe0c65ea706d5d4ced25e490ac35e9e0",
    "blob": "0A286469643A6269643A65663477776B727A53564650545A4A627257433439446B416554535169377241101E228304080712286469643A6269643A656662384568753953475643546D32426276705069516A7A4E576F344C51414152D4030A286469643A6269643A6566427070397753676564315A5A72437566426D36374A4C55635255396375321AA7037B226D6574686F64223A227375626D6974426C6F636B486561646572222C22706172616D73223A7B22626C6F636B486561646572223A7B226163636F756E745F747265655F68617368223A22222C22636C6F73655F74696D65223A2231353933333338343030303032303030222C22636F6E73656E7375735F76616C75655F68617368223A22222C22666565735F68617368223A22222C2268617368223A2235323134303538363966626533633132396237383434383232333566616365633435656438653432313666633834653962623665336136386661653430636232222C2270726576696F75735F68617368223A2231323334363966626533633132396237383434383232333566616365633435656438653233313435363537646161313233343131326136386661653430636232222C22736571223A223938222C2274785F636F756E74223A223132222C2276616C696461746F72735F68617368223A22696E7465726E616C436861696E496432222C2276657273696F6E223A22227D2C22636861696E436F6465223A2262793031222C2264796E616D6963496E666F223A7B7D7D7D3080EAADE907"
  }
}

返回数据:

字段名 类型 描述
blobId String blodId
txHash String 链上交易hash
blod String blod串

B 提交交易(上链)

接口说明:

用户构建完blob后使用用户私钥签名(参考 签名算法 章节),并通过该接口提交交易上链。

http请求方式:POST
https://{url}/crosschain/user/start/tx/contractcall/submit
{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params":{"blobId": "3",
    "signerList": [{
        "signBlob": "4D47D46AA467C8DF8FD1D60374D9D2378AC536612C3B84E1AC9BA4EA55E10810482EC634EADED63A389F82573AB1E055698189F7497DF23C5E32CF26A7D8270F",
        "publicKey": "b06566086febd16adf6553cc9c000dba5f9f410d34f8541392303561dddc045b15ef4c"
    }]
  }
}

请求参数:

字段名 类型 是否必填 描述
blobId String(20) blobId(上一小节返回的blobId)
signerList List 签名者列表(注意:需要源用户签名)
signerList.signBlob String(128) 签名串
signerList.publicKey String(128) 签名者公钥

返回成功的JSON:

{
    "errorCode": "0",
    "message": "操作成功",
    "data": {
      	"txHash": "083b797ea00204d2c17a9e1bd77cab11385f475da756f76a96b922e4c7b8f7c7"
    }
}

返回数据:

字段名 类型 描述
txHash String 链上交易hash,(可用于查询上链交易最终状态)

8.2.4 数据传递

A 获取交易blob

接口说明:

用户发起跨链交易,该接口用于构建交易的Blob内容。

http请求方式:POST
https://{url}/crosschain/user/start/tx/docdata/blob

{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params": {
        "userBid": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "srcAddress": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "destAddress": "did:bid:by02:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "destACSN": "by02",
        "payload": {
            "data": "{\"document\":{\"extension\":{\"attributes\":[{\"encrypt\":0,\"format\":\"text\",\"value\":\"\",\"key\":\"name\",\"desc\":\"名称\"}],\"recovery\":[\"did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ#key-3\"],\"type\":101,\"ttl\":86400},\"created\":\"2021-09-15T09:09:58Z\",\"id\":\"did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ\",\"publicKey\":[{\"controller\":\"did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ\",\"publicKeyHex\":\"b06566fb27d38700b02f300b47427842e602e90c5768b553cfd6538af1681c6dbc5e38\",\"id\":\"did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ#key-1\",\"type\":\"Ed25519\"}],\"@context\":[\"https://w3.org/ns/did/v1\"],\"updated\":\"2021-09-15T09:09:58Z\",\"version\":\"1.0.0\",\"authentication\":[\"did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ#key-3\"]}}"
        },
        "remark": "remark",
        "extension": "extension",
        "version": "1000"
    }
}

请求参数说明:

变量 类型 描述
userBid String 发起交易者BID,必须与srcAddress保持一致
srcAddress String 源地址
destAddress String 目标地址
destACSN String 目标链的AC码
payload Object 自定义消息
payload.data String BID DOC对象,参考《BID协议》元数据章节,为json字符串
extension String 用户扩展信息,选填
version String 版本信息,由原始用户发起交易携带,填写源链跨链合约的版本信息
remark String 备注信息

接口调用成功,则返回JSON数据示例为:

{
  "errorCode": 0,
  "message": "操作成功",
  "data": {
    "blobId": "15",
    "txHash": "d60c15bacbb7f98f00921d5ad17d49fafe0c65ea706d5d4ced25e490ac35e9e0",
    "blob": "0A286469643A6269643A65663477776B727A53564650545A4A627257433439446B416554535169377241101E228304080712286469643A6269643A656662384568753953475643546D32426276705069516A7A4E576F344C51414152D4030A286469643A6269643A6566427070397753676564315A5A72437566426D36374A4C55635255396375321AA7037B226D6574686F64223A227375626D6974426C6F636B486561646572222C22706172616D73223A7B22626C6F636B486561646572223A7B226163636F756E745F747265655F68617368223A22222C22636C6F73655F74696D65223A2231353933333338343030303032303030222C22636F6E73656E7375735F76616C75655F68617368223A22222C22666565735F68617368223A22222C2268617368223A2235323134303538363966626533633132396237383434383232333566616365633435656438653432313666633834653962623665336136386661653430636232222C2270726576696F75735F68617368223A2231323334363966626533633132396237383434383232333566616365633435656438653233313435363537646161313233343131326136386661653430636232222C22736571223A223938222C2274785F636F756E74223A223132222C2276616C696461746F72735F68617368223A22696E7465726E616C436861696E496432222C2276657273696F6E223A22227D2C22636861696E436F6465223A2262793031222C2264796E616D6963496E666F223A7B7D7D7D3080EAADE907"
  }
}

返回数据:

字段名 类型 描述
blobId String blodId
txHash String 链上交易hash
blod String blod串

B 提交交易(上链)

接口说明:

用户构建完blob后使用用户私钥签名(参考 签名算法 章节),并通过该接口提交交易上链。

http请求方式:POST
https://{url}/crosschain/user/start/tx/docdata/submit
{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params":{
      "blobId": "3",
    "signerList": [{
        "signBlob": "4D47D46AA467C8DF8FD1D60374D9D2378AC536612C3B84E1AC9BA4EA55E10810482EC634EADED63A389F82573AB1E055698189F7497DF23C5E32CF26A7D8270F",
        "publicKey": "b06566086febd16adf6553cc9c000dba5f9f410d34f8541392303561dddc045b15ef4c"
    }]
 }
}

请求参数:

字段名 类型 是否必填 描述
blobId String(20) blobId(上一小节返回的blobId)
signerList List 签名者列表(注意:需要源用户签名)
signerList.signBlob String(128) 签名串
signerList.publicKey String(128) 签名者公钥

返回成功的JSON:

{
    "errorCode": "0",
    "message": "操作成功",
    "data": {
      	"txHash": "083b797ea00204d2c17a9e1bd77cab11385f475da756f76a96b922e4c7b8f7c7"
    }
}

返回数据:

字段名 类型 描述
txHash String 链上交易hash,(可用于查询上链交易最终状态)

8. 3 骨干节点的跨链网关操作

8.3.1 跨链网关转发跨链交易

8.3.1.1 主链积分

A 获取交易blob

接口说明:

子链跨链网关监听到当前子链发起的跨链交易后,将该跨链交易转发到主链,该接口用于构建交易的Blob内容。

http请求方式:POST
https://{url}/crosschain/backbone/send/tx/maingas/blob

{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params": {
        "gatewayAddress": "did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA",
        "crossTxNo": "by01:0:96c1a5e14db0a1cc676931874ba9849c",
        "srcAddress": "did:bid:by01:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "destAddress": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "srcACSN": "by01",
        "destACSN": "0",
        "payload": {
            "amount": "200"
        },
        "remark": "remark",
        "extension": "extension",
        "version": "1000",
        "proof": {
            "ledgerSeq": "ledgerSeq",
            "txHash": "txHash"
        }
    }
}

请求参数说明:

变量 类型 描述
gatewayAddress String(64) 跨链网关BID地址(在平台链详情中查看该地址),如:did:bid:eft4DztdgVgph2bmij93REU7kzrET7Do
crossTxNo String 跨链交易编号
srcAddress String 源地址
destAddress String 目标地址
srcACSN String 源链的AC码
destACSN String 目标链的AC码
payload Object 主链积分信息
payload.amount String 积分数量
extension String 用户扩展信息,选填
version String 版本信息,由原始用户发起交易携带,填写源链跨链合约的版本信息
remark String 备注信息
proof Object 子链的跨链存证对象
proof.ledgerSeq String 子链上跨链交易的区块号
proof.txHash String 子链上跨链交易的哈希值

接口调用成功,则返回JSON数据示例为:

{
    "errorCode": 0,
    "message": "操作成功",
    "data": {
        "blobId": "15",
        "txHash": "d60c15bacbb7f98f00921d5ad17d49fafe0c65ea706d5d4ced25e490ac35e9e0",
        "blob": "0A286469643A6269643A65663477776B727A53564650545A4A627257433439446B416554535169377241101E228304080712286469643A6269643A656662384568753953475643546D32426276705069516A7A4E576F344C51414152D4030A286469643A6269643A6566427070397753676564315A5A72437566426D36374A4C55635255396375321AA7037B226D6574686F64223A227375626D6974426C6F636B486561646572222C22706172616D73223A7B22626C6F636B486561646572223A7B226163636F756E745F747265655F68617368223A22222C22636C6F73655F74696D65223A2231353933333338343030303032303030222C22636F6E73656E7375735F76616C75655F68617368223A22222C22666565735F68617368223A22222C2268617368223A2235323134303538363966626533633132396237383434383232333566616365633435656438653432313666633834653962623665336136386661653430636232222C2270726576696F75735F68617368223A2231323334363966626533633132396237383434383232333566616365633435656438653233313435363537646161313233343131326136386661653430636232222C22736571223A223938222C2274785F636F756E74223A223132222C2276616C696461746F72735F68617368223A22696E7465726E616C436861696E496432222C2276657273696F6E223A22227D2C22636861696E436F6465223A2262793031222C2264796E616D6963496E666F223A7B7D7D7D3080EAADE907"
    }
}

返回数据:

字段名 类型 描述
blobId String blodId
txHash String 链上交易hash
blod String blod串
B 提交交易(上链)

接口说明:

子链跨链网关监听到当前子链发起的跨链交易后,使用跨链网关的私钥对blob签名(参考 签名算法 章节),并将该跨链交易转发到主链,该接口用于提交交易上链。

http请求方式:POST
https://{url}/crosschain/backbone/send/tx/maingas/submit
{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params":{
      "blobId": "3",
    "signerList": [{
        "signBlob": "4D47D46AA467C8DF8FD1D60374D9D2378AC536612C3B84E1AC9BA4EA55E10810482EC634EADED63A389F82573AB1E055698189F7497DF23C5E32CF26A7D8270F",
        "publicKey": "b06566086febd16adf6553cc9c000dba5f9f410d34f8541392303561dddc045b15ef4c"
    }]
    }
}

请求参数:

字段名 类型 是否必填 描述
blobId String(20) blobId(上一小节返回的blobId)
signerList List 签名者列表(注意:需要源用户签名)
signerList.signBlob String(128) 签名串
signerList.publicKey String(128) 签名者公钥

返回成功的JSON:

{
    "errorCode": "0",
    "message": "操作成功",
    "data": {
      	"txHash": "083b797ea00204d2c17a9e1bd77cab11385f475da756f76a96b922e4c7b8f7c7"
    }
}

返回数据:

字段名 类型 描述
txHash String 链上交易hash

8.3.1.2 子链积分兑换

A 获取交易blob

接口说明:

子链网关监听到当前子链发起的跨链交易后,将该跨链交易转发到主链,该接口用于构建交易的Blob内容。

http请求方式:POST
https://{url}/crosschain/backbone/send/tx/subgas/blob

{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params": {
        "gatewayAddress": "did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA",
        "crossTxNo": "by01:0:55bee90c7ce3e658a1729a7cc5ffb773",
        "srcAddress": "did:bid:by01:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "destAddress": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "srcACSN": "by01",
        "destACSN": "0",
        "payload": {
            "masterAmount": "1371",
            "srcAmount": "1000",
            "srcTokenRate": "0.7291",
            "destAmount": "1371",
            "destTokenRate": "1"
        },
        "remark": "remark",
        "extension": "extension",
        "version": "1000",
        "proof": {
            "ledgerSeq": "ledgerSeq",
            "txHash": "txHash"
        }
    }
}

请求参数说明:

变量 类型 描述
gatewayAddress String(64) 跨链网关BID地址(在平台链详情中查看该地址),如:did:bid:eft4DztdgVgph2bmij93REU7kzrET7Do
crossTxNo String 跨链交易编号
srcAddress String 源地址
destAddress String 目标地址
destACSN String 目标链的AC码
payload Object
payload.masterAmount String 主链星火令数量
payload.srcAmount String 源链积分数量
payload.srcTokenRate String 源链积分的汇率
payload.destAmount String 目标链积分数量
payload.destTokenRate String 目标链积分的汇率(从主链获取)
extension String 用户扩展信息,选填
version String 版本信息,由原始用户发起交易携带,填写源链跨链合约的版本信息
remark String 备注信息
proof Object 子链的跨链存证对象
proof.ledgerSeq String 子链上跨链交易的区块号
proof.txHash String 子链上跨链交易的哈希值

接口调用成功,则返回JSON数据示例为:

{
    "errorCode": 0,
    "message": "操作成功",
    "data": {
        "blobId": "15",
        "txHash": "d60c15bacbb7f98f00921d5ad17d49fafe0c65ea706d5d4ced25e490ac35e9e0",
        "blob": "0A286469643A6269643A65663477776B727A53564650545A4A627257433439446B416554535169377241101E228304080712286469643A6269643A656662384568753953475643546D32426276705069516A7A4E576F344C51414152D4030A286469643A6269643A6566427070397753676564315A5A72437566426D36374A4C55635255396375321AA7037B226D6574686F64223A227375626D6974426C6F636B486561646572222C22706172616D73223A7B22626C6F636B486561646572223A7B226163636F756E745F747265655F68617368223A22222C22636C6F73655F74696D65223A2231353933333338343030303032303030222C22636F6E73656E7375735F76616C75655F68617368223A22222C22666565735F68617368223A22222C2268617368223A2235323134303538363966626533633132396237383434383232333566616365633435656438653432313666633834653962623665336136386661653430636232222C2270726576696F75735F68617368223A2231323334363966626533633132396237383434383232333566616365633435656438653233313435363537646161313233343131326136386661653430636232222C22736571223A223938222C2274785F636F756E74223A223132222C2276616C696461746F72735F68617368223A22696E7465726E616C436861696E496432222C2276657273696F6E223A22227D2C22636861696E436F6465223A2262793031222C2264796E616D6963496E666F223A7B7D7D7D3080EAADE907"
    }
}

返回数据:

字段名 类型 描述
blobId String blodId
txHash String 链上交易hash
blod String blod串
B 提交交易(上链)

接口说明:

子链网关监听到当前子链发起的跨链交易后,使用跨链网关的私钥对blob签名(参考 签名算法 章节),将该跨链交易转发到主链,该接口用于提交交易上链。

http请求方式:POST
https://{url}/crosschain/backbone/send/tx/subgas/submit
{
     "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params":{
      "blobId": "3",
    "signerList": [{
        "signBlob": "4D47D46AA467C8DF8FD1D60374D9D2378AC536612C3B84E1AC9BA4EA55E10810482EC634EADED63A389F82573AB1E055698189F7497DF23C5E32CF26A7D8270F",
        "publicKey": "b06566086febd16adf6553cc9c000dba5f9f410d34f8541392303561dddc045b15ef4c"
    }]
    }
}

请求参数:

字段名 类型 是否必填 描述
blobId String(20) blobId(上一小节返回的blobId)
signerList List 签名者列表(注意:需要源用户签名)
signerList.signBlob String(128) 签名串
signerList.publicKey String(128) 签名者公钥

返回成功的JSON:

{
    "errorCode": "0",
    "message": "操作成功",
    "data": {
        "txHash": "083b797ea00204d2c17a9e1bd77cab11385f475da756f76a96b922e4c7b8f7c7"
    }
}

返回数据:

字段名 类型 描述
txHash String 链上交易hash

8.3.1.3 合约互操作

A 获取交易blob

接口说明:

子链跨链网关监听到当前子链发起的跨链交易后,将该跨链交易转发到主链,该接口用于构建交易的Blob内容。

http请求方式:POST
https://{url}/crosschain/backbone/send/tx/contractcall/blob

{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params": {
        "gatewayAddress": "did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA",
        "crossTxNo": "by01:0:2e51d896fd392a4aca439f530e9d62e7",
        "srcAddress": "did:bid:by01:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "destAddress": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "srcACSN": "by01",
        "destACSN": "0",
        "payload": {
            "contractMethod": "helloMethord",
            "contractInput": [{
                "key": "key",
                "value": "value"
            }],
            "token": {
                "masterAmount": "10",
                "srcAmount": "10",
                "srcTokenRate": "1",
                "destAmount": "10",
                "destTokenRate": "6.5893"
            }
        },
        "remark": "remark",
        "extension": "extension",
        "version": "1000",
        "proof": {
            "ledgerSeq": "ledgerSeq",
            "txHash": "txHash"
        }
    }
}

请求参数说明:

变量 类型 描述
gatewayAddress String(64) 链网关地址(在平台链详情中查看该地址),如:did:bid:eft4DztdgVgph2bmij93REU7kzrET7Do
crossTxNo String 跨链交易编号
srcAddress String 源地址
destAddress String 目标地址
destACSN String 目标链的AC码
payload Object 自定义消息
payload.contractMethod String 目标合约方法
payload.contractInput Array 合约参数。用户自定义
payload.contractInput[n] Object/String/Array 自定义参数N
payload.token Object 可以为空,源链积分信息当涉及到需要支付资产时候,可以使用子链积分兑换的协议进行扩展
payload.token.masterAmount String 主链积分数量
payload.token.srcAmount String 源链积分数量
payload.token.srcTokenRate String 源链积分的汇率
payload.token.destAmount String 目标链积分数量
payload.token.destTokenRate String 目标链积分的汇率
extension String 用户扩展信息,选填
version String 版本信息,由原始用户发起交易携带,填写源链跨链合约的版本信息
remark String 备注信息
proof Object 子链的跨链存证对象
proof.ledgerSeq String 子链上跨链交易的区块号
proof.txHash String 子链上跨链交易的哈希值

接口调用成功,则返回JSON数据示例为:

{
    "errorCode": 0,
    "message": "操作成功",
    "data": {
        "blobId": "15",
        "txHash": "d60c15bacbb7f98f00921d5ad17d49fafe0c65ea706d5d4ced25e490ac35e9e0",
        "blob": "0A286469643A6269643A65663477776B727A53564650545A4A627257433439446B416554535169377241101E228304080712286469643A6269643A656662384568753953475643546D32426276705069516A7A4E576F344C51414152D4030A286469643A6269643A6566427070397753676564315A5A72437566426D36374A4C55635255396375321AA7037B226D6574686F64223A227375626D6974426C6F636B486561646572222C22706172616D73223A7B22626C6F636B486561646572223A7B226163636F756E745F747265655F68617368223A22222C22636C6F73655F74696D65223A2231353933333338343030303032303030222C22636F6E73656E7375735F76616C75655F68617368223A22222C22666565735F68617368223A22222C2268617368223A2235323134303538363966626533633132396237383434383232333566616365633435656438653432313666633834653962623665336136386661653430636232222C2270726576696F75735F68617368223A2231323334363966626533633132396237383434383232333566616365633435656438653233313435363537646161313233343131326136386661653430636232222C22736571223A223938222C2274785F636F756E74223A223132222C2276616C696461746F72735F68617368223A22696E7465726E616C436861696E496432222C2276657273696F6E223A22227D2C22636861696E436F6465223A2262793031222C2264796E616D6963496E666F223A7B7D7D7D3080EAADE907"
    }
}

返回数据:

字段名 类型 描述
blobId String blodId
txHash String 链上交易hash
blod String blod串
B 提交交易(上链)

接口说明:

子链跨链网关监听到当前子链发起的跨链交易后,使用跨链网关的私钥对blob签名(参考 签名算法 章节),将该跨链交易转发到主链,该接口用于提交交易上链。

http请求方式:POST
https://{url}/crosschain/backbone/send/tx/contractcall/submit
{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
    "params": {
        "blobId": "3",
        "signerList": [{
            "signBlob": "4D47D46AA467C8DF8FD1D60374D9D2378AC536612C3B84E1AC9BA4EA55E10810482EC634EADED63A389F82573AB1E055698189F7497DF23C5E32CF26A7D8270F",
            "publicKey": "b06566086febd16adf6553cc9c000dba5f9f410d34f8541392303561dddc045b15ef4c"
        }]
    }
}

请求参数:

字段名 类型 是否必填 描述
blobId String(20) blobId(上一小节返回的blobId)
signerList List 签名者列表(注意:需要源用户签名)
signerList.signBlob String(128) 签名串
signerList.publicKey String(128) 签名者公钥

返回成功的JSON:

{
    "errorCode": "0",
    "message": "操作成功",
    "data": {
      	"txHash": "083b797ea00204d2c17a9e1bd77cab11385f475da756f76a96b922e4c7b8f7c7"
    }
}

返回数据:

字段名 类型 描述
txHash String 链上交易hash

8.3.1.4 数据传递

A 获取交易blob

接口说明:

子链跨链网关监听到当前子链发起的跨链交易后,将该跨链交易转发到主链,该接口用于构建交易的Blob内容。

http请求方式:POST
https://{url}/crosschain/backbone/send/tx/docdata/blob

{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
    "params": {
        "gatewayAddress": "did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA",
        "crossTxNo": "by01:0:da4c3a53f357b9096667d2333e103d3a",
        "srcAddress": "did:bid:by01:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "destAddress": "did:bid:efvo5MKxB1KgfqxzWuzdFK4umYwc8GjG",
        "srcACSN": "by01",
        "destACSN": "0",
        "payload": {
            "data": "{\"document\":{\"extension\":{\"attributes\":[{\"encrypt\":0,\"format\":\"text\",\"value\":\"\",\"key\":\"name\",\"desc\":\"名称\"}],\"recovery\":[\"did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ#key-3\"],\"type\":101,\"ttl\":86400},\"created\":\"2021-09-15T09:09:58Z\",\"id\":\"did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ\",\"publicKey\":[{\"controller\":\"did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ\",\"publicKeyHex\":\"b06566fb27d38700b02f300b47427842e602e90c5768b553cfd6538af1681c6dbc5e38\",\"id\":\"did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ#key-1\",\"type\":\"Ed25519\"}],\"@context\":[\"https://w3.org/ns/did/v1\"],\"updated\":\"2021-09-15T09:09:58Z\",\"version\":\"1.0.0\",\"authentication\":[\"did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ#key-3\"]}}"
        },
        "remark": "remark",
        "extension": "extension",
        "version": "1000",
        "proof": {
            "ledgerSeq": "ledgerSeq",
            "txHash": "txHash"
        }
    }
}

请求参数说明:

变量 类型 描述
gatewayAddress String(64) 跨链网关BID地址(在平台链详情中查看该地址),如:did:bid:eft4DztdgVgph2bmij93REU7kzrET7Do
crossTxNo String 跨链交易编号
srcAddress String 源地址
destAddress String 目标地址
destACSN String 目标链的AC码
payload Object 自定义消息
payload.document String BID DOC对象,参考《BID协议》元数据章节
extension String 用户扩展信息,选填
version String 版本信息,由原始用户发起交易携带,填写源链跨链合约的版本信息
remark String 备注信息
proof Object 子链的跨链存证对象
proof.ledgerSeq String 子链上跨链交易的区块号
proof.txHash String 子链上跨链交易的哈希值

接口调用成功,则返回JSON数据示例为:

{
    "errorCode": 0,
    "message": "操作成功",
    "data": {
        "blobId": "15",
        "txHash": "d60c15bacbb7f98f00921d5ad17d49fafe0c65ea706d5d4ced25e490ac35e9e0",
        "blob": "0A286469643A6269643A65663477776B727A53564650545A4A627257433439446B416554535169377241101E228304080712286469643A6269643A656662384568753953475643546D32426276705069516A7A4E576F344C51414152D4030A286469643A6269643A6566427070397753676564315A5A72437566426D36374A4C55635255396375321AA7037B226D6574686F64223A227375626D6974426C6F636B486561646572222C22706172616D73223A7B22626C6F636B486561646572223A7B226163636F756E745F747265655F68617368223A22222C22636C6F73655F74696D65223A2231353933333338343030303032303030222C22636F6E73656E7375735F76616C75655F68617368223A22222C22666565735F68617368223A22222C2268617368223A2235323134303538363966626533633132396237383434383232333566616365633435656438653432313666633834653962623665336136386661653430636232222C2270726576696F75735F68617368223A2231323334363966626533633132396237383434383232333566616365633435656438653233313435363537646161313233343131326136386661653430636232222C22736571223A223938222C2274785F636F756E74223A223132222C2276616C696461746F72735F68617368223A22696E7465726E616C436861696E496432222C2276657273696F6E223A22227D2C22636861696E436F6465223A2262793031222C2264796E616D6963496E666F223A7B7D7D7D3080EAADE907"
    }
}

返回数据:

字段名 类型 描述
blobId String blodId
txHash String 链上交易hash
blod String blod串
B 提交交易(上链)

接口说明:

子链网关监听到当前子链发起的跨链交易后,使用跨链网关的私钥对blob签名(参考 签名算法 章节),将该跨链交易转发到主链,该接口用于提交交易上链。

http请求方式:POST
https://{url}/crosschain/backbone/send/tx/docdata/submit
{
  "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
  "params": {
    "blobId": "3",
    "signerList": [{
      "signBlob": "4D47D46AA467C8DF8FD1D60374D9D2378AC536612C3B84E1AC9BA4EA55E10810482EC634EADED63A389F82573AB1E055698189F7497DF23C5E32CF26A7D8270F",
      "publicKey": "b06566086febd16adf6553cc9c000dba5f9f410d34f8541392303561dddc045b15ef4c"
    }]
  }
}

请求参数:

字段名 类型 是否必填 描述
blobId String(20) blobId(上一小节返回的blobId)
signerList List 签名者列表(注意:需要源用户签名)
signerList.signBlob String(128) 签名串
signerList.publicKey String(128) 签名者公钥

返回成功的JSON:

{
    "errorCode": "0",
    "message": "操作成功",
    "data": {
      	"txHash": "083b797ea00204d2c17a9e1bd77cab11385f475da756f76a96b922e4c7b8f7c7"
    }
}

返回数据:

字段名 类型 描述
txHash String 链上交易hash

8.3.2 骨干节点反馈跨链交易

8.3.2.1 获取交易blob

接口说明:

子链跨链网关监听到当前子链的跨链交易结束后,将构建反馈交易发送至主链,该接口用于构建交易的Blob内容。

http请求方式:POST
https://{url}/crosschain/backbone/acked/tx/blob

{
    "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJhdkNmcDdscU16SDVtTk5kIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjExNzQ0NjIwLCJiaWQiOiJkaWQ6YmlkOmVmejNvVFFHN0xZZktKRWlDeU1nNThOOVREZjl2cFd5In0.sCm7gaWX_nmIasUyo64tn5FeAqDaxxDn2Kb9Jixk2YI",
    "params": {
        "gatewayAddress": "did:bid:efb8Ehu9SGVCTm2BbvpPiQjzNWo4LQAA",
        "crossTxNo": "by01:0:55bee90c7ce3e658a1729a7cc5ffb773",
        "result": "1",
        "extension": "extension",
        "version": "1000",
        "proof": {
            "ledgerSeq": "ledgerSeq",
            "txHash": "txHash"
        }
    }
}

请求参数说明:

变量 类型 描述
gatewayAddress String(64) 跨链网关BID地址(在平台链详情中查看该地址),如:did:bid:eft4DztdgVgph2bmij93REU7kzrET7Do
crossTxNo String 跨链交易编号
result String 跨链交易结果。"1"成功,"2"失败,"3":"超时"
extension String 扩展信息。可以不填
version String 版本信息,由原始用户发起交易携带,填写源链跨链合约的版本信息
proof Object 子链的跨链存证对象
proof.ledgerSeq String 子链上跨链交易的区块号
proof.txHash String 子链上跨链交易的哈希值

接口调用成功,则返回JSON数据示例为:

{
    "errorCode": 0,
    "message": "操作成功",
    "data": {
        "blobId": "15",
        "txHash": "d60c15bacbb7f98f00921d5ad17d49fafe0c65ea706d5d4ced25e490ac35e9e0",
        "blob": "0A286469643A6269643A65663477776B727A53564650545A4A627257433439446B416554535169377241101E228304080712286469643A6269643A656662384568753953475643546D32426276705069516A7A4E576F344C51414152D4030A286469643A6269643A6566427070397753676564315A5A72437566426D36374A4C55635255396375321AA7037B226D6574686F64223A227375626D6974426C6F636B486561646572222C22706172616D73223A7B22626C6F636B486561646572223A7B226163636F756E745F747265655F68617368223A22222C22636C6F73655F74696D65223A2231353933333338343030303032303030222C22636F6E73656E7375735F76616C75655F68617368223A22222C22666565735F68617368223A22222C2268617368223A2235323134303538363966626533633132396237383434383232333566616365633435656438653432313666633834653962623665336136386661653430636232222C2270726576696F75735F68617368223A2231323334363966626533633132396237383434383232333566616365633435656438653233313435363537646161313233343131326136386661653430636232222C22736571223A223938222C2274785F636F756E74223A223132222C2276616C696461746F72735F68617368223A22696E7465726E616C436861696E496432222C2276657273696F6E223A22227D2C22636861696E436F6465223A2262793031222C2264796E616D6963496E666F223A7B7D7D7D3080EAADE907"
    }
}

返回数据:

字段名 类型 描述
blobId String blodId
txHash String 链上交易hash
blod String blod串

8.3.2.2 提交交易(上链)

接口说明:

子链网关监听到当前子链的跨链交易结束后,使用跨链网关的私钥对blob签名(参考 签名算法 章节),将构建反馈交易发送至主链,该接口用于提交交易上链。

http请求方式:POST
https://{url}/crosschain/backbone/acked/tx/submit
{
  "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhcGlLZXkiOiJDcHB0NHRuMFlFZkIyMHJXIiwiaXNzIjoiQklGLUNIQUlOIiwiZXhwIjoxNjE5MzQyNDIyLCJiaWQiOiJkaWQ6YmlkOmVmMjhwTTlNRzNUR1hHeVdBVzRKcFdDRnNKRGQ1TUJuYyJ9.3gcQQBqvqtZH1q-TfUiGne68R1TnBcvLAA6nIJ8qDGU",
  "params": {
    "blobId": "3",
    "signerList": [{
      "signBlob": "4D47D46AA467C8DF8FD1D60374D9D2378AC536612C3B84E1AC9BA4EA55E10810482EC634EADED63A389F82573AB1E055698189F7497DF23C5E32CF26A7D8270F",
      "publicKey": "b06566086febd16adf6553cc9c000dba5f9f410d34f8541392303561dddc045b15ef4c"
    }]
  }
}

请求参数:

字段名 类型 是否必填 描述
blobId String(20) blobId(5.4.1返回blobId)
signerList List 签名者列表(注意:需要源用户签名)
signerList.signBlob String(128) 签名串
signerList.publicKey String(128) 签名者公钥

返回JSON:

{
    "errorCode": "0",
    "message": "操作成功",
      "data": {
      "txHash": "d60c15bacbb7f98f00921d5ad17d49fafe0c65ea706d5d4ced25e490ac35e9e0"
    }
}

返回数据:

字段名 类型 描述
txHash String 链上交易hash

8.4 跨链交易类型及结构体定义

8.4.1 主链积分转移(payloadType=”0”)

变量 类型 描述
payload Object 主链积分信息
payload.amount String 积分数量

8.4.2 子链积分兑换(payloadType=”1”)

场景使用:

  • 子链积分兑换成主链星火令

  • 子链积分兑换成其他子链积分

  • 主链星火令兑换成子链积分

骨干节点的跨链网关需要承担兑换子链积分和转移主链积分的功能。

参数说明:

变量 类型 描述
payload Object 源链积分信息
payload.masterAmount String 主链积分数量
payload.srcAmount String 源链积分数量
payload.srcTokenRate String 源链积分的汇率
payload.destAmount String 目标链积分数量
payload.destTokenRate String 目标链积分的汇率
变量 类型 描述
payload Object 源链积分信息
payload.masterAmount String 主链星火令数量
payload.srcAmount String 源链积分数量
payload.srcTokenRate String 源链积分的汇率(从主链获取)
payload.destAmount String 目标链积分数量
payload.destTokenRate String 目标链积分的汇率(从主链获取)

兑换汇率换算方式如下:

masterAmount = srcAmount/srcTokenRate;  主链积分=源链积分/源链汇率

masterAmount = destAmount/destTokenRate;  主链积分=目标链积分/目标链汇率

srcAmount/srcTokenRate = destAmount/destTokenRate;  源链积分/源链汇率 = 目标链积分/目标链汇率

8.4.3 合约互操作(payloadType=”2”)

变量 类型 描述
payload Object 自定义消息
payload.contractMethod String 目标合约方法
payload.contractInput Array 合约参数。用户自定义
payload.contractInput[0] Object/String/Array 自定义参数一
payload.contractInput[n] Object/String/Array 自定义参数N
payload.token Object 可以为空,源链积分信息当涉及到需要支付资产时候,可以使用子链积分兑换的协议进行扩展
payload.token.masterAmount String 主链积分数量
payload.token.srcAmount String 源链积分数量
payload.token.srcTokenRate String 源链积分的汇率
payload.token.destAmount String 目标链积分数量
payload.token.destTokenRate String 目标链积分的汇率

8.4.4 数据传递(payloadType=”3”)

源链用户发起,传递到目标链,最终以BID DOC方式存储

变量 类型 描述
payload Object 数据对象
payload.data String BID 协议数据的json字符串形式,参考《BID协议》元数据章节

参考示例如下为json对象,需要转换成json字符串传输


{
	"document":{
        //BID协议字段
        "extension": {
            "attributes": [{
                "encrypt": 0,
                "format": "text",
                "value": "",
                "key": "name",
                "desc": "名称"
            }],
            "recovery": ["did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ#key-3"],
            "type": 101,
            "ttl": 86400
        },
        "created": "2021-09-15T09:09:58Z",
        "id": "did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ",
        "publicKey": [{
            "controller": "did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ",
            "publicKeyHex": "b06566fb27d38700b02f300b47427842e602e90c5768b553cfd6538af1681c6dbc5e38",
            "id": "did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ#key-1",
            "type": "Ed25519"
        }],
        "@context": ["https://w3.org/ns/did/v1"],
        "updated": "2021-09-15T09:09:58Z",
        "version": "1.0.0",
        "authentication": ["did:bid:efDGF1rKehMRM62vqxLS4aqrcFxmF2sQ#key-3"]
   }
}