简介
要解决的难点:
- 跨链场景下难以获取全局信息,因此难以验证一致性和完整性
- 单链下的共识可以确保查询结果的一致性,但是跨链场景下缺少对应的跨链共识
一条查询由各个链上的许多子查询组成,按照串行的方式进行查询,延迟较高
现有的跨链技术缺点:
- 只能保证两条链之间查询的一致性
Vassago的优势:
跨链交易溯源依赖:
- 实现可验证
- 并行子查询,提高查询效率
两层结构:
- dependency blockchain(DB):保存交易的溯源信息
- transaction blockchain(TB) group:普通的链,负责记录链内和链间交易,用户可以选择加入TB组中
减少不必要的存储开销
现状分析
现有跨链技术的局限性
主流跨链技术包括侧链和中继链,都能够保证跨链交易的原子性
但是存在以下缺点:
- 效率低:在需要交易溯源的查询场景下,子查询的目标由其他子查询的结果来决定,串行子查询造成延迟变大
验证难度大:跨链依赖不能被所有节点认同
一致性:交易历史发生改变后,其他链不能够及时得知,使得一致性难以验证(例如分叉)
该情况在单链下不会发生,因为所有节点都能保持一致性
解决方法,如果交易溯源信息被所有节点认同了,那么不一致的情况会被检测到
完整性:跨链交易溯源依赖难以保存在不同的链中,使得查询时无法确认是否涉及其他链上的交易,该跨哪条链等
解决方法,所有链的存在和跨链交易的溯源依赖都被所有节点已知并认同
例子
模型
两层结构:
- dependency blockchain(DB):保存交易的溯源信息
- transaction blockchain(TB) group:普通的链,负责记录链内和链间交易,用户可以选择加入TB组中
两个准则:
- 跨链交易记录不可篡改——需要使用一个区块链来保存这些数据从而做到不可篡改,由跨链节点参与维护
- 查询结果与链上数据正确一致,也就是保证跨链数据对于数据查询来讲是可信的——使用智能合约记录跨链交易的相关性
系统包含四层结构:
智能合约层
- 依赖API
- 交易API
两层存储层
- DB:保存跨链交易的依赖图,可以由合约层的依赖API调用
- TB Group:多条链组成的跨链系统,通过调用依赖API来进行各种操作;单条链可以动态地加入或退出系统,因此跨链交易依赖会动态地改变
对数据进行操作
交易溯源依赖定义
跨链溯源依赖表明了不同链之间数据是如何流动的
跨链交易依赖定义为一些交易上下行相连,但不属于同一个链
跨链溯源依赖表明了多个跨链交易依赖之间的关系,由若干跨链交易依赖组成,这些依赖的上下行相连
依赖图由若干溯源依赖组成,上下行相连
相当于一个跨链交易就形成一个依赖图
自适应两层区块链结构
DB和TB Group
节点可以随意在两种链中选择主节点或从节点身份,或者不参与
查询和执行交易
由智能合约执行查询和交易
示例,carol需要完成交易3和4,图中表示了交易4是如何验证交易3的,需要验证完成后,交易4才被执行
保证查询结果一致性和完整性:从DB获取依赖信息来进行验证和确认
并行子查询
如右图c所示
性能分析
单依赖情况下
每个节点的存储开销:O为组织的数量,N为每条链中的交易数量
如果不使用依赖来存储交易的关系信息,需要节点来储存尽可能多的所有链上信息,该开销为vassago中的几乎两倍
多依赖情况下
每个节点的存储开销为O(d),d为TB二叉树的深度
不使用依赖的存储开销为 $O(2^d)$