多链支持

尽管确保MAGIC ID的安全性非常重要,但它旨在可以在多个地方使用。为了使MAGIC ID支持多条链,我们利用了注册和验证之间的分离。注册将在以太坊上进行(从而保证了系统的安全性),但验证可以在任何地方进行。从MAGIC ID合约的角度来看,验证是一个只读过程,因此基本的状态复制机制将起作用。在以太坊上,注册仍然像以前一样进行,但是现在每次根历史更新时都会触发一个复制过程。

具体的复制过程如下:

  1. 复制由MAGIC ID合约本身触发(路径2a),或者由一个外部服务触发一个合约来读取合约中的最新根(路径2b)。无论哪种方式,最新的根会作为消息推送到第三方状态桥接器,用于目标链。

  2. 以太坊侧的桥接合约将消息从以太坊转发到目标链。具体细节因实现而异,但通常从以太坊到L2的方向是最简单和最快的。

  3. 目标链侧的桥接合约使用新的根调用MAGIC ID代理合约。在验证消息后,根历史的副本被更新。现在,代理可以像主实例一样用于验证。

对于第一个桥接,直接集成(2a)被用作最简单和最可靠的集成方式。但是直接路由需要扩展MAGIC ID合约,最好尽量减少扩展。因此,对于未来的桥接,将选择外部驱动的路由。外部驱动的集成具有独立运行的优势,并且可以在不修改MAGIC ID合约的情况下添加。实际上,任何人都可以构建这样的桥接。

对于支持MAGIC ID的目标链,最重要的要求是支持Groth16验证。Groth16是一种广泛支持的证明系统,但某些链上可能对其支持有限。其次,MAGIC ID需要可靠的单向消息传递桥接器以及具有全局持久存储功能的丰富可编程性,用于存储根历史和nullifiers。对于非EVM目标链,还需要进行代理和验证器合约的移植工作。

Last updated