前言
趣链科技的BitXHub跨链平台是业界较为完善的跨链开源解决方案,主要通过中继链、网关和插件机制对跨链流程中的功能、安全性和灵活性等进行了优化。本文对BitXHub的meshplus/pier-client-fabric插件源码作深入解读,学习其优秀的功能设计与代码结构。
跨链交易流程
典型的跨链调用流程
(各应用链申请/注册跨链功能、权限验证及中继链处理等细节此处省略。)
本文所描述的跨链流程中,插件是作为一个独立的服务运行在应用链上的,所以更准确来说应该叫应用链适配器,而趣链BitXHub跨链平台的这一部分是作为一个插件,由网关启动的,但两者逻辑角色和核心功能较一致(下文统称为插件)。
所有需要进行跨链交易/接收跨链请求的应用链需要安装插件(适配器)并部署提供的跨链合约和业务合约。具体交易流程如下:
用户通过客户端/ SDK 调用涉及跨链交易的业务合约时,应用链将调用跨链合约并抛出跨链事件;
应用链插件将轮询/订阅跨链合约抛出的跨链事件并发送至跨链网关;
跨链网关将从监听到的跨链事件中提取相应方法和参数转换为目标应用链可识别的交易形式(BitXHub自主构建了统一的跨链通用传输协议IBTP)并提交到中继链,作一些处理后再发送到目标应用链的跨链网关;
目标链的跨链网关提取跨链交易请求信息中的合约方法和参数部分,调用插件提供的构建交易接口(一般通过各应用链架构对应的SDK实现)调用相应业务合约;
接收到插件接口提交的调用合约请求后,业务合约执行跨链交易并返回交易状态;
插件接收交易执行状态结果,并结合自己对于超时控制、接口调用问题等错误处理,返回执行状态结果;
跨链网关接收到插件返回的执行结果后,选择相应回调函数并传递给中继链,如成功则回调函数为commit提交,失败则为rollback回滚;
中继链将回调函数信息传递给交易发起方跨链网关;
交易发起方跨链网关通过插件提供的相应接口调用相应回调函数;
插件接收到跨链网关请求后,调用跨链合约中的回调方法(一般通过个应用链架构对应的SDK实现);
跨链合约调用业务合约,执行回调方法相应交易(如状态锁定等&#