

首个基于Rococo的隐私跨链demo释出,Phala&Acala实现DeFi资产跨链转账
在可预见的未来,平行链将颠覆所有现有的区块链技术。
平行链不仅具有 Layer1区块链和智能合约的自主性、内生安全性和专业性等优势,它还具备以太坊Layer2目前不具备的互操作性。
什么是互操作性?Parity 核心开发者 Tomasz Drwięga 在Polkadot首届社区会Polkadot Decoded上的分享可以帮助我们更好理解:
假如你提交了一份航班延误保险的赔付申请,在正式赔付前,保险公司会从航空公司获取航班是否延误的数据,并从机场获取数据验证你是否准时去了机场。若符合以上两个条件,保险公司才会将赔付资金打入你的银行账户。该场景中,保险公司对数据的调用充分展示了互操作性的特点。
目前,平行链已自行发展出多种类别,比如:有币平行链、无币平行链、垂直于某一领域的平行链、服务于某一社区的枢纽链……
以平行链为例,使用Polkadot/Kusama的跨链技术,我们可以实现什么样的用例?
首先,我们不妨假设目前有两个最常使用的区块链协议及业务:
在此条件下,我们想:
显然,在任何非Polkadot/Kusama协议下,不管是Acala还是Phala,都要耗费巨大的开发者资源和精力,但是,若我们采用Polkadot/Kusama的跨链协议,不用改动一行代码,就能实现这样的用例!
Github:https://github.com/Phala-Network/phala-blockchain/tree/rococo
跨链原理由中继链、平行链、连接链之间的协议XCMP组成。跨链交易通过基于 Merkle 树的简单排队机制来解决,以确保准确性。中继链验证人的任务是将一个平行链的输出队列上的交易移动到目标平行链的输入队列中。但是,只有关联的元数据作为哈希存储在中继链存储器中。
XCMP 队列必须首先通过打开两个平行链之间的通道来启动。通道由发送方和接收方的平行链辨识,这意味着它是一个单向通道。一对平行链之间最多可以有两个通道,一个用于向另一个链发送消息,另一个用于接收消息。
XCMP协议可以细分为:
目前Rococo v0上实现了VMP与HRMP,但Rococo v1还在开发中,因此我们在v0上实现了Phala-Acala之间的跨链用例。

如上图所述,基于Polkadot XCM的Acala-Phala跨链实现由三部分组成:
在Polkadot的世界中,除了个人控制的账号以外,还有“主权账号”的概念。例如,一个Substrate上的Pallet模块(或一个智能合约)就可以持有一定的资产。而当一个平行链接入了Polkadot之后,它也可以在其他平行链上获得自己的账号。主权账号由对应的平行链控制。每个平行链都有唯一的ID,会被映射成它对应的主权账号。
当Alice在Acala向Phala发起一笔转账交易时,例如从转出1000 ACA到Phala的Bob账户,背后发生了这些事件:
HRMP 是 Rococo v0 已经支持的一种简单跨链消息传递方式,它的原理是 A 链发起 UpwardMessage 给中继链,再由中继链发起 DownwardMessage,把消息中转给 B 链。因此,HRMP 是由两个 VMP 组合实现的。
Phala与其他链有一个很大的不同。通常一个平行链会采用波卡提供的标准实现来接受外部转账,并为用户结算。但 Phala 作为一个通用的隐私保护层,主链对应用保持中立是十分重要的,因此 Phala 主链不对跨链转账做任何处理与结算,而直接中转到保密合约之中。
在Phala端,跨链转帐消息由主链接受后,直接路由至TEE中的暗钱包(Private Wallet)合约。当保密合约接收到消息后,就会为账户 Bob 增加 1000 ACA。
保密合约中的转账都是端到端加密的。虽然在外部可以看到 Bob 收到了 1000 ACA,但他可以发起隐私转账,再次转账给 Charlie,作为暗资产,Bob 所有的后续交易在链上都不可见,也无法追踪,从而保证了隐私性。
因此在Demo中,我们演示了两个暗钱包之间的隐私交易(Shielded Transction)。该隐私交易是端到端加密的,在链上只能看到密文,因此该交易的细节(如发送地址、接受地址、金额数量)在链上不可见。
最后,通过 Phala 的暗钱包可以向 Acala 发起一笔跨链转帐,以实现出金。
例如,收到Bob通过隐私转账转过来的1000 ACA后,Charlie 可以在 Phala 端发起请求,向 Acala 的 Alice 账户发送 500 ACA,则背后发生了这些事情:
在现有的区块链例如以太坊中,Defi和隐私Layer2的结合需要通过以太坊来互相确认,而一个Layer2协议无法与另一个Layer2协议互操作。这就导致了用户无法用Loopring协议直接调用Tonado Cash,或者用Aragon直接调用Aztec。
但是在Polkadot上,XCMP协议可以让具有强自定义能力的平行链在极少的工作量下,就能实现便捷的跨链的互操作。通过XCMP实现的可组合性,可以让开发者像搭建乐高积木一样搭建出丰富的应用案例。
在这篇文章里,我们就展示了XCMP强大的能力,我们可以直接让Acala和Phala实现互操作,通过Defi平行链和隐私平行链的组合,让DeFi得到了隐私能力。在以太坊Defi生态下,我们已经看到了可组合性的优势,因此我们相信XCMP会成为强大的Dapp Building Block,并期待在Polkadot上看到由平行链组合出的更多全新的应用。
