如何构建一个假去中心化的跨链协议
Adam Back(比特币核心开发团队领袖,BlockStream CEO)有一句话令我印象深刻,“伟大的设计看起来都是非常简单的,但是设计它的过程其实是极其复杂的”。但是,并不是所有看起来简单的产品设计都可以称得上伟大,比如LayerZero。
跨链协议不出事之前大家都觉得很安全,没啥问题,但一出事都是惊悚大事。从过去两年各链上发生的安全事件造成的损失金额来看,跨链协议上的安全事件造成的损失位居榜首。解决跨链协议安全问题的重要性以及紧迫性甚至超过以太坊扩容方案。跨链协议之间的互操作性是Web3连成网的内在要求。这类协议经常融资金额巨大,TVL和交易笔数也在刚需驱动之下日益增长。但由于大众的辨识度不高,无法识别这些跨链协议的安全等级。
我们先看一个产品设计架构。Chain A和Chain B之间的通讯过程由Relayer来执行,Oracle对Relayer进行监督。首先这个架构有一个优点是免去了传统的ChainA、ChainB之间的通讯由第三条链(一般不在这条链部署dApp)完成共识算法以及数十个节点验证,因此能给终端用户带来“快速跨链”的用户体验。因为架构轻便,代码量少,Oracle有现成的Chainlink,所以这种类型的项目很容易上线,但也很容易被模仿,技术门槛可以说是Zero了。
图1: 假去中心化的跨链协议基础版
以上架构至少存在2个问题:
1. LayerZero将几十个的节点验证缩减成单一的Oracle验证,安全系数自然是大幅降低。
2. 在简化成单一验证之后就必须假设Relayer和Oracle是独立的,而这种信任假设是不可能永恒成立的,不够Crypto Native的,无法从根本上保证二者不能合谋做恶。
这就是LayerZero所采用的基本模式。作为独立安全类型的“超轻”跨链方案,它只负责转运消息,并不对应用的安全负责任,也没有能力负责任。
那如果放开Relayer,让大家都可以来运行中继器,是否能解决上述问题呢?图2是将图1的数量变多了。首先Decentralized并不是指运行者数量变多,谁都可以接入,那叫Permissionless。需求端一向都是Permissionless,让供给端也Permissionless并不是划时代的变革,这是市场端的变化,与产品本身的安全性没有太强的关系。LayerZero的Relayer只是一个负责转发信息的中介,本质与Oracle一样,都是Trusted Third Party。试图通过将受信主体从1个增加到30个来提高跨链安全性不过是徒劳无功,不仅没有改变产品特性,还会有新的问题伴随而生。
图2: 假去中心化的跨链协议高级版
如果一个跨链代币项目允许修改配置的LayerZero节点,那么就有可能会被攻击者替换为其自己的“Layerzero”节点,进而伪造任意的消息。从结果而言,依然是使用Layerzero的项目出现了巨大的安全问题,且这种问题在更复杂的场景下会更严重。庞大的系统中只要有一个环节被替换就可能造成连锁反应。LayerZero本身并不具备可能来解决这个问题,如果真出现安全事故,LayerZero自然而然会将责任推给外部应用。因为终端用户需要自己谨慎判断每个使用LayerZero的项目的安全性,所以那些“用户导向”的项目会谨慎接入LayerZero以免被同属这个生态的恶意应用污染,这样一来生态建设难度就不小了。
如果Layer0不能像Layer1、Layer2一样共享安全性,那这个Layer0就不能叫做Infrastructure,因为基础设施之所以“基础”是因为能共享安全性。如果某一项目方自称是Infrastructure,那就应该像其他基础设施一样为自己的所有生态项目提供一致安全性,即所有生态项目共享该基础设施的安全性。所以,准确的讲,LayerZero并不是基础设施Infrastructure,而是中间价Middleware。接入这个Middleware SDK/API的应用开发者确实可以自由定义他们的安全策略。
L2BEAT团队曾在2023年1月5日发文Circumventing Layer Zero: Why Isolated Security is No Security,指出他们假设应用所有者(或拥有私钥的人)不会做恶的这种假设是不正确的。坏人Bob获得了LayerZero 配置的访问权限。坏人Bob可以将预言机和中继器从默认的组件更改为由他控制的组件,说服以太坊上使用LayerZero机制的智能合约让他将好人Alice在以太坊上的代币全部提走。原文链接:https://medium.com/l2beat/circumventing-layer-zero-5e9f652a5d3e
Nomad团队在2023年1月31日发文指出,LayerZero 中继器存在两个关键漏洞,目前处于两方多重签名状态,所以这些漏洞只能由内部人员或已知身份的团队成员利用。其中第一个漏洞允许从 LayerZero 多重签名发送欺诈性消息,第二个漏洞允许在预言机和多重签名签署消息或事务后修改消息,都可导致所有用户资金被盗。原文链接:https://prestwich.substack.com/p/zero-validation
当被花哨表相迷惑的时候,那就试着回溯本源。
2008 年10 月31 日,比特币白皮书问世。 2009 年1 月3 日,BTC 创世区块诞生。《比特币:一种点对点电子货币系统》白皮书里的摘要中文翻译如下:
一种完全的点对点电子货币应当允许在线支付从一方直接发送到另一方 而不需要通过一个金融机构。数字签名提供了部分解决方案,但如果仍需一个 可信任第三方来防止双重支付,那就失去了电子货币的主要优点。我们提出一 种使用点对点网络解决双重支付问题的方案。该网络通过将交易“哈希”(动词)进一条持续增长的基于哈希的工作量证明链来给交易打上时间戳,形成一条除非重做工 作量证明否则不能更改的记录。最长的链不仅是被见证事件序列的证据,而且也是它本身是由最大 CPU 算力池产生的证据。只要多数的 CPU 算力被不打算联合攻击网络的节点控制,这些节点就将生成最长的链而超过攻击者。这种网络本身只需极简的架构。信息将被尽力广播,节点可以随时离开和重新加入网络,只需接受最长的工作量证明链作为它们离开时发生事件的证据。
人们从这篇对后世有着举足轻重的论文里,尤其从这段摘要里提炼出后来广为认知的“中本聪共识”,其核心特点是杜绝出现A Trusted Third Party,实现去信任化Trustless,去中心化Decentralized。这里的“中心”即为A Trusted Third Party。跨链通信协议本质上与比特币一样,都是一个Peer to Peer的系统,一方从Chain A直接发送到ChainB的另一方,而不需要通过任何trusted party。
具备Decentralized和Trustless特性“中本聪共识”已经成为后来所有做基础设施的开发者共同追求的目标。可以说,不满足“中本聪共识”的跨链协议,即为假去中心化跨链协议,不能使用Decentralized、Trustless这种高级字眼来形容自己的产品特性。而LayerZero介绍自己说是Omnichain communication, interoperability, decentralized infrastructure. LayerZero is an omnichain interoperability protocol designed for lightweight message passing across chains. LayerZero provides authentic and guaranteed message delivery with configurable trustlessness.
事实上,LayerZero既要求Relayer、Oracle这两个角色不会合谋做恶,又要求用户将使用LayerZero构建应用的开发者作为可信赖的第三方来信任,而且参与“多签”的受信主体都是被事先安排好的特权角色;与此同时,在它整个跨链过程没有产生任何欺诈证明或有效性证明,更别说将这些证明上链并做链上验证。因此,LayerZero根本就不满足“中本聪共识”,压根就不是Decentralized和Trustless。
在L2BEAT团队以及Nomad团队以问题发现者的角度发表善意文章之后,LayerZero的回应态度是“否认”再“否认”。比特币之前就有了很多电子货币了,但是都失败了。因为它们都没有能达成去中心化,抗攻击和自带内在价值的目标,跨链协议也是如此,哪怕融资再多、流量再大、“血统再纯正”,只要产品无法实现Real Decentralized Security,大概率是会因为抗攻击韧性不足而宣告结束。
曾经有一个立场本应该和LayerZero保持高度一致的朋友问我一个问题:“如果LayerZero想要像Way Network一样使用零知识证明来升级他们的跨链协议,那难度高不高,会有什么障碍?”这是一个令人玩味的问题,而问题的关键是他们不认为自己有问题。
Scan QR code with WeChat