基于多区块链协作的高效可验证溯源查询
近年来,区块链系统被广泛应用于数据溯源场景,其有效保证了溯源结果的真实性。传统上,所有参与方都驻留在单个区块链系统中,从而催生出许多面向单区块链系统的溯源方案。与此同时,各方单独部署自己的区块链系统已经成为一种趋势。不幸的是,当扩展到对抗性跨链商业交易时,现有的单区块链查询方案无法适用于多区块链的部署场景。具体而言,由于缺乏对跨链依赖的全局知识,查询结果可能在多个区块链上不一致和不完整。此外,这些方案顺序在区块链间执行跨链溯源查询,导致了较高的查询延迟。在本文中,我们提出了一种支持高效且可验证的多链溯源查询系统,其融合了三个创新设计:1) 探索跨链交易的依赖关系,2) 通过在共享区块链上记录和查询依赖关系来验证跨链来源的真实性,以及 3) 通过并行化查询提高效率。实验结果表明,我们的溯源方案可以在保证吞吐量不变的前提下,将查询延迟缩短 85.9%。
该成果“Vassago: Efficient and Authenticated Provenance Query on Multiple Blockchains”发表在CCF-B类会议The 40th International Symposium on Reliable Distributed Systems (SRDS 2021)上,是实验室分布式系统组在区块链领域的研究成果。
- 论文链接:https://ieeexplore.ieee.org/abstract/document/9603540
背景与动机
图1 多区块链场景下Ford溯源查询
区块链系统由于其不可篡改和透明的优点,已被广泛应用于供应链等许多领域中。然而,在许多场景中,并不是所有的参与方都能参与到单一的区块链系统中。例如,在 COVID-19 疫苗的供应链中,来自不同国家的供应商可能需要通过区块链系统合作建立供应链。由于单一区块链缺乏可扩展性、以及不同国家的各种监管政策,将所有相关供应商的疫苗交易记录在一个区块链中是不切实际的。针对该问题,每个国家通常会分别部署独立的区块链系统,以保证数据安全性。这种多区块链系统的部署场景,要求设计跨链查询方案来追踪疫苗在这些区块链上的流通。图1展示了一个多区块链场景下,供应链最下游参与者Ford对目标的历史交易记录的溯源查询需求。
与单链查询相比,跨链查询面临两大挑战:无法保证数据真实性和较高的查询延迟。具体而言,在单链查询场景中,区块链共识可以保证查询结果的真实性。然而在多链场景中,缺少一种覆盖多条链的跨链共识。因此,跨链查询结果的真实性无法有效保证。此外,跨链查询由每个区块链上的多个子查询任务组成,每个子查询任务都会产生额外的查询延迟,从而导致了较高的整体延迟。
设计与实现
为了应对上述挑战,我们根据溯源场景本身存在的事务依赖关系,设计了一种跨链来源依赖关系。这种依赖关系可以作为一个链中的交易是否在其他链中具有相应交易的证明。通过这种依赖,可以验证查询结果的一致性和完整性,从而保证跨链查询的数据真实性。此外,一旦获得依赖,跨链查询中的子查询任务可以并行执行,从而提高整体查询效率。
图2 Vassago系统架构
基于上述思想,我们设计跨链架构Vassago,它包含自适应两层架构。如图2所示,第一层包含一个依赖区块链(DB),它记录了跨链来源的依赖。第二层包括一个交易区块链(TB)组,它包含一组执行链内和链间交易的TB。用户将按需加入DB中定义的TB。
a)跨链事务依赖
b) 跨链溯源依赖
图3 跨链溯源依赖关系
图3描述我们定义的跨链依赖关系,包括跨链交易依赖和跨链溯源依赖。再次以背景问题介绍的场景为例,物品首先来自区块链1,然后经由区块链2,最后在区块链3中进行消费。每个组包含多个企业。组内不依赖其他组交易的交易用蓝色方块表示,而依赖其他组交易的交易(即跨链交易)用红色方块表示。黑色箭头表示发生在一组中的交易依赖,红色箭头表示跨链交易依赖。图中显示了两个跨链交易依赖:Tx3和Tx4之间的依赖Rcro1和Tx6和Tx7之间的依赖Rcro2。依赖方向是从下游企业到上游企业。蓝色箭头表示跨链溯源依赖关系,例如图中来源依赖关系Rint1将下游交易依赖关系Rcro2与上游交易依赖关系Rcro1联系起来。此外,还存在其他一些从其他区块链发起的跨链来源依赖关系。所有蓝色箭头的集合将构成一个项目的完整溯源依赖图。
图4 Ford进行跨链溯源查询
图4描绘了Ford的跨链溯源查询的过程。跨链溯源查询查询包括5个步骤:项目溯源请求、依赖查询、跨链查询、结果验证和结果返回。更具体地说,如果Ford想要在多个区块链之间进行查询,他需要首先向TB3中的智能合约提出项目溯源请求。作为响应,智能合约向DB查询与目标项目相关的跨链溯源依赖关系。之后,TB3可以根据物体的跨链溯源依赖对所有相关的TB执行溯源查询。在验证阶段,当存在不一致的跨链交易时,会与DB中记录的依赖关系进行比对,从而发现错误的跨链交易。
性能评估
为了评估Vassago,我们在Hyperledger Fabric上面实现了一个原型系统。系统部署了8组机器,每组维护4个节点。进行了多次实验,利用Blockbench测试系统性能。我们的实验结果证明了Vassago在执行跨链查询方面的高效率和高扩展性。
图5 有无依赖关系的查询性能对比
与无依赖的系统相比,Vassago可以减少85.9%的数据查询延迟。我们比较了有和没有依赖的系统的查询延迟,并描绘了如图5所示的结果。由于Vassago 中的每个参与者都存储了依赖关系,因此查询者可以在不同TB中并行执行查询。没有依赖关系时,查询延迟会随着块数的增加而线性增加。相比之下,它在Vassag中几乎保持不变。特别是当总查询数据达到80万区块时,Vassago的查询延迟仅为58.41ms,优于无依赖的410.56ms。此外,系统中涉及的组织数量越多,查询延迟的减少就越大。综上所述,Vassago可以显著提升跨链数据查询的效率。
