随着多链格局的发展,跨链桥已成为 Web3 领域的重要基础设施,无论公链格局如何演变,此消彼长,跨链始终是不变的刚需。对于 Dapp 项目方而言,他们需要将自身业务范围尽可能扩展到更多链上,从单链 Dapp 发展为全链 Dapp;对于公链项目方而言,大家都有动力去桥接比特币和以太坊,为自己的生态导入资产和流量;对于加密用户而言,也希望让自己的加密资产能以去中心化的方式游走于不同的链上,而不再依赖于中心化交易所。
然而,跨链桥作为链间“运钞车”,却屡遭“抢劫”。过去两年,主流跨链桥项目几乎无一例外的被黑客光顾。在各类型加密安全事故中,跨链桥事故以将近 20 亿美元的损失金额高居榜首。解决跨链桥安全问题,为这辆目前“敞篷”着的“运钞车”加装护甲迫在眉睫。
总体来看,跨链桥的安全事故分类两类:一类是合约代码漏洞导致,比如缺乏代币合约地址验证,导致攻击者伪造的假币存入事件没有被过滤,再比如缺乏访问控制,导致验证者集名单被篡改;另一类是验证节点串谋,盗取私钥,进而盗取跨链桥锁仓资金,亦或铸造假币向 LP 抢劫。
前者的主要原因是跨链桥代码库尚未成熟,这类问题随着行业经验的积累会慢慢减少。后者的主要原因则是跨链桥在设计层面的固有缺陷。
跨链桥本质上解决的是一条链如何知道另一条链上的事件的问题。这个问题分为两个方面,一是传递,二是验证。在跨链桥中,任何人都可以传递跨链事件,关键是目标链如何验证该事件在源链上真实发生。
根据验证机制的不同,跨链桥被分为原生验证(Natively Verified)、本地验证(Locally Verified)、外部验证(Externally Verified)三种类型。
原生验证是指目标链的全体验证人对源链的事件进行共识验证,一般是通过在目标链上部署源链的轻客户端实现的。该轻客户端不断保存和更新源链的区块头,进而对源链的事件执行 SPV 验证。
本地验证是指交易对手对交易直接进行验证,也称点对点验证。典型的范式是基于哈希时间锁的原子交换。由于交易双方的经济利益是对抗的,因此不存在合谋的可能性。
外部验证是指引入一组外部的见证者来负责验证跨链消息,外部的见证者集对跨链事件进行共识签名,目标链验证该签名后即认为该事件可信。
原生验证成本较高,主要体现在两点,一是链上验证成本高,链上运行轻客户端,并对事件执行 SPV 验证都会消耗大量的 Gas,二是兼容新链的开发成本高,每兼容一条新链,就需要开发至少一对轻客户端。随着 ZK 叙事的崛起,目前市面上有通过 ZK 技术改进原生验证的方案,可以有效缓解上述成本,但无论如何优化,链上至少还是需要验证一个 ZK 证明,开销大约为 500 k Gwei,与外部验证仅需验证一个签名(21 k Gwei)不可同日而语。因此原生验证在跨链桥的价格竞争中无法占据优势,且无法实现真正意义上的“全链”。
本地验证曾经被 Celer、Connext 等知名项目采用,但这些项目无一例外,已改弦更张,不再使用本地验证。原因是本地验证的交易体验极差,无论如何优化,始终需要用户至少操作两次(发起交易、解锁哈希锁),如果交易对手中途离线,或故意不成交,还会导致用户的资金被卡住。除此之外,本地验证仅适用于资产跨链,无法扩展至任意消息跨链。
外部验证实现成本较低,跨链开销低,可以轻松适配多链,且支持任意消息跨链,目前它是大多数跨链桥项目采用的方案。但外部跨链桥由于引入新的信任假设,而带来潜在的串谋风险。外部验证型跨链桥大多采用 MPC (安全多方计算) 技术,对私钥进行分片,让每个外部验证节点掌握一个分片。相比普通的 MutiSig(多签) 技术,MPC 技术具有普适性更强(对链采用的签名方案没有要求)、验证成本更低(链上仅需验证一个单独的签名)、方便移交签名权限(仅需刷新分片,无需变更地址)等优势,但这并不改变外部验证的中心化实质,不能杜绝串谋。
那么究竟使用什么样的跨链方案,能在不牺牲跨链桥性能、可扩展性、通用性的前提之下,消弭串谋风险,改善跨链桥的安全性呢?
Bool Network 是由 LayerBase Labs 推出的跨链桥产品。LayerBase Labs 在跨链领域研究了近 4 年时间,期间推出了一些最小可行性产品,但由于这些产品不够完善,始终未推广至大范围使用。近期,LayerBase Labs 推出了基于 动态隐藏委员会(DHC) 的跨链桥:Bool Network,这一方案被认为足够完美,因此准备在公众面前亮相。
Bool Network 的跨链方案在 MPC 技术的基础上融合了 ZK 技术和 TEE 技术,将外部验证者集改造为一个不可知、不自知的动态隐藏委员会,实现了高度的抗串谋属性,进而实现了高度的安全性。
我们用一个例子来说明什么是“动态隐藏会员会”。
假设你是一名将军,统领 1000 名士兵,奉命守卫 50 个粮仓,你将如何安排你的士兵呢?
假设所有粮仓都是同等重要的,那么将 1000 名士兵分成 50 个 20 人小队,每个小队分别负责驻守一个粮仓便是最好的安排。
但分兵把守带来一个隐患,如果某一个小队超过半数的士兵串谋,那么对应的粮仓就可能失守,也就是说如果一个小队中有 11 名士兵串谋,就可能背叛你,抢夺粮仓。
这是你不能容忍的,为了阻止这种串谋,保证粮仓的安全,你可以采取这样的办法:
动态:每天对所有士兵进行重新分组,重新划分小队,这样每个士兵所守卫的粮仓和他的队友都将不固定;
隐藏:蒙上士兵的眼睛,让他们不知道自己守卫的是哪个粮仓,也不知道自己的队友是谁。
这样下来,叛变的士兵将不知道和谁去串谋。即便有事先约定好的叛变者,他们也无法控制、无法得知叛变者是否在同一小队。
假设要保证串谋大概率成功,叛变者必须串谋你整个1000人队伍当中的大多数才可以。这无疑难如登天。通过“动态”和“隐藏”的方式,你让每一个小队的可靠性都达到了整个队伍的水平。
这正是 Bool Network 采用的方案。
Bool Network 要求网络中的节点必须使用 TEE 设备参与跨链事件的验证。Bool Network 是完全开放准入的,任何拥有 TEE 设备的主体都可以通过质押 $BOOL 成为验证节点。
TEE 全称为可信执行环境(Trusted Execute Environment),它是给定设备上运行的与主操作系统隔离的计算环境,就像一块飞地(Enclave),这种隔离是通过硬件强制实现的。在 TEE 中运行程序的过程是隐蔽的,外界不可感知,也不可干预。这会让黑客攻击无从下手。
TEE 可以运行具有高安全性的应用程序,例如生物特征认证,安全支付管理等。在我们日常生活中,TEE 并不陌生,手机上的指纹验证就是在 TEE 中运行的。这样可以保证其他手机应用在使用指纹验证结果的同时无法获取指纹信息。
在跨链事件的验证过程中,外部验证节点需要进行共识签名,这时,私钥不得不暴露在网络中,极易成为黑客攻击的目标。2022 年 3 月 Axie Infinity 官方桥 Ronin Bridge 遭遇的攻击和 2022 年 6 月份 Harmony 公链官方桥 Horizen Bridge 遭遇的攻击,正是桥节点私钥被黑客获取导致的。将 TEE 用于保管私钥分片,执行共识签名,将大大提升安全性,避免私钥被黑客获取。在此基础上,Bool Network 要求 TEE 节点之间的所有通讯也完全加密,这样一来,黑客也无法从节点之间的通讯内容中截获任何信息。
Bool Network 被设计为了一个创建跨链桥的工具,支持任意第三方在其上创建跨链桥,当某第三方在 Bool Network 上创建跨链桥时,需要先创建 DHC(动态隐藏会员会),假设该第三方希望自己创建的跨链桥支持 10 条链,那么就需要创建 10 个 DHC,每条链对应一个 DHC ,所有向该链发送的跨链消息都由该 DHC 负责验证。
每有一个第三方通过 Bool Network 创建跨链桥,就会产生若干个 DHC,随着 Bool Network 上创建的跨链桥不断增加,可能会有成千上万个 DHC。第三方可以设置 DHC的签名阈值,常见的签名阈值有 5-of-9、13-of-19、15-of-21。
需要注意的是,每个 DHC 中的成员并不是固定的,而且是不断轮换的,每个 Epoch 会洗牌一次。 基于 ZK 技术,Bool Network 开发了 Ring VRF 协议,可以完全随机的为每一个 DHC 分配成员。 Ring VRF 会为 DHC 成员生成一个 ZK proof,这个 ZK proof 代表了成员的临时身份,DHC 成员都是用临时身份去相互识别和相互通信,从而合作完成某项工作(比方说进行 MPC 门限签名);这样做保证了 DHC 成员无论对外,还是彼此之间,都是匿名的。
同一个 Epoch 内,不同的 DHC 中的 TEE 节点可能会重叠,也可能有部分 TEE 节点没有进入任何一个 DHC 而被闲置,这些情况都是被允许的,但 RIng VRF 在概率层面,会赋予每个 TEE 节点完全均等的机会。
总之,通过 动态隐藏委会员 机制,Bool Network 构建了一个牢不可破的黑箱。如果一个 TEE 节点处于工作状态,任何人(包括节点运营者本人、其他节点、外部攻击者)都无从知道该节点的运行状态,该节点在哪一个DHC?与哪些其他节点在同一个DHC?进行了哪些共识通讯?签名了哪些消息?都无从知晓。这就是前文所述的“不可知”、“不自知”。在这样的前提下,只要 Bool Network 网络自身是安全的,那么每一个动态隐藏会员就是安全的。若要保证攻击大概率成功,攻击者必须掌握 Bool Network 中的大多数节点。但由于运行在 TEE 中的程序是不可篡改的,攻击者只能做到让网络宕机,无法盗取网络中的资产。
尽管安全性是跨链桥最迫切要解决的问题,但安全性却不是评价跨链桥的唯一标准。如果为了解决一个问题,创造了一个新的问题,那就不是在真正解决问题。
LayerBase Labs 很早就研究过各种基于轻客户端的扩容方案,包括 ZK Client 的方案。ZK Client 的基本原理是通过 ZK 技术给轻客户端扩容,把区块头的验证和对源链事件的 SPV 验证放到链下,生成一个 ZK 证明提交到链上,链上仅需验证该 ZK 证明即可等效于验证区块头和源链事件,这种方案虽然足够安全,但其链上的 Gas 消耗依旧高昂,其次,链下的 ZK 电路和链上的轻客户端在工程实现上都比较复杂,这可能导致更容易出现代码层面的漏洞,从而影响跨链桥的安全性。此外,为了避免每一条链都必须部署其他所有链的轻客户端,这种方案往往不得不引入一个中继链(见图3),而中继链的存在将使得原本一步可以完成的跨链消息传递过程不得不拆分成两步,导致跨链消息传递的 Latency (延迟) 增加。
现在业内鼓吹 ZK Client 技术的人很多,甚至声称 ZK Client 是跨链桥的终极解。我们想说的是,技术不是用来作秀,更不是用来赶时髦的,而是用来真正解决问题的,ZK Client 制造的问题远比它解决的问题更多。
我们也研究了 LayerZero 的所谓的 Ultral Light Client 方案,LayerZero 将轻客户端放到链下预言机里运行,从而解决链上 Gas 开销的问题,但你把验证的职责从目标链的验证人手里移交给了链下预言机,那就不再是原生验证,而是外部验证,对链下预言机是有安全假设的。至于 LayerZero Labs 的声称的:“ Relayer 和预言机相互独立”的安全前提,在现实中根本不存在,L2BEAT Labs 的攻击实验已经证实了这一点。
我们也注意到了 Nomad 、Celer 所采用的乐观验证方案,通过在外部验证的基础上,增加一个挑战者的角色,可以成功的将 m-of-n 的安全性提升至 1-of-n,这种方案虽然构思精巧,但代价是 30 min 左右的延迟,这个延迟会导致该方案的适用范围受限。
我们还发现 Avalanche Bridge 的设计很酷,它采用 TEE 节点作为外部验证者来验证跨链事件,并通过极简的合约设计实现了高效和廉价的跨链体验。但我们也看到,Avalanche Bridge 尽管可以安全的保管私钥,防范外部攻击者,却无法防范祸起萧墙,也就是内部 TEE 节点之间的串谋攻击。
最终,我们提出了当前的 Bool Network 的动态隐藏委员会的方案,从安全角度讲,可以做到防止外部黑客攻击的同时,防止内部串谋,从性能和体验方面,Bool Network 的跨链体验没有在外部验证的基础上做任何牺牲,与外部验证桥保持同一水平。
评估一个跨链桥,我们认为应该在不可能三角的基础上,扩充为六个方面进行综合评估,分别是成本(Cost)、速度(Speed)、安全性(Security)、可用性(Liveness)、通用性(Generality)、可扩展性(Scalability)。
成本:跨链的成本主要在于链上的 Gas 成本,Bool Network 的一次跨链消息验证的费用实际上只有一个单次签名的验证,和外部验证桥在同一水平;
速度:这里我们只评估跨链桥本身的 Latency,不考虑链本身的最终性问题 。在这点上,由于没有多余的链上与链下计算,也没有中继链的设计(中继链会导致冗余的二阶验证),Bool Network 的跨链速度也可以达到极限水平;
安全性:我们已经充分探讨了,Bool Network 可以做到外防攻击、内防串谋。
可用性:简单来说就是别宕机。Bool Nework 会让每个 DHC 在创建时配备一个或多个备份 DHC,以防止某个 DHC 内超过半数 TEE 节点离线时导致的可用性问题。
通用性:不仅要支持资产跨链,也要支持任意消息跨链,这点 Bool Network 也满足。
可扩展性:能否快速支持新链。Bool Network 仅需部署一组简单的合约即可支持一条新链(1人月的开发工时即可完成),现在我们已完成了对全部主流区块链的支持。此外,Bool Network 不受链图灵完备性的限制,可以在不增加新的信任假设的前提下,支持 BTC 等非图灵完备的链。
可以说,Bool network 是跨链桥中的六边形战士。
值得一提的是,Bool Network 的技术方案论文已经被密码学领域的顶级期刊 IEEE TIFS 收录(链接: https://ieeexplore.ieee.org/document/9903072),这代表着密码学界对 Bool Network 技术方案的认可。
Bool Network 目前提供的是一个安全的跨链桥搭建平台,任何第三方都可以基于 Bool Network 创建全链应用。Bool Network 将成为全链应用最坚实的底层支撑。
我们换个视角看,Bool Network 本质上是搭建了一个去中心化的签名机,该签名机不止可以用于验证链上的消息,也可以用于验证链下的消息,这意味着 BOOL Network 会成为一个安全可靠的全链预言机。此外,BOOL Network 搭建的去中心化 TEE 网络,未来还可提供隐私计算服务。
Bool Network 是一个基于多方计算、零知识证明和可信执行环境的无需许可、完全去信任并具有高度可扩展性的全链互操作协议。它提出了一套独特的分布式签名机制,解决了跨链的不可能三角问题。该机制可以被用作底层协议,去赋能上层应用实现异构网络之间的加密资产转移及任意信息传输。
找到我们:
Website | BoolScan | Github | Paper
社交账号: