DFINITY 的核心密码学技术 ChainKey 带来了许多全新的特性,DFINITY 能通过 ChainKey 签名的方式调用以太坊等其他公链。而在最近 DFINITY 的创始人 Dominic 发布的推特与文章中,详细介绍了从 DFINITY 到以太坊,再从以太坊到 DFINITY,无需中介的合约互操设计,这给我们展示了两者集成的巨大潜力。
总结如下:
ChainKey 技术
ChainKey 是互联网计算机的核心技术,是实现上述合约互操作魔法的原理。
在以太坊中,由于使用 PoW 机制竞争出块,节点使用自己的私钥签名区块链并广播,当你去验证这个区块时,就需要获取节点的公钥。因为每次出块节点可能不同,因此你需要保存大量的签名信息,并同步区块。因此用户想去验证以太坊的交易,需要同步 400GB 的区块。普通用户只用通过运行在 AWS 上钱包中间件 Infura 的全节点来访问。
而在 DFINITY 中,基于可验证随机数 VRF + 门限签名 BLS + 非交互式分布式密钥分发 Noninteractive DKG,保证了区块链只具备唯一不可变的公钥,所有的区块的签名都能使用这个 48KB 的唯一公钥验证,来保证交互与区块的可信。
DFINITY 链具备唯一的公钥,但并不具备对应的唯一私钥,组成链的节点保存了私钥的碎片,他们使用这个碎片签名区块,只有在收集到足够多的私钥碎片后,才能聚合出完整的签名,从而能被唯一公钥验证。这也是 DFINITY 实现一致性共识的方式。
非交互式分布式密钥分发 Noninteractive DKG 向节点分配的了私钥碎片,因为其非交互式的特点,分配私钥碎片时基本对带宽占用很低,节点可以随意的加入与退出网络,这保障了整体的去中心化。
因此任何的设备,即使是另一条区块链上的智能合约,只要保存了这个公钥也能亲自去验证 DFINITY 链的消息、事件与状态。ChainKey 技术就是能实现合约互操作的基础。
使用 DFINITY 调用以太坊合约
ChainKey 能支持 ECDSA,这是比特币和以太坊都在使用的密码学原语,因此可以通过 ChainKey 代理 DFINITY 上的智能合约签名,不需要生成对应的密钥(使用 BLS 阀值签名技术)。在使用一条链唯一的 ChainKey 进行签名后,通过 P2P 发送一个满足比特币与以太坊格式的交易。最终调用以太坊的智能合约。
同时 DFINITY 的智能合约都是使用 actor 的异步消息处理模型,因此可以对以太坊的调用的返回设置等待。
(0) 在 DFINITY 上部署一个代理签名合约,运行着 ChainKey 的模拟签名代码。
(1) DFINITY 上的合约调用代理签名合约
(2) DFINITY 的合约需要调用以太坊,向签名合约发送合约地址、调用方法、参数。
(3) 使用链唯一的公钥签名产出以太坊格式交易,通过 P2P 手段在以太坊网络广播交易,等待交易确认。
(4) 获取以太坊的调用返回的方式有两种可选:早期可以在以太坊上专门部署一个查询合约,专门用于向 DFINITY 返回以太坊调用结果,但这个成本依然很高;后续可以直接在 DFINITY 的容器中建立一个同步以太坊状态的轻节点,直接验证并返回结果。
但在获取以太坊的调用返回时,还是存在问题,使用第一种方式在以太坊上部署查询合约的成本很高,因为每一次的返回都需要发送额外的合约调用;而在 DFINITY 上建立轻验证节点可能受到当前容器运行内存 4GB 上限的制约,以太坊的状态可能要在很多个容器中分开存储。因此我们可能需要开发者实现更有效率的创新方案。
直接的互操作性会带来什么?
DFINITY 底层密码学的创新的确来带了一些使用体验上的突破,用户无需中间件就可以享受端到端的区块链级别安全性。这同时也有机会帮助以太坊实现可直接互操作的扩容。
这种跨链合约间的互操作性被大范围使用后,chainlink、TheGraph、Infura 等中间件存在的意义会被逐渐替代,或者被直接部署在 DFINITY 上而获得无限扩宽与去中心化优势。在 DFINITY 上编写数据库容器替代中间件,是一个不错的方向,也是我们重点关注的领域之一。从这个角度看,DFINITY 像一个具备通用计算能力的中间件与前端服务,能结合两者的特点的商业尝试会更加亮眼,比如能快速验证以太坊上 NFT 视频、图片等资源,并通过运算能力扩展玩法的专用 NFT 平台。
同时 DFINITY 也可以帮助以太坊实现扩容,在链上快速地、低成本地维护与处理大量数据。并且这种扩容能力是一劳永逸的,因为作为一个异步消息处理机器,DFINITY 具备无限划分子网实现扩容的能力。在以太坊上 1GB 的智能合约需要花费上千万美元,而在 DFINITY 上每年只需要花费 5 美元。
因为可以实现合约级别的互操作,而 DFINITY 链本身具备高安全性,且不依赖与 AWS 等云服务,也不需要只运行在几个节点上的跨链桥、Layer2 状态链等,因此也避免了传统二层扩容方案的流动性、中心化与安全性问题。
在以太坊上的运行结算层,把 DFINITY 当作指令层使用,这种架构具备很多的可能性。同时基于 DFINITY 的身份系统与反向 gas 模型,极大的降低了使用门槛,用户甚至可以不需要为使用以太坊的合约支付 gas,我可以预见这样一种业务:在 DFINITY 上实现以太坊上 Compound、AAVE、DYDX 等聚合形态的第三方前端,然后免除用户使用的 gas,第三方前端的创建者可以通过推荐策略并收取一定比例收益,来支付以太坊的 gas ,同时赚到钱。
比如可以在 DFINITY 实现完整的中心化交易的逻辑,包括订单簿的撮合与做市,用 DFINITY 区块链不可篡改的记录价值与资产的流动,最终在以太坊上进行结算,这能保证去中心化的安全性、无准入与公共所有权,也能获得中心化传统交易所的体验。
同时如 AXIE Infinity 这类的游戏,也可以通过 DFINITY 的扩展能力升级玩法,目前的 AXIE Infinity 并不是可交互的,在小精灵对战之前胜负就已经决定,但是使用 DFINITY 集成指令层后,可以实现即使的策略对抗。
甚至可以在 DFINITY 上托管 ETH 的 FlashBot 套利机器人,而不用再去部署一个中心化服务器,并把自己的私钥托管在中心化服务器上。因为容器并不共享状态,你的策略可以设置为 “Private”,也可以通过分享策略获取收益(DFINITY 生态项目 ENSO)。