如何实现比特币和多条侧链双向锚定?

百款NFT链游免费玩 数字货币支付图解教程 区块链游戏获利技巧

Drivechain 用「算力托管」的方案实现比特币与侧链锚定,方式简单且激励性更强。

在理解 Drivechain 之前,我们先要转变绝大多数比特币用户已经习惯了的思维定势。理解 Drivechain 的关键不在于 「免信任」 或 「数学确定性」,而是博弈论和激励。(总的来说,比特币也是如此,但是人们往往会忽略这点,沉浸在数学带来的免信任假想中。)

本文将介绍 「算力托管(hashrate escrow)」 的基本原理(简单)和激励(复杂),以及它是如何实现主链(比特币)和多条侧链之间的双向锚定的。

「Drivechain」 的完整概念还涉及盲合并挖矿(blind merged mining)(即,侧链通过将区块哈希值发布至主链来实现自挖矿,无需矿工运行侧链挖矿软件),不过这个概念理解起来要容易得多,而且通过 BIP 301 机制或 Spacechains 机制就可以实现。

从比特币的角度来看,算力托管是如何运作的?

我们需要创建一个新的地址类型。凡是进入这类地址的代币都会被锁定,只有当所有矿工在 6 个月内就取款交易(WT^)达成共识时,才可以动用该地址上的代币。每条侧链在比特币区块链上都有这样一个地址。

为了收集矿工的一致意见,bitcoind 会追踪所有想要动用特殊地址上的代币的交易的 「分数」。每当一条侧链上新挖出一个区块,矿工就可以使用 coinbase 交易将一个 WT^ 的分数增加 1,同时将其它所有 WT^ 的分数减去 1;或者将所有 WT^ 的分数减去 1;或者什么都不做。(译者注:此处的 「矿工」 指的是比特币主链的矿工。)

当某个交易的分数足够高时,这个交易就会被发布到链上,将资产从侧链转移到发起取款交易的用户那里。

在 6 个月内分数未能达到阈值的 WT^ 会被丢弃。

上述流程有什么意义?

上述流程意味着,用户可以通过将代币存入特殊地址来将它们从主链转移到侧链,然后再通过特殊的取款交易取走侧链上的代币。

特殊交易可以通过某种方式冻结侧链上的代币,然后所有取款请求会被聚合到一个主链 WT^ 内提交给主链矿工,以便主链矿工进行投票。过了几个月后,投票通过的 WT^ 会被发布到链上。

现在,最关键的部分是:WT^ 的有效性并非由比特币主链规则验证,即,如果 Bob 已经请求从侧链提款到他在主链的地址,但是有人发布了一个错误的 WT^ ,将原本属于 Bob 的代币发送到了 Alice 在主网上的地址,主链是无法知晓的。WT^ 是否有效仅仅取决于矿工的投票分数。矿工的职责是正确投票 —— 为此,他们可能想要运行侧链的 SPV (简单支付验证)节点,以便见证侧链区块链上存在对 WT^ 交易的引用(然后验证其是否有效),或者通过其它方式进行验证。

什么?要等 6 个月才能拿回我的钱?

是,也不是。实际上,想要取回代币的用户可以使用原子交换(atomic swap)、潜水艇交换(submarine swap)或其它类似服务实现代币在侧链和主链之间的双向转移。较长的取款延迟期所造成的成本将由少数想从中获利的流动性提供者承担。

为什么要这么麻烦?

Drivechain 可以解决很多不同的问题:

催化有关比特币的实验和新用例

发行资产、完全隐私型交易、有状态的区块链合约、图灵完备、去中心化游戏、一些 DeFi 想法、预测市场、Futarchy、去中心化且有意义的人类可读域名、包含大量普通交易的巨型区块、专为闪电网络而优化的区块链等等……

这些想法或许具有很大价值,但是从来没有人 真正 尝试过它们,因为它们无法通过真正的比特币来实现或与之交互。这些想法只能退而求其次,要么依托于垃圾币,要么寻求 Liquid 或 RSK 之类的托管方案。或许正是因为这个原因,它们才没能形成网络效应。

解决冲突和内部分歧

有的人希望在 UTXO 模式下实现完全隐私型交易,有的人却想要将自己的名字和声誉与「账户」绑定;有的人想要简单的多签方案,有的人偏好需要读取大堆变量的复杂代码;有的人想要每隔 10 分钟将交易成批上链,有的人想要将资金锁定在通道内实现链下即时交易;有的人想要使用代币,有的人只想持有代币;有的人想要使用区块链技术来解决世界上的所有问题,有的人只想使用区块链技术来重塑货币。

基于 Drivechain 的侧链解决方案可以消除人们之间的分歧,皆大欢喜。与此同时,哪怕再不情愿,人们也会使用同一种货币,为彼此的生态作出贡献。另外,人们还可以自由转换阵营,减少认知失调。

解决扩容问题

很多链(如上文提到的那些)都为了提高比特币的吞吐量而使出浑身解数。我们有可能会看到特殊的闪电网络链,哪怕是由巨型区块组成的普通链或 mimblewimble 链等等也可以做到这点。甚至还有一些笨办法,例如,运行 200 条类似比特币且不具备其它功能的独立区块链(你可以称之为 「分片」),这样就可以将比特币的当前吞吐量提高 200 倍。

解决区块链的安全预算问题

安全预算计算起来很简单:先思考一下如果没有区块补贴,你认为每个区块的合理安全预算应该是多少,然后将它除以一个区块可以容纳的字节数量,就可以算出每个字节的价格是多少 satoshi 。如果预估合理,每笔比特币交易都需要用户支付大量 satoshi,如此高昂的成本不仅使其不适合日常交易,也让开启和关闭闪电通道变得不切实际。

因此,如果没有像 Drivechain 这样的解决方案,你就只剩下一个选择:让 Liquid 和 RSK 之类的可信服务提供商或托管型闪电网络钱包代表你使用比特币。但是,有了 Drivechain,侧链上就有可能发生数千笔交易,并全部打包进一个侧链区块中,然后支付很高的费用(通过盲合并挖矿)发布到主链上。比特币的安全性就有了保障。

维持比特币的去中心化

一旦我们将普通交易都交由侧链处理,主链就只是侧链资产进出的 「枢纽」,然后我们就可以将主链的区块大小上限降到很小的值(比如 100 KB),大幅降低全节点的运行难度。

矿工可以偷窃吗?

可以。如果一群矿工串谋起来掌握绝大多数算力并保持 6 个月,就可以发布一个 WT^ 取走侧链上的所有钱,然后转到自己账上。

矿工会偷窃吗?

不会,因为不值得。

虽然乍看之下矿工可以通过偷窃白赚一大笔钱,但是会带来很多成本:

  1. 停止盲合并挖矿所造成的收益损失 —— 偷窃会毁掉侧链,因此矿工有望在未来几年赚取的所有交易费都没了。

  2. 与社区正义为敌的成本 —— 一旦参与偷窃,矿工将遭到社区的强烈抵制,这是不容忽视的。如果作恶的矿工是有公开身份的实体,就有可能遭受人身伤害、死亡威胁或是国家司法系统的制裁。

  3. 串谋成本 —— 假设矿工就是普通业务员,他们只想做自己的工作并获得报酬,但是偷窃需要与其他矿工协作,这种不道德行为存在很多隐患,而且在长达数个月的时间里很容易闹掰。

  4. 矿工流失成本 —— 我们口中的 「矿工」 实际上指的是矿池运营者,因此他们在开始偷窃之前必须考虑矿工迁移到别的矿池的风险。

  5. 比特币价格下跌的成本 —— 一旦偷窃成功,就意味着 Drivechain 是不安全的,比特币的可用性随之下降,矿工信誉也会受损,这有可能导致比特币价格下跌,影响矿工的业务和收益。

  6. 社区正义为敌带来的另一个影响是,如果矿工为了一己私利试图偷窃,即使最后失败了,也会加深社区对矿工在比特币生态中权力过大的担忧,最终可能会导致社区同意通过硬分叉来改变挖矿算法,或在挖矿过程中引入更多实体(例如,开发新的 ASIC 矿机),这有可能降低当前矿工的利润。

另外需要考虑的一点是,人们想当然地以为新创建的侧链或使用率较低的侧链更容易被黑,因为盲合并挖矿收益(见 「1」)比较低 —— 但事实上,使用率较低的侧链本身就没有多少钱可以偷,而且除了 「1」 之外的其它成本是避免不了的,就更不值得偷了。

只有当矿工偷窃好的侧链时,上述考虑才是有意义的。如果一条侧链本身就存在问题,如欺骗用户、没人使用或漏洞百出,矿工大可把它毁掉,人们只会拍手称快。

如果矿工偷窃,我们该怎么办?

Paul Sztorc 曾建议过,可以通过用户激活软分叉来防止矿工偷窃,即,大多数比特币用户和节点通过此处提议的规则来将错误的 WT^ 作废。这样一来,其它节点不会接受包含该 WT^ 的区块,打包该区块的矿工就会被分叉出去。

这个建议让人们误以为 Drivechain 这个侧链解决方案是 依靠用户激活软分叉来保障安全性的,然而事实并非如此。虽然软分叉是可行的,但是 Drivechain 绝对不能、也不会依赖于软分叉,因为协调成本太高,而且不会有人希望这种事发生。

如果矿工无视(上文提到的)这些反激励,执意要从一条 好的侧链 上偷窃。这就说明 Drivechain 实验失败了,而且很有可能意味着比特币实验也失败了,因为这证明了矿工能够长期无视经济和社会压力协同作恶,而且很有可能是冲着比特币来的,背后有国家或其它力量支持。因此,主链上的比特币交易也不再安全了。

为什么选择 Drivechain,而非其它成熟的免信任型侧链技术?

因为这样的东西并不存在。

如果你听到有人说 「用侧链就好」、「在侧链中执行这个操作」 之类的话,请注意他们说的不是 「联盟型」 侧链(即,资金由一组实体共同保管)就是 Drivechain,要么就是异想天开了,觉得有别的办法可以运行侧链。

不,我指的是免信任的双向锚定,由比特币协议验证提款是否正确!

这是不可能的,除非比特币验证侧链上的所有交易,这就等于大幅提高区块大小上限以及扩展比特币的规则,实在不是个好办法。

Blockstream 侧链白皮书怎么样?

不错,这也是一种办法。从概念上来说,Drivechain 算力托管不仅更加简单,而且激励性更强、链上垃圾更少、安全性更高。

算力托管难道不是一种复杂的软分叉吗?

是的,但是它比 SegWit 容易得多。不像 SegWit,Drivechain 算力托管不会强迫用户接受任何事,也就是说,它不会强制提高区块大小上限。

为什么我们预期矿工会积极参与投票机制?

因为这样符合矿工自身的利益,而且成本很低。如今,有超过半数矿工在挖 RSK。不同于盲合并挖矿,这是一个非常复杂的过程,需要矿工运行 RSK 全节点。对于 Drivechain 侧链来说,一个 SPV 节点就够了,或者直接从区块浏览器 API 获取数据,后者要简单得多。

如果读完这篇文章后我还是不喜欢 Drivechain 怎么办?

这就是重点!你不需要喜欢 Drivechain 或使用它,只要你接受别人使用它就行。算力托管地址完全不会影响到你,验证成本极低,而且其他人迁移到侧链上还会让主链上的你享受更多空间。另外就是上文 「内部分歧」 一节中提到的观点。

百款NFT链游免费玩 数字货币支付图解教程 区块链游戏获利技巧