驱动链允许侧链节点运营商向矿工支付挖矿费用 - 甚至更多! Plato区块链数据智能。垂直搜索。人工智能。

驱动链允许侧链节点运营商向矿工支付报酬——还有更多!

这是由比特币领域自学成才的教育家和面向技术的比特币播客主持人 Shinobi 撰写的一篇观点社论。

这次我将分解并讨论传动链的工作原理; 它们最初是在 2015 年提出的。在迄今为止讨论的所有提案中,传动链是最古老、最充实的具体实施细节和设计,记录在 BIP 300301. 这个概念的创造者 Paul Sztorc 有几个主要的设计目标,虽然这并不全面,但这里有一些:

  • 隔离每个侧链,这样任何故障或问题只会影响使用它的人。
  • 允许侧链旋转,而无需为每个侧链创建新的分叉。
  • 通过双向挂钩启用比特币进出侧链的传输。
  • 允许在设计中进行免费实验,他希望这将淘汰对山寨币的需求。

整个设计有两个主要方面,这就是为什么有两个独立的 BIP。 第一个是挂钩机制 (BIP300),它使双向挂钩能够发挥作用。 Sztorc 设计了一种称为哈希率托管的东西,用最基本的术语来说,它允许矿工作为一个无定形的群体共同保管所有侧链中的代币。 第二种是“盲目”的合并挖矿方案,其目标是让比特币矿工成为共识级别的区块生产者,而无需验证侧链。 这两个部分共同呈现了一种双向挂钩机制,以及一种让比特币矿工参与挖掘侧链同时试图减轻其带来的中心化风险的方式。

BIP300 规定了新侧链的提议、新侧链的激活、捆绑提款的提议、此类提款的批准、实际提款交易的验证逻辑和存款交易的验证的逻辑。

在驱动链提案下激活新的侧链与通过矿工信号激活软分叉的过程非常相似。 当然,主要区别在于,它实际上并不是软分叉——激活驱动链共识规则的单个分叉允许矿工在任何时候发出信号以激活新的侧链 驱动链共识规则。 为了提议激活一个新的侧链,矿工必须在他们的 coinbase 输出中放置一个 OP_RETURN 数据,其中包括该侧链的唯一标识符、用于存款操作的公钥、版本数据、人类可读的描述和软件客户端的哈希值以及它的 GitHub 历史(这里没有共识强制执行,只是供人类参考的数据)。

当矿工提议激活一条新的侧链并在其币库中包含所有必要的数据时,从主链共识的角度来看,它就成为了一种关于是否创建这条新侧链的“矿工信号”时期。 矿工可以使用特殊格式将提案包含在他们的 coinbase 输出中,而其他矿工可以按照第二种格式创建另一个输出以发出激活信号。 一个新的侧链提案需要在困难时期有 90% 的块发出激活信号,以便确认新的侧链创建。 这创建了 peg 机制来启用侧链,但侧链和主链之间的交互比这更微妙。

此时,任何人都可以将硬币与侧链挂钩。 要与侧链挂钩,用户只需使用自己的输入和与侧链余额相对应的 UTXO 创建两个输入交易,并使用单个输出将所有内容分配给侧链。 这保证了侧链只有一个包含所有锁定在其中的资金的 UTXO。 提款由矿工投票处理。 主链不知道谁在侧链上拥有什么,主链会认为任何在投票机制内获得矿工批准的提款都是有效的。 正因为如此,提款过程有很长的延迟。 从侧链退出的过程有两个阶段:退出提案(捆绑),然后是退出投票阶段。 矿工必须在他们的 coinbase 交易中创建一个 OP_RETURN 输出,其中包含提议的提款交易的哈希值,以提议提款。 然而,这个散列与 sighash 类似,标记只提交事务的一部分而不是整个事务。 它不会提交代表锁定在驱动链中的资金的输入 UTXO 或将未提取的所有内容返回到特殊侧链 UTXO 的输出。 这是因为在驱动链中的任何存款都会创建一个新的 UTXO,因此当人们去验证提款交易的承诺时,它就会失效。

从这里开始,矿工对退出提案的投票期开始。 在提出捆绑包后,矿工可以投票决定是否批准它们。 开采的每个区块都允许该矿工增加一个批准计数器,向上或向下增加一或二以放弃做任何事情。 除此之外还有一些特定的限制,因为单个侧链可能有多个捆绑包——如果矿工选择为侧链的提款捆绑包投票“是”(将计数器加一),他们 必须 为与该特定侧链关联的每个其他捆绑包投“否”(将计数器降低一)。

这是为了保证不存在“双重提款”,即有人在多个捆绑包中输出,这将使他们在主链上支付的比特币多于欠他们的比特币。

另一方面,矿工也可以对每个提议的捆绑包投反对票。 这应该为每个人提供一种警报,即验证这些提款的矿工(确保它们是被提款的侧链上合法拥有的硬币)注意到发生了一些无效的事情。 请记住,这种设计的一个关键点是矿工不必验证侧链上的任何内容,因此除非他们选择这样做,否则许多矿工可能会支持他们未验证的捆绑包。 此警报功能旨在提醒他们应该验证捆绑包以确保不会发生欺诈性提款。

一旦捆绑包达到所需的阈值(13,150 个区块,或大约 90 天),实际处理提款的交易就会生效并可以得到确认。 但是,如果矿工批准从侧链窃取资金的欺诈性提款,人们会怎么做? Sztorc 的提议是进行用户激活的软分叉 (UASF),以使无效的挂钩交易无效。 这给主链的共识带来了巨大的风险。 2017 年的 UASF 是一个高风险举措,几乎没有成功,比特币比现在小得多。 比特币越大,协调此类行动就越困难。

如果你从 关于空间链的文章,该设计基于盲合并挖掘(BMM)。 Ruben Somsen 的 BMM 设计实际上是第二个变体,第一个是 Sztorc 在 BIP301 中的设计。 驱动链中的 BMM 规范由两条消息组成:请求消息和接受消息。 两者分别通过主链上的特殊交易类型和矿工 coinbase 交易中的特殊输出进行协调。

请求交易由创建侧链块的人构建。 BMM 的全部意义在于,这个人可以是不挖矿的人,所以请求交易允许他们向矿工付款以确认他们提议的侧链区块。 侧链区块提案构造了一个交易,其中包括侧链区块的哈希值、创建时分配给侧链的 ID 以及前一个主链区块头的最后四个字节。 有三个额外的共识规则适用于这些类型的交易。 首先,请求交易是无效的,除非该区块的 coinbase 交易中也有匹配的接受输出。 这是为了保证矿工在不接受和挖掘侧链区块的情况下不能从请求中收取费用。 其次,对于每条侧链,主链区块中只允许包含一个请求交易。 这是为了确保每个主链块实际上只能从任何侧链中开采一个块。 最后,前一个主链块的最后四个字节必须匹配。 这确保了一个请求仅在下一个区块中被挖掘有效,并且此类交易不能在以后被挖掘并在其他人的块被挖掘后从侧链块提议者那里窃取资金。

接受输出非常简单:消息头数据和侧链块的哈希。 如果矿工自己运行驱动链节点,他们可以简单地忽略请求交易,并始终在他们的硬币库中包含他们自己的接受输出来挖掘他们自己的侧链块。 总之,这两个方面允许矿工自己操作侧链节点,或者由另一个非矿工来操作并支付矿工开采他们的区块。 这个想法是,如果矿工自己不运行侧链并消耗额外的验证成本,那么其他人可以为他们做这件事。 如果试图在侧链上赚取费用的非矿工存在竞争,他们可能会继续竞标他们愿意在请求交易中支付给矿工的费用,直到它代表他们赚取的大部分费用,而非矿工只保留一小部分利润,其余的支付给矿工。

这就是传动链功能背后的机制。 接下来是联合侧链,然后是每个设计可能具有的所有负面和缺点的细分。

这是 Shinobi 的客座帖子。 所表达的观点完全是他们自己的观点,不一定反映 BTC Inc 或比特币杂志的观点。

时间戳记:

更多来自 比特币杂志