信任即服务:解锁区块链的下一波创新|乌托邦周报 #19
信任是区块链的立身之本。
要让用户信任一条链,按区块链的风格,有两种做法。一种是加密(如签名、ZKP),另一种是去中心化(引入更多验证者,相信大部分人或至少有一个人是遵循规则的)。
加密效果最好,但适用范围相对有限,因此在大多数场景下,去中心化仍必不可少。然而,去中心化面临网络效应冷启动的问题,即“鸡生蛋,蛋生鸡”窘境。一条新链,验证者少,安全性差,应用就不会来部署;应用不来部署,整条链能被验证者捕捉的价值就少,吸引不来更多的验证者。
虽然优秀的 Tokenomics 设计和项目运营(如 Airdrop 让渡部分价值吸引早期用户),或者从中心化过渡到去中心化的路线(如大多数 Sequencer),能缓解冷启动的问题,但仍是治标不治本;从零到一构建有广泛参与的去中心化网络,依然是横亘在区块链创新面前的一道难以逾越的门槛。
本文我们就谈谈以太坊、Polkadot、Cosmos、EigenLayer 是如何尝试一步步解决这个问题的,并抽象出“信任即服务”(Trust-as-a-Service;虽然叫“安全即服务”或许更直观,但安全在其他语境下有不同的意思,而且简称和 SaaS 撞车了)。
本文要点:
Dapp 与以太坊的安全依存关系
独立的应用链如何共享以太坊的安全性
在任意链之间共享信任的通用方案
Dapp 与以太坊的安全依存关系
以太坊的创新之处是引入智能合约,大大提升了区块链的可编程性。然而常被忽视的是,智能合约的引入,也潜在地解决了信任问题。
说信任可能比较抽象,我们举个具体的例子。
ENS 是 DNS 在区块链上的变种,作为智能合约部署在以太坊上,提供域名解析等的服务。大家可以花 ETH,在 ENS 上注册一个自己的域名(如 shibainu.eth)。
这个想法并非原创。其实早在比特币问世 2 年后,以太坊出现以前,Namecoin 就想到了。但当时还没有智能合约,要用区块链实现一套 DNS,只能独立开一条链。于是 Namecoin 就 fork 了比特币的代码,在其中加入了 DNS 的逻辑。那么问题来了,Namecoin 在一开始怎么吸引大家加入,做它的矿工,保障它的安全呢?
答案当然是发币(NMC),但是除了画饼吸引大家,有没有什么好的办法降低大家的参与门槛(迁移成本)呢?
Namecoin 想出了合并挖矿这么一个巧妙的思路,即让比特币矿工在不消耗额外算力的前提下,多运行一套 Namecoin 的全节点,同时给 Namecoin 挖矿,为其提供安全保障,并获得 Namecoin 发放的 NMC 作为回报。(合并挖矿可参考以前的文章。)
So far so good。不过,每提一个新应用,就得 fork 一下比特币,并且用 Token 来吸引比特币矿工加入。这样下来,矿工运行的节点会越来越多,负担也会越来越重,显然扩展性不佳。此外,如果参与合并挖矿的矿工,在应用链上作恶,提交内容非法的区块,那么他最多只会丢失应用链的 Token 奖励(应用链的其他节点会无视这个区块),这种惩罚力度十分有限。
以太坊将底层模块化,共享给各个应用。大家专心写智能合约,无需操心信任冷启动(构建去中心化矿工网络)的问题。而且,扩展性也比合并挖矿高,能支持更多的应用(虽然依然有 gas 上限)。此外,如果有矿工提交内容非法的区块,那么这个区块根本就不会被其他矿工接受;在以太坊转变为 PoS 共识后,恶意的验证者还会因此受到惩罚。
很好,对不对?
独立的应用链如何共享以太坊的安全性
无论是合并挖矿,还是以太坊,都存在一个要求,那就是应用链必须和依赖的主链足够相似。比如 Filecoin 就无法和比特币合并挖矿,也不可能作为智能合约运行在以太坊上,因而到头来还是得自己解决信任问题,这大大限制了更大范围内的创新。所以,以太坊对信任问题的解决,还不够彻底,无法支持更广泛的异质化应用。
有改进办法吗?
先看看 Polkadot。
在 Polkadot 方案里,应用链作为 Parachain(安全层面叫 Consumer Chain)存在,主链(Relay Chain,安全层面叫 Provider Chain)上的验证者会被随机分配到 Parachain 上,验证 Parachain 上提块的 Collator 没有乱来,没乱来的话就把 Parachain 上这个区块的头 Commit 到主链的区块里。这意味着,每条应用链的安全由主链的验证者提供,不用自己操心,只要应用链通过竞标,得到了 Polkadot 的 Parachain Slot,就可以高枕无忧了。不过可惜的是,Polkadot “车同轨,书同文”的设计思路,要求 Parachain 需要遵循同一套框架,相当于只是放宽了以太坊的限制,还是没解决彻底。
再看看 Cosmos。
Cosmos 设想的 Interchain Security 和 Polkadot 有几分相似,不过遵循了 Cosmos 标志性的模块化思路。想从 Cosmos Hub 共享安全的链,只需在 CCV(Cross Chain Validation)模块中,定义如何与 Cosmos Hub 就验证者信息进行通信,如何验证区块的合法性,以及怎么个惩罚法,其他的模块可以在更大的范围内变动。当然,由于 Cosmos 这套是在协议层实现的,因此共识机制还得要求是 Tendermint。嗯,比 Polkadot 灵活了很多,但限制还是在。
最后看看 EigenLayer 这个被给予厚望的项目。相比 Cosmos,它再做了一次加减法。
减法,指它着重保留了合法性验证的部分。通过在以太坊上部署的智能合约(不是靠协议),验证者将质押的 ETH 资产(原生的或者是经过再质押的)的控制权交给 EigenLayer,然后运行想要保障的应用链的节点软件;只要老老实实干活,就有奖励,如不老实,遭人挑战(Arbitrum 的那套交互式挑战逻辑)并验证属实,就会损失质押品(一部分会奖给挑战者)。
加法,指它更灵活,创造了一个验证者和应用链的双边市场,互相选择。验证者根据收益和其他因素,选择要为哪些应用链提供安全服务;应用链可以设定,为它提供安全服务需要满足什么要求。此外,应用链还可以结合以太坊的验证者和自己链上的验证者。(这个笔者认为尤其复杂,比如如何衡量不同 Token 的话语权,要引入预言机吗?类似的计划在 Cosmos 中叫 Layered Security。)
当然,EigenLayer 提高资金效率,是基于再质押(Restaking)实现的,后者本质上也是一种 Rehypothecation,或者是加杠杆。EigenLayer 的创始人不同意加杠杆的这个说法,认为只要你作为验证者,老实干活,就不存在风险(验证逻辑 bug 的风险暂且除外)。但这个说法只设想了好的情况,不好的情况是,一个巨鲸验证者 opt-in 了 100 个应用链(EigenLayer 叫 AVS,Actively Validated Service),这 100 个应用链认为自己有巨大的安全保障,但只要这个巨鲸验证者在一条链上作恶被罚,其他 99 条链都会看到自己的安全保障下降(主链其实也会受影响)。虽然应用链可以限制巨鲸验证者 opt-in,或者设定验证者 opt-in 应用链的上限,让自己的验证者更去中心化,以及远离系统性风险,但这还是很模糊,不太好实操。(目前 EigenLayer 还主要停留在设想上,代码很多没实现或做了极大的简化,后续还需要持续关注。)
在任意链之间共享安全的通用方案
其实到了 EigenLayer 这里,思路已经比较明确了;Cosmos Interchain Security V3 的规划也基本上和 EigenLayer 大同小异。
在智能合约层,收押验证者的质押品,然后按照预设的规则(如禁止 Double Signing),验证验证者有没有作恶,作恶的话就给予惩罚。
预设的规则,由应用链来定。验证过程,可以是 OR 那一套,由挑战者提供证据。可是智能合约怎么确定应用链上的最新状态真如挑战者说的那样呢?小问题,只要智能合约知道应用链的初始状态,后面的状态变更由挑战者提供证明就好了(有加密算法保障)。
照这个思路,基于 PoS 的支持智能合约的链的安全性,都可以共享给其他链,只要其他链的区块验证逻辑可以用前者的智能合约表达。
再接着就是进一步完善双边市场,让 Validator 和应用链的需求能更好、更快地匹配了。
结语
本文介绍了“信任即服务”(Trust-as-a-Service)的概念,即通过智能合约或协议,让一条链的验证者为其他链提供安全保障并获得相应回报的机制。带着对这一概念的问题,本文分析了以太坊、Polkadot、Cosmos、EigenLayer 是如何尝试实现这一机制的。
本文认为,“信任即服务”是区块链创新的基石性方向,可以解决信任冷启动的问题,支持更多的异质化应用,提高资金效率,但也需要注意系统性风险。