【资料】Phala是什么?为什么我们要做Phala?

介绍

Phala.Network是基于可信计算技术(TEE)的机密智能合约平台,⽬标是为企业和⽤户提供机密计算、数据保护的基础设施。

当今的区块链面临的一大问题就是所有链上数据都完全公开,导致了无法实现许多设计机密数据的应用。已有的隐私保护技术例如零知识证明与同态加密多方计算,前者无法实现通用计算,后者开销巨大,通常会导致10^6倍的性能损失,从而无法实用化。

Phala Network基于技术成熟度最高的TEE方案,实现了一个TEE-区块链结合的架构,调度世界上的可信计算算力,可以为任何需要上链、且需要保护机密的企业和⽤户服务,使用户可以放⼼的部署与调用智能合约,但不必泄露逻辑和数据。

我们的第一个应用是pLIBRA,一个致力于通过可信计算技术保护Libra⽤户交易隐私的跨链转接桥与智能合约平台。

1.Phala和Polkadot结构设计上有相同之处,可以具体说明下设计思路吗?

Phala是可信硬件(目前是Intel)的保密智能合约。

比特币是第一个也是最广为人知的去信任货币,比特币主要用区块链来解决双花问题。以太坊,扩展交易脚本,执行任意的逻辑,去信任智能合约。但只要用了区块链,数据就要公开,这导致很多需要数据保密的应用不能去信任。

Phala不是拜占庭的。我们去信任化通过可信硬件保证,但单独的硬件解决不了两个问题:可用性和状态一致性。单独的硬件,拔电源就不能提供服务了,就是不满足可用性。多个可信计算节点要交互,代码执行的先后顺序不明就会导致双花,这就不满足状态一致性。

因此我们又回到了和比特币一样的问题,我们需要借助区块链解决这两个问题。把状态数据加密存储在链上,任何人无需许可就可以下载,共识算法下,每个节点都能得到一致的状态,

除了数据保密能力,我们还有两个优势。第一是合约级的并行,因为非拜占庭,我们不用通过每个节点共识一次实现去信任化,因此可以实现极高的性能。第二个是天生支持跨链,Phala的合约是并行执行的,需要配合智能合约之间的互操作协议实现相互调用。这个互操作协议不仅可以用于合约之间,也兼容多种跨链方式(Phala上的转接桥、波卡的ICMP协议等)。

// 图

因此可以总结一下,Phala包含一条主链与可信硬件矿工网络,未来会争取成为波卡的平行链。合约在可信节点上并行地执行,开发者以合约的形式部署转接桥与Dapp在网络之上。其中,主链提供了跨合约、跨链的调用,矿工提供了算力,转接桥实现了和外部区块链的通信。

由于Phala的特性,我们与波卡的网络结构也有些类似,但侧重点十分不同。第一,波卡解决了跨链通信,Phala更关注并行合约间的互操作,例如我们的主链负责合约间通信,波卡的中继链负责跨链通信。第二,波卡的平行链是异构拜占庭的,而Phala的可信节点是同构非拜占庭,因此波卡挑战的是跨链安全,而我们依托波卡提供的安全性,去实现更复杂的业务逻辑。

2.在理想的数据隐私方案中,一定会多种数据隐私保护,从设计的角度去思考,应用数据隐私的设计延伸该如何做?

在前面介绍的时候也提到了,现在有多种隐私保护技术,分别能实现不同程度的保护。我们常常给隐私保护技术分成三个世代,第一代技术的典型代表Zcash和门罗币,他们通过零知识证明、环签名、保密转账等技术实现了交易的隐私保护,一个突出的特点就是他们的技术可以保护原生币的交易隐私。

第二代技术的典型代表是Aztec,一个以太坊上的隐私协议,采用和Zcash类似的技术,可以为任何ERC20代币实现交易隐私。第二代技术是第一代的扩展,不过他们都只能实现交易隐私,如果涉及到图灵完备的智能合约就无能为力了。

而第三代技术,我们希望把“隐私保护”的概念拓展成“机密保护”,隐私不仅指用户的交易隐私,更应该能保护智能合约中的任何机密数据不被泄漏。目前的智能合约技术,所有的数据都必须完全公开,而我们希望“机密智能合约”(Confidential Smart Contract)可以如同以太坊的图灵完备智能合约一样,可以进行通用的计算,但不必暴露机密数据。

目前机密智能合约技术可以通过多方计算(MPC)与可信执行环境(TEE)实现。前者基于同态加密、零知识证明等纯密码学技术,不依赖硬件,可以高效率的应用在一些特定领域,例如可验证随机数、分布式密钥生成等,但在通用计算上有平均10^6倍的性能损失。后者基于可信计算硬件(主要是Intel的CPU),但已经可以实现非常高效率的通用计算。

Phala.Network选择了可信计算方案,致力于实现保护机密数据的、通用的图灵完备智能合约。

3.桥如何保证资产安全性?Phala的隐私计算模型是如何工作的?

此外值得强调的是,我们和波卡一样,除了资产跨链,Phala关注的是更加通用的数据跨链,也就是合约之间的自由调用。我们的目标是为任何区块链提供隐私计算的能力。

4.单独做桥 和 中继链或平行链上的桥 思路上有哪些区别?

这是一个很有意思的话题,普遍也很容易混淆,我梳理一下:

第一种是独立的桥,例如ETH-BTC桥,一般用来连接两个独立的链。典型例子就是RSK,他用联盟的方式实现,在BTC上创建了一个多重签名钱包,由多个机构持有。这些机构观测到收款就会在RSK链上发型对应的跨链资产,反之亦然。桥的两端都支持智能合约,就可以实现更去中心化的协议。

第二种就是波卡平行链上的桥。波卡提供的其实是平行链之间的通信能力,但如果波卡下的链要和博卡生态外的链通信,就要借助转接桥了。平行链上可以实现一个或多个转接桥,就像和刚刚提到的独立桥一样,可以采用多样的技术。但因为波卡提供了平行链之间的通信,一条平行链上实现的桥,不仅可以为自己服务,也可以为其他平行链服务。这样就形成了网络效应。

第三种是二级中继链上的桥,听起来可能有点复杂。波卡的平行链也是一条完整的主链,主链上又可以像波卡一样,提供二级插槽,这样就实现了平行链上的平行链。刚才郭总介绍的ChainX 3.0和吴总介绍的Cdot就是这种结构,由于波卡的插槽有限,平行链可能会很贵,二级平行链就可以解决这个问题。可以预见,随着接入波卡生态的桥数量增加,一定会出现一集平行链不够用的情况,这个时候就会有人选择在二级中继链上开发桥。

总的来说,无论是波卡的平行链,Cosmos的IBC,RSK的转接桥,以太坊2.0的分片,还是甚至于可以无限分片的Plasma,本质上都是利用多层结构解决性能问题。如果我们类比互联网,一条链就是一台服务器,没有网络把计算机连接起来,就不可能每天产生和处理如此大量的数据。因此分层与互操作一定是区块链下一阶段最重要的技术方向。

5. 为什么跨合约通信很难?

1、以太坊所有矿工同时在跑所有的合约,共识和安全性由以太坊定义,所以合约之间通信没问题。问题就是时间很慢。
2、因为TEE区块链的共识由TEE保证,所以每个矿工单独跑机密合约,否则某个硬件被黑客攻击会导致问题传染到整个网络。另外一个好处就是这样做会让系统支持并行计算,网络性能非常好。

6. 在这个问题基础上如何实现可信可验证?

Ekiden的解决方法是将每个机密合约进行本地计算,计算结果打到链上。缺点是这个方法会导致机密合约之间无法互相调用。

TEEX是一个计算网络,他不是一个运行智能合约的平台。智能合约要求:给定所有输入,所有输出结果都是确定的。所以智能合约一般input都是链上数据。TEEX更多的是做独立计算任务,用户直接提供数据,无法提供一致性保障。因此,涉及到需要计算任务之间的状态同步,TEEX就无法做到。

而我们看到了这个需求和问题,所以我们的设计更进一步:合约之间可以互相调用后再进行计算,合约B可以引用合约A的链上计算结果。这个实现方法很像波卡的中继链和平行链的设计,难点是数据同步、状态顺序和通讯协议,我们经过和波卡团队的学习,已经设计了一套成熟方案。在phala上实现TEEX的同样效果很简单,但是反过来是做不到的。

1 Like