RAP:Acala和Phala联合发布首个隐私跨链用例-ODAILY_Graph

为什么我们需要跨链?

在可预见的未来,平行链将颠覆所有现有的区块链技术。

平行链不仅具有Layer1区块链和智能合约的自主性、内生安全性和专业性等优势,它还具备以太坊Layer2目前不具备的互操作性。

什么是互操作性?Parity核心开发者TomaszDrwi?ga在Polkadot首届社区会PolkadotDecoded上的分享可以帮助我们更好理解:

假如你提交了一份航班延误保险的赔付申请,在正式赔付前,保险公司会从航空公司获取航班是否延误的数据,并从机场获取数据验证你是否准时去了机场。若符合以上两个条件,保险公司才会将赔付资金打入你的银行账户。

该场景中,保险公司对数据的调用充分展示了互操作性的特点。

目前,平行链已自行发展出多种类别,比如:有币平行链、无币平行链、垂直于某一领域的平行链、服务于某一社区的枢纽链……

以平行链为例,使用Polkadot/Kusama的跨链技术,我们可以实现什么样的用例?

首先,我们不妨假设目前有两个最常使用的区块链协议及业务:

AcalaNetwork是一个去中心化开放式金融协议。Acala具备跨链多资产抵押的稳定币Honzon协议、释放Staking资产流动性的Homa协议以及去中心化交易所等DeFi模块PhalaNetwork是一个区块链隐私协议。Phala通过可信计算技术+区块链,实现了图灵完备的隐私合约,既保证智能合约可靠执行,又不必泄露敏感数据。在此条件下,我们想:

让Acala上的资产、DeFi合约使用Phala的隐私能力让Phala上的隐私资产从Acala获取显然,在任何非Polkadot/Kusama协议下,不管是Acala还是Phala,都要耗费巨大的开发者资源和精力,但是,若我们采用Polkadot/Kusama的跨链协议,不用改动一行代码,就能实现这样的用例!

跨链用例展示

DemoVideo:https://www.odaily.com/video/3151

Github:https://github.com/Phala-Network/phala-blockchain/tree/rococo

Rococo中继链:https://rococo-demo.phala.network/#/settingsAcala:https://rococo-demo-acala.phala.network/#/explorerPhala:https://rococo-demo-phala.phala.network/legacy.html#/explorerAcala钱包:https://acala-dapp-4higttopf.vercel.app/#/walletPhala暗钱包:https://rococo-demo-phala.phala.network如何实现跨链交互?

跨链原理由中继链、平行链、连接链之间的协议XCMP组成。跨链交易通过基于Merkle树的简单排队机制来解决,以确保准确性。中继链验证人的任务是将一个平行链的输出队列上的交易移动到目标平行链的输入队列中。但是,只有关联的元数据作为哈希存储在中继链存储器中。XCMP队列必须首先通过打开两个平行链之间的通道来启动。通道由发送方和接收方的平行链辨识,这意味着它是一个单向通道。一对平行链之间最多可以有两个通道,一个用于向另一个链发送消息,另一个用于接收消息。

XCMP协议可以细分为:

VMP:平行链-中继链通信HRMP:平行链-中继链-平行链中转通信XCMP:平行链-平行链直接通信目前Rococov0上实现了VMP与HRMP,但Rococov1还在开发中,因此我们在v0上实现了Phala-Acala之间的跨链用例。

Architecture

如上图所述,基于PolkadotXCM的Acala-Phala跨链实现由三部分组成:链:Rococo中继链、两个平行链:Acala、Phala跨链操作:Acala-中继链和Phala-中继链的消息传递,实现了Acala转账到暗钱包内部,以及暗钱包(PrivateWallet)内部到Acala隐私黑箱:Phala上的隐私交易一切发生在TEE内运行的保密合约,所有加密数据状态对外不可见,从而实现了隐私效果从Acala向Phala发起一笔转账

在Polkadot的世界中,除了个人控制的账号以外,还有“主权账号”的概念。例如,一个Substrate上的Pallet模块就可以持有一定的资产。而当一个平行链接入了Polkadot之后,它也可以在其他平行链上获得自己的账号。主权账号由对应的平行链控制。每个平行链都有唯一的ID,会被映射成它对应的主权账号。

当Alice在Acala向Phala发起一笔转账交易时,例如从转出1000ACA到Phala的Bob账户,背后发生了这些事件:

首先在Acala链上,会从Alice账户里取出(Withdraw)1000ACA,存入(Deposit)Phala的主权账号Acala链会发起一个XCMP转账消息,表示在Acala上已经发起了到Phala下Bob账号的跨链转账,并把消息发送给中继链,这是一个VMPUpwardMessage中继链收到消息后,会根据平行链ID解析出消息的接收方是Phala,它就会把消息向Phala转发,这是一个VMPDownwardMessageHRMP是Rococov0已经支持的一种简单跨链消息传递方式,它的原理是A链发起UpwardMessage给中继链,再由中继链发起DownwardMessage,把消息中转给B链。因此,HRMP是由两个VMP组合实现的。

Phala暗钱包接受转账并转换为隐私币

Phala与其他链有一个很大的不同。通常一个平行链会采用波卡提供的标准实现来接受外部转账,并为用户结算。但Phala作为一个通用的隐私保护层,主链对应用保持中立是十分重要的,因此Phala主链不对跨链转账做任何处理与结算,而直接中转到保密合约之中。

在Phala端,跨链转帐消息由主链接受后,直接路由至TEE中的暗钱包(PrivateWallet)合约。当保密合约接收到消息后,就会为账户Bob增加1000ACA。

保密合约中的转账都是端到端加密的。虽然在外部可以看到Bob收到了1000ACA,但他可以发起隐私转账,再次转账给Charlie,作为暗资产,Bob所有的后续交易在链上都不可见,也无法追踪,从而保证了隐私性。

因此在Demo中,我们演示了两个暗钱包之间的隐私交易(ShieldedTransction)。该隐私交易是端到端加密的,在链上只能看到密文,因此该交易的细节(如发送地址、接受地址、金额数量)在链上不可见。

从Phala向Acala发起一笔转账

最后,通过Phala的暗钱包可以向Acala发起一笔跨链转帐,以实现出金。

例如,收到Bob通过隐私转账转过来的1000ACA后,Charlie可以在Phala端发起请求,向Acala的Alice账户发送500ACA,则背后发生了这些事情:

TEE收到转帐命令,将Charlie账户中减少500ACA,并向Phala链上发起一笔跨链转账交易Phala主链收到跨链转账请求后,会直接把这笔转账消息发给中继链,这是一个VMPUpwardMessage同样,中继链会把它转发给Acala,这是一个VMPDownwardMessageAcala收到消息后,从Phala主权账户中取出500ACA存入Alice的账户,这笔跨链转帐交易完成。结语

在现有的区块链例如以太坊中,Defi和隐私Layer2的结合需要通过以太坊来互相确认,而一个Layer2协议无法与另一个Layer2协议互操作。这就导致了用户无法用Loopring协议直接调用TonadoCash,或者用Aragon直接调用Aztec。

但是在Polkadot上,XCMP协议可以让具有强自定义能力的平行链在极少的工作量下,就能实现便捷的跨链的互操作。通过XCMP实现的可组合性,可以让开发者像搭建乐高积木一样搭建出丰富的应用案例。

在这篇文章里,我们就展示了XCMP强大的能力,我们可以直接让Acala和Phala实现互操作,通过Defi平行链和隐私平行链的组合,让DeFi得到了隐私能力。在以太坊Defi生态下,我们已经看到了可组合性的优势,因此我们相信XCMP会成为强大的DappBuildingBlock,并期待在Polkadot上看到由平行链组合出的更多全新的应用。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:0ms0-9:163ms