本期的访谈内容围绕跨链相关话题进行。跨链安全其实一直在社区中备受关注,跨链攻击事件频繁发生,因此对于跨链安全性质疑的声音也难免越来越多。当然,不同的跨链解决方案采用的技术不一样,这样他们的安全系数也分高低。
随着多链生态以及以太坊 L2 逐渐成熟起来,跨 L1 和跨 L2 交易的需求也越来越大。对于用户和开发者来说,了解如何评估一个跨链方案的安全性对他们来说无比重要,因为这涉及自身资产的安全性。
本期节目邀请了来自 Orbiter Finance 技术团队的 Eric,为我们介绍跨链以及 Orbiter Finance。Orbiter Finance 是一个专注于以太坊跨 rollup 的去中心化桥接解决方案,基于 “提前信任+争议仲裁” 的这样一个解决方案,并且依赖于以太坊网络自身的安全性能。Orbiter Finance 表示很快将推出其流动性提供机制和 Maker 合约的测试。
涉及的话题有:
跨链攻击事件以及其根本安全限制的探讨
跨链的基本原理以及不同的跨链类型
Orbiter Finance 的实现方式和项目介绍
- Orbiter Finance 的仲裁机制如何保护用户资产安全?
- Maker 流动性提供合约的介绍和开放计划
- 数据服务 L2 data 的介绍
对跨链生态的未来展望
为什么说跨链具有根本的安全限制?
Franci:说到跨链。大家可能会有一个不好的印象就是,好像很多黑客攻击都是针对跨链协议的,而且被盗金额都非常庞大。比如去年 ChainSwap 和 Poly Network 攻击事件,还有今年 Multichain、Wormhole、Ronin Network、Nomad 等等,我就不一一列举了,这些攻击事件中,损失达到数百万甚至数亿美元。
而且跨链交易还会有一个反网络效应,就是当交易活动不多时,网络就会非常安全,因为黑客攻击的激励不足以覆盖他的攻击成本;而当交易多了起来,攻击风险就会越大。也就是说, 跨链生态越繁荣,就越容易受到攻击。这对资产大的用户以及跨链应用来说,是一个致命的隐患。那为什么会这样呢?跨链桥为什么那么容易被 hack?
Vitalik 在以太坊基金会第七次 Reddit AMA 中曾表示,他之所以对多链的区块链生态系统保持积极态度,而对跨链应用保持消极态度,一个关键原因就是桥接具有根本性的安全限制。你怎么看这一点?
Eric:其实这个例子里面有很多是因为是合约里面的逻辑代码,以及验证证明上的一些缺陷造成的,但是我觉得这些都会随着技术的一些发展和成长都就会得到解决。
但是确实在跨链协议上会有一个最根本的一个安全限制。我认为其实就是链的安全性。因为跨链协议安全限制,我觉得是符合水桶理论的。也就是跨链的话,会涉及到多条链。而这个跨链协议的安全性能的上限呢,对我们某一条链的安全性能下限来决定的。就是如果你的跨链协议中涉及到的某一条链,它的安全性能不佳,极易遭受到攻击。那么你这个跨链协议的安全性能就无法得到保障,那么你用户呢,在这个跨链的过程中,资产就很容易损失。
比如说有两条链,这两条链是异构的链。然后其中的一条链的安全性能比较差,那么你从 A 链往 B 链去转移资金,或者去进行跨链协议运行的时候,但后来如果在 B 链,因为某些安全问题需要回滚的话,对于 A 链上是没有办法进行处理的。像这种情况下,就可能因为 B 链的安全性能的一个瓶颈,就造成了整个跨链协议的一个安全性,不能够得到保证。
Franci:那么延续你说的这个话题,Vitalik 其实后来有基于这个话题,继续写了一篇文章。他提出了一个概念,叫做共享安全性。那我看完这篇文章之后,大概的一个理解就是:这个共享安全区域指的是,当我在某条链比如说链 A 跨到另一条链,链 B 使用该链的资产时,我是否能共享来源链的安全性?那根据这个划分方式,其实 cross-L1s 和 cross-l2s 是两种不同的情况,跨 L2 要比跨 L1 安全得多,因为他们的安全性都像 rollup 一样,是由以太坊提供安全保障的。那么 Orbiter 其实是专注于跨 L2 的解决方案,针对 vitalik 说的共享安全性,Eric 你是怎么理解的呢?你觉得跨 L2 比跨 L1 安全的同时,它会不会也有很明显的安全隐患呢?
Eric:我觉得 cross-L2 因为共享了 L1 的安全的机制,继承了 L1 网络的安全性。所以我认为它其实并没有什么明显的安全的隐患,但是它会有一个很明确很明显的一个缺点。Rollup 具有一个退出时间的问题,就是我们平常会说到提现时间。这个是 rollup 它本身的一个技术特点所决定的,有效性证明可能需要大约四个小时,而欺诈证明需要七天的时间。这样就会大大地限制了资产的流动性,限制 rollup 的发展。
跨链101
跨链的基本逻辑
Franci:跨链的基本逻辑是什么?一般来说,用户是怎么在两条不同的链之间实现跨链活动的呢?
Eric:了解以太坊和区块链生态的人会知道,我们现在区块链系统里面是有很多异构的,就是不能够进行相互关联的。一些链和链之间没有办法去直接地进行价值以及信息的交流。这在很大的程度上会限制区块链的功能的发展。
我们平时所指的跨链,其实指的就是在这些不同的区块链网络之间进行信息的一个交换。而且对这些交换的信息加以利用,实现我们在不同的区块链之间的一个互通,以及价值的转移。
如果一个用户使用跨链的话,它在实现的基本逻辑就是这样的:现在有 A 和 B 两条链,从源网络 A 链发起一个跨链信息,这个信息可能会经过某一些被信任的一些安全的方式,然后被发送到目标链 B 链上。而在这个过程中,可能会需要去验证这个信息的有效性,即这条跨链信息是保证真实的;并且当这条消息发送到 B 链上时,在 B 链上可能也会对这个这个消息的有效证明之类的去进行一些确认。然后在 B 链上会根据 A 链上的这条消息进行某些处理。处理之后,我们可以在 A 链上得到一个处理的结果。这个其实就是跨链的基本逻辑。
不同的跨链类型介绍
Franci:我注意到你刚才说的一些点,当用户他进行跨链时候,目标链会需要去验证那个来源链交易的一个有效性,在验证的技术选择方面可能会有不同的方式,可以列举一下一些比较主流的方式吗?我们是不是可以通过这些方式了解跨链的不同方案的基本的架构。
消息传递者的类型
Eric:跨链的一个基本逻辑里面,其实我们会发现有一个比较重要的角色。这个角色就是要把发起链上的交易信息发送到目标网络上。这样一个角色必须要是可信任的,因为我们要保证它要发送的是正确的交易。它属于消息的一个传递者。基本上在跨链协议里面,它都是一个链下的角色。然后这个 relayer,它通过不同的实现方式,它可能是单节点的;也可能是多节点的;还有可能是一些像 chainlink 这种第三方机构。
最基础的一个就是完全受信任的 relayer 模式。我们在正常的消息传递中,这个跨链协议里面链下会有 relayer 的角色。这个角色是通过不同的方式筛选出来的。有的可能是通过投票,有的可能是通过资金的质押筛选出来的。而且这个角色有可能是一个,也有可能是多个。然后这些角色会在练下对这个发起链上的一些跨链信息进行验证、打包。这个验证的过程中可能是多签的,也可能是分布式签名的方式,去保证安全性。但是这种方式会有一个问题,需要大多数签名的成员都是诚实的。
然后第二种的话就是可以着重讲一下 Layer Zero。它是在这种受信任的中继者模式的基础上又增加了一个角色,添加了一个叫做 oracle 的角色。它把 oracle 的角色和 relayer 的角色做了一个区分。Oracle 是用来提交发起链的区块头的一些信息,而 ralyer 只是用来发送一些交易的验证的证明。然后在线下会对这两者去进行匹配,并且通过算法进行证明,证明出区块的头验证。
最后一种就是乐观验证模式。这个模式上也是有链下的 relayer 角色,还会有一个watcher 和 updater 这两种角色。其中 updater 是要质押资金的,通过质押资金他会拥有负责打包这个发起链上的跨链信息的权利。然后 relayer 就只是单纯把 updater 的签名信息发送到目标链上去。其中还有 watcher 的角色,他负责监督负责签名交易信息的 updater。如果 updater 作恶的话,watcher 能够及时响应,然后使用其他证明方式阻止 updater 作恶。而这种方式在安全性上来说的话,它是最高的,因为它假设只要有一个诚实的 updater 运行。但是因为它使用了欺诈证明的方式,所以它可能在时间成本上会有有一点高,和前面两种来相比的话。
消息有效性的验证方式
Eric:然后当这些消息传递到了目标网络之后,它的有效性是如何的,对于它的有效性的验证方式也不同。
第一种就是目标网络上的一个合约验证。这个合约验证又可以分为两个方面,一个就是共识的验证,还有一种就是有效性的验证。然后有效性验证比较好理解,我们现在的 rollup 其实使用的都是这样的。它会通过欺诈证明和有效性证明的方式在 L1 的 rollup 合约去进行验证 L2 的状态。然后对于共识验证,它就是在目标链上要去验证来源链的一个共识这样的一个功能,而这个验证的功能可能就会涉及到它来源链,它使用的是什么样的一个共识的机制。嗯用的是 Pow 还是说 PoS 协议这样一种方式。第二种,其实就是放在链下去操作的,也就是一些外部的验证。而我们说了这些外部的验证者,他们都是通过某种方式选举出来这些可信的验证者,然后使这些可信的验证者通过多签或者是运行共识算法的方式去统一。在链下进行验证之后,然后才会提交到我们的目标网络上。然后第三种就是前面提到的乐观验证模式。只有在作恶的时候,watcher 才会负责在目标网络上提交欺诈证明。所以这个就是三种可能不同的验证方式。
Orbiter 就是使用了我们现在这种提前信任,加上争议仲裁的这样一个解决方案,然后就把我们的安全性完全于依赖于以太坊网络自身的安全性能。然后我们在保证这个安全性能的前提下,专注于 cross-L2 的开发。
Orbiter Finance 的实现方式和项目介绍
介绍 Orbiter 的架构
Eric:从角色层面上来说,可能会分为两个,一个是 sender 角色,一个是 maker 角色。也可以说一个是使用跨链服务的角色,还有一个是提供流动资金来帮助跨链的角色。
我可以先简单地讲一下用户使用 Orbiter Finance 跨链时的流程。比如说用户想从 zkSync 网络上把自己的以太坊资金转移到以太坊网络上。那么它就可以在 Orbiter 网页的前端进行操作,然后把他的资金从 zkSync 他自己的 EOA 地址转到我们提供服务的 Maker 地址里面去。
然后 Maker 在收到资金之后就会在目标网络上将计算后的代币,发送到用户的地址里面。这里面涉及的都是 EOA 之间的转账逻辑。在这个过程中呢,针对于 maker,Orbiter 会给他提供一个客户端。然后 Maker 也可以自己去部署一个客户端,然后自动化地实现后端,就是回款的一个流程。然后这个客户端里面,会去对用户跨链的金额、币种、网络状态之类的数据去进行一个监听。这是一个正常的流程,但如果是出现作恶的话,会有另外的逻辑。
Orbiter 采用的是提前信任的模式,就是我们默认了这些 maker 会正确的处理资产,正确地给用户返回这些资金。但是在整个的过程当中,maker 是存在作恶可能的,有可能他在发起网络上收到了用户的资产,之后把这个资产给扣留下了。
cr: Orbiter Finance
我们采用了一套去中心化的机制来防止作恶。主要是由三个合约,MDC、EBC 和 SPV 去实现这个功能。
而其中 MDC 合约其实就是一个 maker,就是 maker 注册的一个合约。然后在这个合约里面,会负责创建它的跨链规则服务,然后还要存放一些 maker 保证金,还有就是后续为sender 和 maker 提供一个仲裁处理的规则。
然后 EBC 合约就是一个事件绑定合约。现在我们主要的运用其实还只是在资产转移方面,所以这个 EBC 合约里面其实会对发起链,就是 sender 给予 maker 的这笔交易,通过来源链交易去推算出目标链交易。
而 SPV 合约就是一个简单的交易验证合约,就是用于证明用户提供的某条链上的一个交易是否真实的在这条链上。
然后通过这三个合约会运行一套机制,我们可以确保当 maker 作恶的时候,用户不会遭受到资产的损失。可以通过整个申诉仲裁的这样一个流程,到最后去得到资产的赔付,甚至是一个超额的赔付。
彩蛋
Franci:Orbiter Finance 创立以来有没有发生过什么有趣的故事呢?
Eric:有趣的故事的话,应该就是去年年底的时候,当时 Vitalik 在 Gitcoin 上发布一个 cross-rollup bouty。当时看到这个觉得挺有意思的,当时有一些自己的想法,然后当时我和我的同事,我们两个人就用了二十多天搞出了一个 pizza 合约,当时去参加了。而且最终的话就是从中获胜,然后得到了那个 Vitalik 的 16 个 ETH 的奖励。这个对我们其实也是一个很大的一个鼓舞。
访问 ecnpodcast.fireside.fm 收听 Podcast 以及获取节目的其他详细信息。你也可以通过泛用型播客客户端 Apple Podcasts、Pocket Casts、Castro、Google Podcasts、Spotify 等订阅我们的节目。