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"]
}
}