【区块链】查询-Vassago

简介

要解决的难点:

  • 跨链场景下难以获取全局信息,因此难以验证一致性和完整性
    • 单链下的共识可以确保查询结果的一致性,但是跨链场景下缺少对应的跨链共识
  • 一条查询由各个链上的许多子查询组成,按照串行的方式进行查询,延迟较高

  • 现有的跨链技术缺点:

    • 只能保证两条链之间查询的一致性

Vassago的优势:

  • 跨链交易溯源依赖:

    • 实现可验证
    • 并行子查询,提高查询效率
  • 两层结构:

    • dependency blockchain(DB):保存交易的溯源信息
    • transaction blockchain(TB) group:普通的链,负责记录链内和链间交易,用户可以选择加入TB组中
  • 减少不必要的存储开销

现状分析

现有跨链技术的局限性

主流跨链技术包括侧链和中继链,都能够保证跨链交易的原子性

但是存在以下缺点:

  • 效率低:在需要交易溯源的查询场景下,子查询的目标由其他子查询的结果来决定,串行子查询造成延迟变大
  • 验证难度大:跨链依赖不能被所有节点认同

    • 一致性:交易历史发生改变后,其他链不能够及时得知,使得一致性难以验证(例如分叉)

      该情况在单链下不会发生,因为所有节点都能保持一致性

      解决方法,如果交易溯源信息被所有节点认同了,那么不一致的情况会被检测到

    • 完整性:跨链交易溯源依赖难以保存在不同的链中,使得查询时无法确认是否涉及其他链上的交易,该跨哪条链等

      解决方法,所有链的存在和跨链交易的溯源依赖都被所有节点已知并认同

例子

fig1

模型

两层结构:

  • dependency blockchain(DB):保存交易的溯源信息
  • transaction blockchain(TB) group:普通的链,负责记录链内和链间交易,用户可以选择加入TB组中

两个准则:

  • 跨链交易记录不可篡改——需要使用一个区块链来保存这些数据从而做到不可篡改,由跨链节点参与维护
  • 查询结果与链上数据正确一致,也就是保证跨链数据对于数据查询来讲是可信的——使用智能合约记录跨链交易的相关性

fig2

系统包含四层结构:

  • 智能合约层

    • 依赖API
    • 交易API
  • 两层存储层

    • DB:保存跨链交易的依赖图,可以由合约层的依赖API调用
    • TB Group:多条链组成的跨链系统,通过调用依赖API来进行各种操作;单条链可以动态地加入或退出系统,因此跨链交易依赖会动态地改变

对数据进行操作

交易溯源依赖定义

跨链溯源依赖表明了不同链之间数据是如何流动的

跨链交易依赖定义为一些交易上下行相连,但不属于同一个链

跨链溯源依赖表明了多个跨链交易依赖之间的关系,由若干跨链交易依赖组成,这些依赖的上下行相连

fig3

依赖图由若干溯源依赖组成,上下行相连

相当于一个跨链交易就形成一个依赖图

自适应两层区块链结构

DB和TB Group

节点可以随意在两种链中选择主节点或从节点身份,或者不参与

fig4

查询和执行交易

由智能合约执行查询和交易

fig5

示例,carol需要完成交易3和4,图中表示了交易4是如何验证交易3的,需要验证完成后,交易4才被执行

保证查询结果一致性和完整性:从DB获取依赖信息来进行验证和确认

并行子查询

如右图c所示

性能分析

单依赖情况下

每个节点的存储开销:O为组织的数量,N为每条链中的交易数量

fig6

如果不使用依赖来存储交易的关系信息,需要节点来储存尽可能多的所有链上信息,该开销为vassago中的几乎两倍

fig7

多依赖情况下

每个节点的存储开销为O(d),d为TB二叉树的深度

不使用依赖的存储开销为 $O(2^d)$

Author: iwannaeat
Link: https://iwannaeat.github.io/2023/01/11/【区块链】查询-Vassago/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.