03aceae02d | ||
---|---|---|
.. | ||
README.md |
README.md
产品问题
【跨链技术】
1. 跨链的必要性
一是技术层面,区块链技术在单链架构下本身存在着性能、容量不足等问题。单链由于受到目前共识速度的限制,节点的执行性能无法做到线性扩展,这限制了高交易吞吐量低延迟的商业场景的应用。除此之外,随着区块链运行时间的增长,其存储容量也将逐渐增长,且这种数据增长的速度甚至会超过单链存储介质的容量上限。目前的区块链共识算法、存储结构、和安全机制不同导致链与链之间缺乏统一的互联互通机制,这极大限制了区块链技术和应用生态的健康发展。
二是业务层面存在跨区块链业务的资产交换和信息交换需求。在资产交换方面,一些区块链事实上仍处于互相隔离的状态,它们之间的资产交换主要依靠中心化的交易所来完成,中心化的交换方式既不安全规则也不透明。 而信息交换由于涉及链与链之间的数据同步和相应的跨链调用,实现更为复杂,目前各个区块链应用之间互通壁垒极高,无法有效地进行链上信息共享。
2. 跨链技术的可行性
目前区块链行业已经出现了很多的跨链技术产品,主要采用公证人机制(notary schemes)、侧链/中继(sidechains/relays)、哈希锁定(Hash-locking)等技术,已经在公链的场景中有很多应用例如:闪电网络,去中心化交易所等。
联盟链场景中采用类似技术及其增强技术,解决联盟链跨链需求,目前的产品已经能够解决跨链中的关键问题:
- 跨链交易的验证问题,如何确认记录交易发生的区块得到了足够的确认,即交易事务中各分布式网络间的数据一致性问题;
- 跨链事务的原子性问题,如何管理跨链事务中的各子交易确保跨链事务整体完整的原子性,即跨链事务的发生只存在两中状态完成或失败;
- 不同区块链之间的协议适配问题,如何对采用不同架构与协议的区块链之间进行适配,需要跨链协议中设计可以兼容多种异构区块链的数据结构、命名规范以及通信方式等。
【产品功能】
1. 产品简介
趣链科技跨链技术平台BitXHub,提出了一套完整的通用跨链传输协议IBTP(Inter-Blokcchain Transfer Protocol), 能够完美支持和兼容任意区块链系统,实现异构区块链的无缝连接。BitXHub采用先进的中继+网关的组合技术,解决了跨链中的交易捕获、传输以及验证的核心难题,所有关键技术均具有完全自主知识产权。同时,平台具备完善的跨链接口管理、异构链成员治理、联盟权限管控等联盟跨链专用机制,是目前业界最完备的异构联盟链跨链技术平台,已经在金融、政务等业务场景中进行了相关应用验证。
2. 实现原理
BitXHub提出一种可扩展的适应不同异构区块链系统之间的跨链方案,通过设计可插拔的跨链网关技术,实现区块链网络间的的协议转换,并支持异构区块链之间的交易验证,该方案支持异构区块链之间交易的可信验证和可靠传递。
应用基于插件机制的跨链网关,实现异构应用链的快速适配与统一管理,以动态加载插件的形式随时加入平台;应用基于智能合约的异构交易验证技术,将交易验证规则进行全生命周期的管理,实现统一、高效的跨链交易合法性验证;应用基于可信事件的跨链传输协议,消除异构区块链之间技术机制的差异性,实现跨链交易格式的通用化与标准化,达成区块链平台在应用级别的可扩展性。
3. 跨链交易基本流程
- SDK 调用 具体的业务链A的合约方法;
- 合约方法被执行,抛出跨链事件T1;
- 业务链A的跨链网关监听到T1, 将其转换成IBTP结构,提交到中继链BitXHub上;
- BitXHub 依据相关规则对T1进行验证以及路由;
- 业务链B的跨链网关接受到T1并根据IBTP结构进行解析,转换成业务链B可识别的交易Tb
- B的跨链网关将Tb提交到业务链B上进行执行;
4. 跨链效率
跨链的完整流程所需时间:T = Ta + Thub + Tb
其中Thub是中继链的验证和共识所需的时间,可达到 5000TPS 左右;Ta和Tb分别是应用链A和应用链B的执行时间,其性能取决于应用链本身的执行效率。
5. 社区版与商业版有何区别?
社区版和商业版都支持基础功能:
- 中继服务(跨链交易验证与路由、跨链成员管理)
- 网关服务(跨链交易捕获、解析与调用)
- SDK组件(GO、JAVA)
其他对比如下:
6. 跨链平台目前适配了哪几种应用链?
目前已适配趣链区块链平台和Hyperledger Fabric,其他类型区块链(包括公链)可以按需通过插件形式灵活接入。社区版目前已提供Fabric的插件。
7. 所有跨链交易都会经过中继链处理,是否会存在数据安全性问题?如何实现不同业务链跨链时的数据隔离和隐私性?
中继链中的所有交易均以IBTP协议的数据结构进行存储、验证:
参数 | 说明 |
---|---|
From | 来源链ID |
To | 目的链ID |
Version | 协议版本号 |
Index | 跨链交易索引 |
Payload | 跨链调用内容编码 |
Timestamp | 跨链事件发生的时间戳 |
Proof | 跨链交易证明 |
Extra | 自定义字段 |
其中的Payload是跨链交易的核心内容,BitXHub通过多种方式保证其安全性:
- 采用特殊的编码机制,仅跨链双方可解;
- 采用加密的方式,仅跨链双方持有秘钥;
- 链上权限控制,非相关方无法读取相应交易(之后将核心代码开源以保证可信);
- 采用类似隐私交易的机制,仅相关控制的BitXHub节点中保存相关方跨链交易
8. 跨链转账交易如何保证事务性?如何做回滚或补偿呢?
目前社区版本暂不支持,主要方案是跨链网关结合中继链中存储的跨链交易状态信息共同保障,预计于2020年9月上线,敬请期待!
9. 通过DataSwapper相互传递的数据,如何保证真实性呢?
- 验证引擎会对跨链交易、跨链交易执行结果采用SPV证明机制进行验证,来确保跨链交易和跨链交易的执行都是真实在链中发生的。
- 应用链中跨链的接口必须按照规定实现,验证引擎会对比跨链调用的接口以及通过SPV机制验证调用接口执行后返回的数据的有效性。
技术问题
【跨链准备】
1. 中继链由谁维护?如何搭建?
中继链本身就是一条联盟链,作为去中心化的可信中介,推荐的搭建方案是由参与跨链的各方共同维护节点来搭建中继链。
2. 跨链网关应该部署在哪里?
跨链网关部署是由应用链方决定的,跨链网关只负责跨链交易的收集、跨链真实性凭证收集和跨链交易执行;整个跨链操作的可信是通过验证引擎对IBTP的验证实现的,如果跨链网关篡改数据,中继链的验证引擎将不会验证通过。
3. 对于未适配应用链需要做哪些开发工作,改造的工作量是多少?
应用链适配工作包括:
- 根据我们提供的模板撰写跨链路由合约broker, 主要一方面将自己的合约某些方法提供给其他方使用;二是提供接受来自其他方的交换的信息或资产接口
- 对于需要跨链的方法,添加调用跨链的逻辑,就是调用我们提供的跨链合约接口
- 部署跨链网关(常见区块链无需改造,特殊的区块链只需要提供和区块链相关的SDK基本就可以)
- 将应用链的信息注册到BitXHub中,如链的ID,节点数量,共识算法类型等
- 根据应用链的共识机制编写交易的验证规则,详见验证规则编写文档
【跨链操作】
1. Fabric没有token,在跨链转账时使用的是什么资产模型?
wiki中给出的例子是一个模拟资产操作的一个合约,对资产模型没做特定的假设。
2. 对于已经存在业务的应用链,是不是需要更改原来的业务合约才能兼容新的资产类型?
对于已有的业务合约需要进行一定的改造,即实现规定的几个接口,详见业务合约改造文档