作者:Shinobi

来源:https://bitcoinmagazine.com/technical/overview-of-bitcoin-sidechain-tradeoffs

本文是研究比特币现存主要侧链设计的系列文章的末篇。强烈建议您先阅读前面各篇文章:(此处链接的皆为 BTCStudy 的中文译本)

  1. Spacechain 工作原理
  2. Spacechain 的应用场景
  3. Softchain 的应用场景和安全成本
  4. Drivechain:让侧链节点运营者可以雇佣矿工挖矿
  5. 联盟侧链:比特币最早的可升级侧链实现

- - -

归根结底,到底什么是侧链?那就是你可以把比特币区块链上的比特币转过去的其它区块链。这就是设计侧链的问题和困难所在 —— 你实际上做不到。你没办法把比特币区块链上的比特币转移到另一条区块链上;这是不可能的,因为你的比特币只能在比特币区块链上存在,它无法在别的地方存在。真正可能做到的是你在比特币区块链上以某种方式锁定比特币,然后再另一条区块链上创建其它代币来代表这些比特币。侧链的最高理想是这样做的时候还能保证:可以验证这些代币跟真正的比特币有 1:1 的数量关系(这是容易的),而且任何时候、在主链上解锁这些比特币的唯一方法都是可验证地锁定你在侧链上合法控制的代币(很难做到既能实现免信任性,又不会让比特币自身变得更加难以验证)。

设计侧链的所有困难几乎都围绕着设计锁定和解锁机制:锁定机制如何工作?解锁资金(撤出侧链)需要满足什么样的条件?这些条件如何验证?单向锚定机制,也就是你只能锁定资金而无法解锁资金的机制,会相对比较简单;只需要使用 OP_RETURN 烧掉一些比特币、在新链上铸造代币时要求验证燃烧,就可以了。双向锚定机制,也就是你既能锁定资金,也能解锁资金的机制,就会复杂很多。迄今为止,在已经设计出来的双向锚定机制中,一种会提高比特币主链的验证成本(softchain),另一种会给锁定 “在侧链” 的币引入新的信任假设(drivechain 和联盟侧链)。

侧链的圣杯是一种不要求信任、也不会提高比特币主链验证负担的锁定和解锁机制(既,侧链与主链的一次交互并不比一笔比特币交易更难验证)。当前还没有技术能实现这一点,所以我们来看看现有的方案都有什么缺点。

挖矿中心化

我介绍过的所有不同设计,除了 Liquid,都在某种程度上依赖于比特币矿工来为侧链提供安全性。RSK 虽然也是联盟侧链,但依然使用了比特币矿工。理论上侧链也可以使用其它机制,但如果这些机制无法像比特币矿工那样提供这么多的 PoW 安全性,侧链就会变成对比特币区块链的 DoS 攻击界面。所以,在现实中,如果我们要部署一条 Softchain,它会使用比特币矿工。Spacechain PoW 也正是基于比特币矿工(以确认承诺交易的形式)来确认侧链区块。Drivechain 是专门为比特币矿工的合并挖矿而设计的。除非你使用纯粹的联盟侧链,不然你部署以上任何一种侧链都免不了要让矿工参与进来。

在细说这种模式的风险之前,我们还要分辨一点:矿工(硬件运营者)和挖矿协调者(矿池;构建区块的节点)是有区别的。只要你不是拥有非常多的挖矿设备,就有必要使用矿池来获得规律的收益,这是一个合理的中心化因素。挖矿中心化/去中心化 不是一个简单的话题(更多可见此处),而且,不同的挖矿中心化因素跟挖矿的其它因素相互作用时有重要的细微差别。没有矿池,矿工的收入会变得非常不稳定而且无法预测。这一点,跟矿池在未来极有可能面临的监管风险(他们是托管商,托管着用户的资金直至用户自己取出),让矿池变成我们这个领域一个非常危险的中心化点。

矿工为了挖矿就必须验证区块链,无论是否外包这部分工作。不验证区块链,矿工就不知道自己所挖掘的区块是否带有无效交易;只要有一笔无效交易,就足以使整个区块作废,让他们为此付出的努力付之东流。但是,验证的要求并不是矿工使用矿池的理由:收益的可预测性才是。一个矿工,即使拥有全网 1% 的算力,也很少会挖到一个区块;但拥有一个矿池的 1% 算力的矿工,却能稳定得到该矿池所获得的区块奖励的 1%。验证成本是微不足道的,收益的可预期性才是卖点,这也是为什么开发者们正在寻找一种不需要中心化矿池也能获得同样好处的办法。这将允许矿工不再依赖一个完全控制着哪些交易可以进入区块的中心化实体。

现在,假设验证成本变得更高。可以创建的 Spacechain 的数量并无限制。虽然它们并不锚定比特币的价格,但对于矿池(和矿工)来说,为了赚到更多的钱,任何一种具有重要价值的链都是值得挖掘的。这样做的矿工会比不这样做的矿工更有竞争力,而且,如果未来挖矿变成了一个利润率极低的行业,挖掘其它链就会变成一项要求。不这么做你就赚不到钱。这样做的矿工可以推高不这么做的矿工的成本,并依然赚到钱,从而将其他人逐出行业。

此外,侧链的验证成本并无限制。验证一些密码学函数、像以太坊那样的任意复杂性,甚至是 BSV 那样的傻瓜大区块,都可以是非常昂贵的。Softchain 也有同样的风险,而且它还会提高普通用户运行全节点的验证成本。唯一的 “可取之处”(假使我们愿意这么认为),是每一条 Softchain 都需要一次专门的软分叉来部署。起码,这意味着,每一个提案及其验证成本,在被激活之前就会得到严格的审视。

那么 drivechain 呢?他们声称 drivechian 可以解决挖矿中心化的问题,但现实是不行。Drivechain 的概念是侧链的区块创建者会向矿工支付他们可得到的侧链手续费的绝大部分,只留下一小部分给自己。但是,在一个利润微薄的世界里,苍蝇腿也是肉,你自己拿了,就可以把不拿的矿工赶出行业。即使你假设 drivechain 的区块创建者不会给自己留下任何手续费,全部会上交给矿工,要是侧链上没有其它形式的变现手段,他们怎么会愿意这么做呢?也就是说可能存在某种形式的 “矿工可抽取价值(MEV)”,是矿工可以赚钱的地方,它会有相同的中心化效果。长远来看,任何类型的去中心化矿池都不得不让矿工运行所有这些侧链节点,这对小体量的矿工来说是非常不实际的。这将给去中心化挖矿带来一个人为的天花板。

只有联盟侧链可以避免给比特币挖矿带来中心化效果,因为它不与矿工交互,只在被锁定的币离开侧链时才需要为脱锚交易支付手续费。

锚定机制与共识的风险

侧链挖矿的方式会给比特币挖矿带来中心化风险,而资金锁入侧链和解锁的方式则会给比特币共识带来风险。联盟锚定和单向锚定不会给共识带来严重的问题。联盟锚定机制基本上跟托管式交易所没有区别 —— 你可以存钱进去、取钱出来 —— 它基本上不跟共识流程交互,就跟交易所一样,所以也不会带来新的风险。单向锚定直接就是烧掉你的比特币,所以它们是不可恢复的,因此也不会在共识中产生风险。但是,softchain 和 drivechain,都在不同方向上给比特币共识带来了风险。

Softchain 给比特币主网络带来了清晰可见的共识风险。首先,每一条 Softchain 都会给只验证主链的节点增加验证成本;而且,这种增加既可能微不足道,也可能非常突出,完全取决于需要验证的 Softchain 区块大小和规则复杂度。其次,softchain 上任何因为非确定性 bug 而产生的共识分裂都有可能影响主链。在 2013 年,这样的 bug 导致了链分裂。因为不同比特币用户用来处理读取和写入的数据库不同,一些节点会 “耗尽” 可以读取和写入数据的时间,并因此拒绝一个本来有效的区块。因为这些操作是基于单体的计算机资源来限制的,而每个节点拥有的资源都不同,因此不会出现持续分裂的情形。

在一条 Softchain 上出现这样的意外也会给主链带来共识风险,因为 softchain 跟主链交互的方式。最后,为一条 Softchain 定义挖矿难度的方法,可能会给主链节点的验证成本带来很大的影响。检测到一条 Softchian 的任何分叉,都会触发主链节点下载和验证这条 Softchain 的每一个区块、直至追溯到发生链分裂的源头,这可能会极大地增加主链节点的验证负担,就看这条 Softchain 本身的验证难度了。如果挖矿难度对比特币全网挖矿算力来说太低,或者被允许变得太低,它就会称为一种非常便宜的攻击比特币的手段:只要在侧链上制造链分裂,就可以提高主链节点的负担。

Drivechain 给共识带来了更加微妙的风险。如上所述,drivechain 跟其它侧链机制一样,可能进一步加剧挖矿中心化。这跟以下这个事实会相互作用,导致糟糕的后果:drivechain 的锚定机制本质上就是矿工完全控制着 drivechain 上的资金;只要大部分矿工同意,他们可以对各 Drivechain 上锁定的资金为所欲为。Drivechain 上的资金安全性完全依赖于矿工足够去中心化,因此 51% 攻击是不可能的;但是,它同时又创造了在长期中可能加剧挖矿中心化的压力。

如果这样的机制愈演愈烈、矿工从某个 Drivechain 上盗窃了资金,这条侧链的用户除了使用 “用户激活的软分叉(UASF)” 制止矿工之外没有别的选择。但这时候的 UASF 将跟 2017 年的 UASF 面临完全不同的情形:在 2017 年时,用户在在分叉的两条链上都会拥有币,支持 UASF 的用户两种选择都有。但是在为了制止矿工偷盗某一 Drivechain 的事件中,只有分叉链上他们才拥有资金;而在原链上他们什么都没有。如果 UASF 失败,链分裂了,他们没有激励回到原链上。

有些人甚至主张,矿工应该攻击特定的 “坏” 侧链(尽管不确定在一条侧链上什么东西叫做 “坏”)。如果 drivechain 被普遍部署,它的整个机制可能会让比特币区块链分裂并削弱其网络效应。在 drivechain 被盗事件中受害的人有动力维持一条分叉,因为不这样做他们就会一无所有。

总结

如果这篇文章不比较联盟侧链,那将是我的疏忽。联盟侧链不会像其它设计那样对比特币共识产生直接的威胁,但它们本质上是一个信任系统。在使用这样的系统时,用户应该想清楚自己所获得的功能是否值得它在安全模式上的牺牲、托管资金的联盟是否值得信任。

最后,当前还没有侧链设计能够实现 2014 年提出侧链概念的白皮书所许下的承诺;它们要么无法在锚定机制中提供我们希望的安全性,要么会给比特币主网络带来风险。也许有一天像 “零知识证明” 这样的东西可以提供一种办法,既不会像 softchain 那样给主链增加验证负担,又不会像 drivechain 和联盟侧链那样在用户资金托管中引入新的信任假设。但在目前,还没有这样正确的设计存在。如果你认为完全免信任的侧链是比特币的一项重要升级,那么幸运的话,未来我们将能部署实现它的技术,但当前还没有任何东西接近这个理想。

(完)