paint-brush
PIECHAIN 演示:探索实用的区块链互操作性框架经过@interoperability
392 讀數
392 讀數

PIECHAIN 演示:探索实用的区块链互操作性框架

太長; 讀書

PIECHAIN 引入了基于 Kafka 的区块链互操作性框架,确保原子跨链交易并支持跨链拍卖等实际应用,并支持以太坊、Hyperledger Fabric 和 Quorum 区块链。
featured image - PIECHAIN 演示:探索实用的区块链互操作性框架
Interoperability in Software Publication HackerNoon profile picture
0-item

作者:

(1)Daniel Reijsbergen,新加坡南洋理工大学;

(2) Aung Maw,新加坡科技设计大学,新加坡,新加坡

(3) 张景池,新加坡南洋理工大学,新加坡;

(4) Tien Tuan Anh Dinh,迪肯大学,澳大利亚墨尔本;

(5)Anwitaman Datta,新加坡南洋理工大学

内容概述

摘要与引言

PIEChain 概述

PIEChain 的实现

示范计划

扩展

参考


抽象的

近年来,出现了大量不同的区块链平台,但其中许多平台都是孤立运行的。因此,需要可靠的跨链通信来实现区块链互操作性。区块链互操作性具有挑战性,因为交易通常无法撤销——因此,如果提交了一笔交易,则协议必须确保所有相关交易也都已提交。现有的互操作性方法(例如 Cosmos 和 Polkadot)受到限制,因为它们仅支持其自身子链之间的互操作性,或者需要对现有区块链进行侵入性更改。为了克服这一限制,我们提出了 PIECHAIN,这是一种基于 Kafka 的通用跨链通信框架。我们利用 PIECHAIN 进行实际案例研究:跨链拍卖,其中持有多条链上的代币的用户竞标另一条链上出售的门票。PIECHAIN 是第一个公开可用的、实际的跨链通信通用框架实现。


一、引言

区块链是一种可复制、防篡改的数据库,专为恶劣环境而设计。它由许多节点组成,其中一些节点可能是恶意的,这些节点维护一个仅可追加的账本。账本存储修改某些全局状态的交易。在典型示例(即加密货币 [7])中,全局状态是用户帐户和原生(可替代)代币,账本包含将代币从一个帐户转移到另一个帐户的交易。在另一个新兴应用中,区块链存储唯一代表资产的非同质化代币 (NFT),例如数字艺术作品或音乐会门票。许多区块链还支持智能合约,让用户定义自己的状态和修改状态的代码。智能合约存储在账本中,并由所有区块链节点复制和保持一致。近年来,许多独立的区块链平台应运而生,形成了一个长尾生态系统。一方面,有少数非常受欢迎的通用区块链平台,如以太坊和 Hyperledger。另一方面,有数千个为特定应用而设计的小型区块链,其中大多数仅处于开发初期。截至 2023 年初,其中包括 10,000 多种加密货币 [3],以及用于医疗保健、身份管理和物联网的区块链。一般来说,这些区块链不互操作,即它们存在于孤岛中。因此,区块链互操作性,即用户在不同区块链上交换信息或资产的能力,是一个越来越受到研究界关注的主题 [6]、[10]、[4]、[1]、[11]。


图 1. PIECHAIN 架构:跨链服务(CC-SVC)从 Kafka 网络读取/写入事件,并与不同的底层区块链(BC)交互。


设计安全的区块链互操作性框架的主要挑战之一是保证原子性,即,要么商定的一组交易的所有步骤都成功终止,要么全部终止。这在区块链中比在传统数据库中更复杂,因为区块链交易(原则上)是不可逆的。例如,如果已经在链 B 上支付了链 A 上的 NFT,那么原子性要求链 A 上的交易必须继续进行,因为链 B 上的交易无法逆转。保证原子性的一种常见方法是将交易中涉及的所有代币托管在智能合约中,并仅通过由所有各方签署的提交消息释放它们 [6]。区块链互操作性的另一个重要挑战是保证活性,以便托管的代币不会永远被冻结。为了确保活性,节点必须能够发送中止消息,允许所有各方从托管中提取其资产。


为了保证原子性和活性,互操作性框架必须能够容忍敌对节点向一条区块链发送提交消息,向另一条区块链发送中止消息。众所周知,在异步网络(即消息延迟没有限制)中,如果没有可信第三方 (TTP),这是不可能实现的 [10]。克服这一挑战主要有两种方法 [6]。第一种方法是将同步假设与中止的冷却期相结合 - 即假设提交投票一旦生成,就可以在任何中止冷却期结束之前附加到所有受影响的区块链。例如,哈希时间锁定合约 [5] 就采用了这种方法。第二种方法是用另一条区块链替换 TTP,以确保可以创建有效的提交或中止消息,但不能同时创建两者 [6]、[9]。


尽管科学文献中已经提出了这两种类型的方法,但它们要么没有公开可用的实现 [5]、[6]、[9],要么应用范围有限,例如,在另一个区块链上创建支持资产 [11] 或代币交换 [8]。在另一个发展中,出现了几个默认启用互操作性的区块链平台,例如 Cosmos 和 Polkadot。然而,这些平台只支持它们自己的子链之间的互操作性,或者需要对现有的区块链进行侵入性更改。这就需要一个通用的、实用的互操作性框架,该框架可以在不修改现有区块链平台的情况下与它们进行对接。我们的目标是提供这样一个框架。


贡献与创新:我们提出 PIECHAIN 来实现这一目标。由于在实践中很难实现同步,PIECHAIN 使用跨链服务来取代 TTP。跨链服务使用事件日志进行通信,该事件日志使用 Apache 的 Kafka 协议来提高效率。为了证明 PIECHAIN 的实际意义,我们为一个现实案例研究实施了一项跨链服务:跨链拍卖。我们将 PIECHAIN 与一些支持智能合约的最流行的区块链平台对接:以太坊、Hyperledger Fabric 和 Quorum。最后,我们为我们的案例研究开发了一个 GUI。拍卖案例研究是三个案例研究(两个拍卖和一笔闪电贷 [6])之一,其代码可以在 GitHub 上的 PIEChain 代码存储库中找到。



二、PIECHAIN 概述

A. 实体

PIECHAIN 中的主要实体如下(另见图 1):


区块链,存储用户持有的资产(例如代币、密钥)。用户可能持有多个区块链上的资产。每个区块链都有自己的协议来确定谁有读写权限——区块链通常是经过许可的,即一组固定的节点具有读写权限,或无需许可,即每个人都有读取权限并可以创建交易,具有足够能力(例如处理速度)的节点可以将交易添加到区块链。跨链服务(CC-SVC),允许用户在不同区块链上交换资产。每个 CC-SVC 都由一个与用户客户端交互的服务器组成,以促进跨链通信。实际上,CC-SVC 向用户收取参与费用,它可以与任意数量的区块链交互。在下文中,每个 CC-SVC 对应于一组涉及资产原子交换的事件,这些事件由服务器发送到 Kafka 分类账。实际上,单个服务器可以操作许多 CC-SVC。


Kafka 网络,作为 CC-SVC 生成的事件的附加日志。事件对应于底层区块链上进行的交易。Kafka 网络由一组固定节点运营,这些节点向 CCSVC 收取上传事件的费用。


在 PIECHAIN 中,我们假设 CC-SVC 是半信任的,并且它们有维护声誉的动机诚实行事,类似于商业外包服务提供商。Kafka 网络运营商不受信任,但没有不当行为的动机,因为他们不与底层区块链交互。这使我们能够运行优先考虑效率而不是安全性的协议(Kafka)。另一种设计是使 CC-SVC 不受信任,而使 Kafka 网络受信任。在这种情况下,每个 Kafka 节点都会为每个底层区块链运行一个(轻量级)客户端,以验证这些链上交易的包含情况。在这种情况下,事件日志必须使用更安全的协议,例如 PBFT [2]。我们将这种设计留待将来研究。


B. 工艺流程

鉴于第 II-A 节中的实体,PIECHAIN 中的流程具有与 Herlihy 等人提出的跨链交易相同的结构。[6] 跨链交易是多个用户在不同区块链上交换资产的协议,包括五个阶段(另见图 2):


  1. 清算阶段:CC-SVC 在不同的区块链上创建智能合约,用于托管和转移交易中涉及的资产。


  2. 托管阶段:用户将其外流资产转移到智能合约中进行托管。


  3. 转移阶段:进行资产初步交换,即指定智能合约的执行逻辑。


  4. 验证阶段:每个用户检查执行逻辑的结果是否令他们满意。


  5. 承诺阶段:若各方均满意,则通过承诺达成交易,否则通过流产达成交易。承诺是指执行智能合约中的执行逻辑,按照交易约定进行资产交换。流产是指将各智能合约中的资产返还给原所有者。


要提交,用户以交互方式构建提交投票,该投票由 CC-SVC 发送到 Kafka 账本。要中止,单个用户向 CC-SVC 发送中止消息。对于每个 CC-SVC,可以将提交或中止消息添加到 Kafka 账本,但不能同时添加。Kafka 账本上提交投票的包含证明被不同区块链上的所有智能合约接受 - 这保证一旦构建了提交投票,就可以执行所有资产转移,或者不执行任何资产转移。


图 2. 在一个 CC-SVC(顶部)、两个用户(中间)和两个区块链(底部)的设置中对第 II-B 节的五个步骤的说明。未显示 Kafka 网络。



三、PIECHAIN 的实现

为了说明 PIECHAIN 的实际适用性,我们将其与几个常用的区块链平台对接,并用它来实现科学文献中的一项应用 [6]:数字资产的跨链拍卖。区块链支持扩展到其他案例研究,我们将在第五节中讨论。


A.区块链支持

为了将底层区块链与 PIECHAIN 连接起来,CC-SVC 必须能够验证这些链上的交易。我们的实现支持以下区块链平台:以太坊(私有以太坊的工作量证明和权威证明版本)、Hyperledger Fabric 和 Quorum。后两者支持许可区块链,而以太坊有一个无需许可的主链,但也支持具有相同功能的私有链。


B. 拍卖

在我们的案例研究中,拍卖师在一条区块链上出售资产,并在另一条区块链上以资产的形式收到付款。与 [6] 中一样,我们使用售票员的例子。门票是专用区块链上的 NFT,而另一条区块链支持更常用的可替代代币(例如 Ether)。前者区块链称为票务区块链,后者称为代币区块链。这很容易推广到具有多个代币区块链的设置。在下文中,我们考虑第一价格拍卖(即出价最高的竞标者支付其出价并获得资产)。协议的五个阶段如下:


  1. 拍卖师聘请了 CC-SVC 在票务区块链和硬币区块链上创建智能合约。


  2. 拍卖师将其资产(门票的 NFT)转移到门票合约中,竞标者将其出价转移到其代币区块链上的合约中。


  3. 确定执行逻辑:拍卖师通过指定哪一方收到门票以及哪个出价被转移到拍卖师来更新门票和硬币合约。(请注意,此逻辑无法在门票合约中预先指定,因为门票链上的合约无法从硬币区块链中读取数据。)


  4. 每个用户(即拍卖师和竞标者)确定转移协议的结果是否令他们满意,即门票是否确实转移给了正确的一方。


  5. 所有用户都构建一个提交投票——一旦构建完成,它将被发送到每个合约以执行转移阶段指定的转移。


在 PIECHAIN 中,拍卖需要两种(逻辑)类型的 CC-SVC:中继者和签名者。中继者监听币链上的事件(出价)并将其转发到票证区块链。签名者协助创建提交投票。


四、示范计划

为了演示,我们使用 React 框架开发了一个图形用户界面 (GUI) 来说明跨链拍卖。GUI 由三个主要页面组成:仪表板页面,显示已知拍卖列表(如图 3 所示)、单个拍卖的详细视图(如图 5 所示)以及用于创建新拍卖的页面(未显示)。拍卖师和竞标者的视图相同。在仪表板视图上,潜在拍卖师可以单击“创建新拍卖”按钮以启动拍卖 - 拍卖师选择 CC-SVC、要拍卖的资产、接受来自哪些其他区块链的出价、不同区块链之间的代币汇率(必须提前确定)以及拍卖结束的时间。接下来,中继 CC-SVC 创建相关合约,并将资产链上的合约地址发送给拍卖师。然后,拍卖师可以通过添加合约地址并单击“添加现有拍卖”按钮在其仪表板上添加拍卖。同时,它向潜在竞标者公布合约地址。


当竞拍者知道资产合约地址时,他们也可以将其添加到他们的仪表板中。竞拍者添加拍卖后,她可以通过按下拍卖面板中的“查看”按钮来查看拍卖的详细信息,该按钮会将她带到详细查看页面。在此页面上,竞拍者可以查看有关拍卖的重要信息,例如拍卖的创建和结束时间以及出价列表。最高出价标有星号。如果拍卖仍在进行中,则竞拍者可以通过指定区块链来添加出价



图 4.显示区块链客户端控制台输出的窗口。



竞标的地点和竞标的代币数量。然后对相关代币合约进行交易,并将信息发送到中继 CC-SVC。用户还可以中止通过 CC-SVC 进行的任何竞标。


拍卖结束后,中继 CC-SVC 通知所有参与者,并在智能合约中指定货物的暂定转移。然后,CC-SVC 要求所有参与者的客户端参与创建承诺投票。(不参与将导致处罚 [4]。)创建承诺投票后,它将发送到所有合约以启动资产的最终转移。此时,GUI 将显示拍卖已结束。


演示的具体流程如下:


  1. 一名用户(拍卖师)打开基于 Web 浏览器的 GUI,并使用它来启动所选资产的拍卖。在此过程中,将演示拍卖创建页面上的所有功能。该资产存在于 Hyperledger Fabric 中运行的专用票证链上。在所有涉及的区块链上创建合约(图 2 中的步骤 1)。


  2. 至少有另外两名用户使用不同机器上的浏览器窗口导航到新创建的拍卖的详细信息页面并提交他们对该资产的个人出价(图 2 中的第 2 步)。至少一名竞标者使用(私人)以太坊,另一名竞标者使用 Quorum。


  3. 一段时间后,拍卖结束,并确定了中标人(图 2 中的步骤 3)。这将导致拍卖师向中继 CCSVC 发送“拍卖结束”事件。正在监听此类事件的签名者将注意到该事件并构建提交投票(图 2 中的步骤 4)。提交投票随后被发送到 Kafka,并由中继节点转发到拍卖合约和代币链合约。此时,资产被转移给中标人,中标人被转移给拍卖师(图 2 中的步骤 5)。


在整个演示过程中,我们将使用终端窗口在每个步骤之后查询底层区块链的状态,如图 4 所示。这将允许观众观察后台发生的变化,并与演示流程进行交互:例如,通过要求新的操作来查看后台状态如何变化。


为了说明演示的流程,可以在网上找到一段视频 2,其中描述了暂定的演示幻灯片,以及拍卖师和竞标者使用一台计算机执行操作时的屏幕。(这不是 PIECHAIN 的限制,但使录制视频变得更加容易。)


图 5. 活跃拍卖的详细视图。


五、延期

CC-SVC 框架和受支持区块链的接口可用于轻松将 PIECHAIN 扩展到其他用例。其中之一是 [6] 中描述的跨链闪电贷。闪电贷的 GUI 的实际意义有限,因为套利机会通常会迅速解决,因此与 CC-SVC 的交互通常由交易机器人完成。但是,如果时间允许,我们将展示闪电贷中各个步骤对所涉及各个合约状态的影响的可视化效果。


参考

[1] Rafael Belchior、Andre Vasconcelos、S ´ ergio Guerreiro 和 Miguel ´ Correia。区块链互操作性调查:过去、现在和未来趋势。ACM 计算调查 (CSUR),2021 年。


[2] Miguel Castro 和 Barbara Liskov。实用拜占庭容错。载于 OsDI,第 99 卷,第 173-186 页,1999 年。


[3] CoinLore。https://www.coinlore.com/all coins,2023 年。


[4] Daniel Engel、Maurice Herlihy 和 Yingjie Xue。失败(从字面上来说)是一种选择:去中心化金融中的原子承诺与可选性。SSS 2021,2021 年。


[5] Maurice Herlihy。原子跨链交换。载于 ACM PODC,第 245-254 页,2018 年。


[6] Maurice Herlihy、Barbara Liskov 和 Liuba Shrira。跨链交易和对抗性商业。《VLDB 杂志》,2021 年。


[7] 中本聪。比特币:一种点对点的电子现金系统,2008年。


[8] Sri AravindaKrishnan Thyagarajan、Giulio Malavolta 和 Pedro Moreno-Sanchez。通用原子交换:跨所有区块链的安全代币交换。IEEE S&P,2022 年。


[9] Victor Zakhary、Divyakant Agrawal 和 Amr El Abbadi。跨区块链的原子承诺。VLDB 捐赠基金论文集,13(9),2021 年。


[10] Alexei Zamyatin、Mustafa Al-Bassam、Dionysis Zindros、Eleftherios Kokoris-Kogias、Pedro Moreno-Sanchez、Aggelos Kiayias 和 William J Knottenbelt。SoK:跨分布式账本的通信。《金融加密》,2021 年。


[11] Alexei Zamyatin、Dominik Harz、Joshua Lind、Panayiotis Panayiotou、Arthur Gervais 和 William Knottenbelt。Xclaim:无需信任、可互操作、加密货币支持的资产。IEEE S&P,2019 年。