1. 定义

中继链内置了事务管理合约,提供基于本地消息表的事务支持,实现了跨链事务的最终一致性。

step1. 事务管理合约在处理跨链交易时,根据目的链数量的不同(一个或多个),采用不同的逻辑生成跨链事务 ID,并将事务 ID 对应的初始状态记录在事务管理合约。

step2. 当目的链执行完跨链交易后,事务管理合约根据目的链交易的执行结果(成功或失败)更新对应事务的状态。

step3. 事务管理合约提供了接口,可供各应用链查询某个事务 ID 对应的事务状态。若应用链发现事务执行失败,则需要负责业务上的回滚操作。


2. 类型
2.1 一对一跨链

当来源链业务合约提供来源链的回调方法和回滚方法。

  • 跨链事务ID=来源链ID || 目的链ID || IBTP index组成

step1. 中继链跨链事务合约初始化跨链交易所对应的跨链事务, 在跨链事务合约中以KV形式记录跨链事务ID和事务状态信息,初始的跨链状态信息为TransactionStatus_BEGIN

step2. 中继链跨链事务合约根据其中的回执信息,更新跨链事务ID的状态,如果成功,则状态更新为TransactionStatus_SUCCESS,否则为TransactionStatus_FAILURE。

step3. 判断跨链事务的最终状态

  • 如果成功,则来源链跨链网关调用来源链业务合约注册的回调函数进行回调;
  • 如果失败,则来源链跨链网关将调用来源链业务合约注册的回滚函数进行回滚操作。
    (目的链执行完跨链交易时,由目的链跨链网关得到执行的结果(成功或失败),并将该信息封装成IBTP receipt提交给中继链)

2.2 一对多跨链

一对多跨链是指,在一个来源链的业务合约的交易中,抛出了多个指向不同目的链的跨链事件。

2.2.1 一对多跨链的事务分为全局事务和子事务的概念

  • 子事务:指来源链和某个目的链的跨链事务
  • 全局事务:综合各个子事务的整体事务

2.2.2 事务信息结构

type txInfo struct {// 全局事务状态globalState string// 子事务信息,key为子事务ID,即各目的链的地址,value为子事务状态childTxInfo map<string, string>
}

2.2.3 步骤

step1. 全局事务状态和子事务初始状态为BEGIN。
step2. 各目的链的跨链网关获取跨链交易并提交给各目的链执行,目的链执行完子事务后由跨链网关根据执行结果向中继链反馈子事务状态,中继链事务管理合约将进行相应的更新

step3. 判断交易结果

  • 如果成功,则将对应的子事务状态设置为SUCCESS,当所有子事务状态均为SUCCESS时,跨链事务管理合约将该全局事务ID对应的事务状态更新为SUCCESS
  • 如果失败,则将对应的子事务状态设置为FAILURE,并将该全局事务ID对应的事务状态更新为FAILURE

step4. 各个应用链(包含来源链和目的链)的跨链网关可以获取中继链的全局事务和子事务的状态, 来对应用链进行业务上的“回调”操作或“回滚”操作。

3 跨链事务合约设计

跨链事务管理合约接口:

// 一对一跨链事务初始化
Begin(txId string)// 一对多跨链事务初始化
BeginMultiTXs(globalId string, childTxIds ...string)// 报告事务执行结果
Report(txId string, result int32)// 获取事务状态
GetStatus(txId string)

趣链 BitXHub跨链平台 (9)跨链事务相关推荐

  1. 基于区块链的供应链金融服务平台

    基于区块链的供应链金融服务平台 马小峰1,杜明晓1,余文兵2,王意1 1. 同济大学控制科学与工程系,上海 201804 2. 上海欧冶金融信息服务股份有限公司,上海 201804 摘要:区块链具有去 ...

  2. 趣链 BitXHub跨链平台 (10)跨链自治

    1. 模块框架 中继链上的治理服务涵盖了对跨链平台上各种行为的管控,包括中继链节点管理.应用链管理.验证规则管理.链上服务管理.统一身份管理.跨链权限管理.数据同步管理.治理业务管理.投票策略管理等 ...

  3. 趣链 BitXHub跨链平台 (2)跨链网络拓扑

    1. BitXHub 由三个角色组成:中继链.跨链网关.应用链 1.1 中继链(Relay-chain) 一种实现 IBTP 协议的开放许可链,确保跨链交易的事务一致性. 应用链管理 跨链交易的可信验 ...

  4. 趣链 BitXHub跨链平台 (1)技术架构

    1. 技术架构 自下而上分为物理层.基础层.跨链服务层.接口层四个部分. 1.1 物理层 支持普通物理机.云主机或者嵌入式设备 1.2 基础层 包含联盟链本身的模块,比如网络模块.存储模块.共识模块. ...

  5. 趣链 BitXHub跨链平台 (3)跨链交易流程

    1. 流程图 执行跨链调用之前需要执行一些准备工作,包括应用链注册,验证规则注册以及跨链双方的业务链上依据我们的跨链合约撰写规则设置好相应的跨链合约. 1.1 步骤 step1. SDK 调用 具体的 ...

  6. 趣链 BitXHub跨链平台 (6)IBC通信协议

    1. 跨链传输协议 IBTP(InterBlockchain Transfer Protocol) 支持异构区块链之间的跨链交易路由和可信验证,基于 IBTP 协议跨链网关可将不同应用链抛出的事件数据 ...

  7. 趣链 BitXHub跨链平台 (7)应用链插件

    1. 跨链网关插件机制 适配不同区块链,让应用链适配和跨链网关能够解耦,支持动态加载插件的方式完成应用链的接入 将应用链上进行操作的部分全部封装到应用链插件中 按照跨链网关和应用链交互的需求确定了一套 ...

  8. 趣链 BitXHub跨链平台 (4)跨链网关“初介绍”

    1. 区块链互联网络 跨链网关形成一个 P2P 网络,对不同中继链的跨链消息进行消息路由,达到平行扩展中继链的效果.eg.可支持超过 1000+的应用链的并发. 通过多签认证的方式,实现不同中继链上的 ...

  9. 趣链 BitXHub跨链平台 (5)跨链网关-子模块

    1. 子模块架构 一个对接具体类型区块链以及转发跨链消息的重要组成部分.它主要提供了应用链适配.跨链交易监听.跨链交易执行.跨链交易路由等核心功能. 2. 子模块说明 2.1 监听模块 跨链合约在收到 ...

最新文章

  1. (转)datagridview 自定义列三步走
  2. Window server 补丁修复及补丁回滚
  3. 使用JavaScript给对象修改注册监听器
  4. Myeclipse修改设置Default VM Arguments
  5. 人脸识别技术场景应用
  6. 同事发来的文件是个html,逮到一个疑是感染html,htm,网页文件的木马
  7. 诊断 Linux 服务器的性能
  8. webpack-obfuscator运行报错
  9. 【爬虫进阶】验证码处理:打码平台的使用(反反爬)
  10. 在Matlab中构建最大带权生成树
  11. 医学影像分割论文合集
  12. 数据挖掘算法揭秘篇——分类方法(一)
  13. 【UER #4】量子态的棋盘
  14. 人见人爱A+B(C++)
  15. 爬虫读取疫情数据,可根据兴趣进行调整,并邮件形式每天定时发送
  16. 彻底卸载360画报教程
  17. android实现简单的记账功能
  18. android 百度地图两点之间的距离计算,Android 百度地图 计算两点之间的距离
  19. 空间弱磁场微尺度成像技术及应用
  20. win10系统下查看端口是否被占用

热门文章

  1. Android --- 新版本取色器吸管工具点击无效,没反应
  2. mysql注入绕过单引号_SQL注入-绕过过滤规则
  3. 数据中心在疫情期间发挥的作用
  4. 数据中心设计的六个关键考虑因素
  5. 自动转换开关(ATS)在数据中心配电系统中的应用
  6. Interview:算法岗位面试—10.11下午—上海某公司算法岗位(偏机器学习,互联网数字行业)技术面试考点之XGBoost的特点、python的可变不可变的数据类型、赋值浅拷贝深拷贝区别
  7. 成功解决mxnet-tag\mxnet\src\operator\tensor\./matrix_op-inl.h:189: Using target_shape will be deprecated
  8. 成功解决python\ops\seq2seq.py TypeError: ms_error() got an unexpected keyword argument 'labels'
  9. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Button展示图片事件)
  10. Keras 实现 LSTM