前期问题集中于互操作成本上,后期问题集中于安全性上,权衡两者以做出更好的互操作方案,是一个潜在的发展方向。

原文标题:《ICP 与 ETH 互操作的原理与启示 #5》
撰文:Yolo Notes

这篇文章是 Dfinity 创始人 Dominic Williams5 月 28 日 Medium《Internet Computer <> Ethereum Integration Explained》的笔记,解答了我几个疑惑:

  • ICP 和 ETH 的定位和关系?
  • ICP 目前是如何与 ETH 交互的?面临哪些问题?
  • ICP 和 ETH 的互操作性将带来哪些机会?

ICP 与 ETH 的定位和关系

DIFINITY 与以太坊互操作启示:如何交互?潜在机会有哪些?

ICP 与 ETH 设计初衷不同,定位不同,是相互补充的关系。ICP 的结构是由独立节点构成的不同子网,其计算资源由各地计算中心提供,计算中心所使用的的硬件设备经过特殊的定制。是一个由计算中心-神经元(子网)-容器(canisters)构成的双层结构。以太坊与其相比,计算的底层开放度更大,任何人都能提供计算。其结构是矿工(计算)-智能合约(smart contract)的单层结构。不同的结构设计使得功能侧重不同,ICP 倾向于终端用户的应用层,而 ETH 则倾向高价值资产的金融结算层。随着 ETH 网络被越来越多的人接受,GAS 费快速抬升,计算资源非常紧张,1GB 的智能合约将耗费价值 1 亿 USD 的 ETH (最新数据),而在 ICP 运行这类应用的花费将低于 5USD 的 Cycle。

DIFINITY 与以太坊互操作启示:如何交互?潜在机会有哪些?

未来人们很可能在 ICP 上使用消费级应用,而沉淀后的数据资产经过打包,交易,形成金融资产。这部分金融资产则很可能被传送到 ETH 上进行金融相关的操作。利用 ICP 容器的运算存储性能,用户可以获得更丰富的 web3.0 服务;而利用 ETH 智能合约的原子性和不可篡改性,用户的高价值资产得以获得更大的安全性。

此外,ICP 的 Chain Key 特性可以使得用户直接通过数字身份(Face ID,指纹,YubiKeys)连接以太坊,而不必管理复杂的钱包。这些特征都将大大丰富两者的生态。

ICP 与 ETH 互操作的原理

we will introduce support for a threshold variant of ECDSA. In essence, this will enable smart contracts on the Internet Computer to create Bitcoin and Ethereum transactions pertaining to public keys on those chains, without holding corresponding private keys (which will not even exist, and instead take the form of private key shares securely distributed across independent nodes).

ICP 用的也是椭圆曲线数字签名算法( ECDSA),对于 ICP 用户而言,可以在没有私钥的情况下创建链上的交易。具体实现方式,就是通过子网多签私钥,再由公钥验证,从而实现整个交易。也就是说,ICP 到 ETH 网络的互操作性,是通过 ICP 上子网多签来实现的,先由子网多签发起交易,再由子网在 ICP 内部交易。简单说,BLS 门限签名的作用就相当于一个私钥了。

解决完了如果从 ICP 到 ETH 链,那么如何从 ETH 返回执行的结果呢?

阶段一:由于目前的 ETH 具有原子性,因此每一个地址的状态都会经由 PoW 的方式来验证并且同步。因此当我们在 ICP 上需要获取 ETH 状态时,我们可以检测 ETH 区块的状态,每当区块被验证时(要在一定区块之后,这样正确率才能有保证),ETH 上的智能合约就能从区块所有数据中读取我们想要的状态,并传输给 ICP 上的智能合约。当 ICP 智能合约运算完成以后,可以直接通过预言机将信息和数据传回给 ETH。从而形成一个 ICP 与 ETH 的操作闭环。

由于从 ETH 向 ICP 需要智能合约的功能,这一切运转在 ETH 上,这意味着这类操作是非常昂贵的。当 ICP 大量需要 ETH 传输信息的时候,高昂的成本将限制 ICP 和 ETH 之间的整合与协作。

阶段二:为了节省 ETH 智能合约功能的成本,我们会同步 ETH 节点状态到 ICP 的智能合约。这个合约不仅会扫描以太坊的区块,同时也会更新以太坊的全部数据。一旦这个工作完成,意味着查询以太坊状态的同时不会影响以太坊的状态(主要由于 EIP1559 以后,智能合约的运转会燃烧 ETH,全网状态会因此改变。),并且调用智能合约的成本也将几乎为 0。一方面 ICP 将运转 ETH 的一个节点,另一方面 ETH 的实时状态也将同步在 ICP 网络之上。

潜在的机会

进入第二阶段,意味着 ICP 对 ETH 调取合约,获取状态的成本会降低到很低的位置。但与此同时,另一个问题浮出水面。由于 ICP 全网对于 ETH 状态的获取,依赖 ICP 网络运营的 ETH 节点。一旦结点出现问题,那么就会带来巨大的安全隐患。那么我们是否能构建,节点 / 智能合约双互操作体系来逐步过渡和渐进?渐进地取舍效率与安全,才能配合 ICP 的发展水平。

总结

ICP 到 ETH,主要通过子网多签创建智能合约的方式。

第一阶段:ETH 返回 ICP 数据,利用 ETH 智能合约获取 ETH 区块具体状态,然后返回。第二阶段:ETH 返回 ICP 数据,在 ICP 创立 Canister 同步 ETH 结点的完整信息,从第一阶段:向 ETH 上智能合约了解信息(互操作),进化到第二阶段:向 ICP 上同步 ETH 结点的智能合约了解信息(互操作)。

前期问题集中于互操作的成本上,后期问题集中于安全性上,如何在成本和安全性上取舍做出更好的互操作方案,是一个潜在的发展方向。