众所周知,Markdown 技术目前主要是用来发行资产,但是最近我在研究 BTC 生态的时候,发现合并挖矿其实使用的也是 Markdown,本文将以 BTC 二层的 Rootstock (@rootstock_io) 为例来探讨合并挖矿的工作原理。
RSK 的合并挖矿原理#
Rootstock 也是一条兼容 EVM 的侧链,基于 SHA256 的 POW 共识,生态角色有三个,1) Miner,和 BTC 共用矿工来创建区块。2) Powpeg,负责和 BTC 链资产的双向锚定。3) Node Operator,运营全节点,广播交易,验证区块。因为和 BTC 共识一样,所以采用了合并挖矿。
在刚听到合并挖矿的时候,我的第一印象是,既然使用同样的挖矿算法,那么矿工(矿机)会比较挖矿收益,谁的收益高就挖谁,但仔细研究之后才发现这个想法是错的。合并挖矿的真实流程其实和制作 Markdown 非常类似:如果说 MarkdownNFT 是把一个图片或者文字铭刻到 BTC 链上空间的话,那么合并挖矿其实是把 RSK 这个区块链的区块头相关信息铭刻到 BTC 链上空间。
合并挖矿的工作流程如下:
-
准备阶段:
- 矿工创建比特币区块:首先,矿工准备一个新的比特币区块,包括交易、前一个区块的哈希等标准组件。
- 创建 RSK 区块模板:同时,矿工也会从 RSK 网络获取一个 RSK 区块模板。这个模板包含待处理的 RSK 交易和其他必要的区块信息。
-
组合区块:
- 矿工将 RSK 区块模板转化为一个小的数据片段,称为 “RSK 标签”(或称为合并挖矿标记)。然后,矿工将这个标签插入到比特币区块的 coinbase 交易中。coinbase 交易是每个区块中的第一笔交易,通常用于奖励矿工。
- 这样,比特币区块现在含有了关于 RSK 区块的信息,但这并不影响比特币区块的正常功能。
-
挖矿:
- 矿工开始像往常一样为比特币区块进行工作量证明(PoW)挖矿。因为比特币区块现在包含了 RSK 的信息,矿工实际上是同时为两个链进行挖矿。
-
验证和提交:
- 提交比特币区块:当矿工找到有效的工作量证明,成功挖掘出一个新的比特币区块后,他们会像往常一样将其提交给比特币网络。
- 提交 RSK 区块:矿工同样需要提取出 coinbase 交易中的 RSK 标签,并使用它来构建一个完整的 RSK 区块。然后,这个 RSK 区块被提交到 RSK 网络。
-
RSK 网络的验证:
- RSK 网络接收到新的区块后,首先检查它是否包含了有效的比特币区块的引用(通过 RSK 标签)。
- 然后,RSK 网络验证比特币区块的工作量证明。这是可能的,因为 RSK 网络可以检查比特币区块的哈希值是否满足比特币网络的难度要求。
- 如果一切有效,RSK 区块被接受并添加到 RSK 区块链上。这意味着在不增加额外计算的前提下,通过比特币的 PoW 挖矿过程同时保障了 RSK 网络的安全性。
从上面的讨论我们可以看到,合并挖矿和 Ordinal NFT 稍有不同的地方在于
-
合并挖矿铭刻的是 RSK 标签(包含有 RSK 区块的相关数据),而 Ordinal NFT 一般铭刻的是图片或者文字。
-
合并挖矿储存数据的地方在一个区块的 Coinbase 交易的脚本区,而 Ordinal NFT 储存数据的地方在 Segwit 脚本空间。
合并挖矿如何处理区块的异步性#
也许有人会产生一些疑问,既然是合并挖矿,BTC 链是 10 分钟一个块,RSK 是 30 秒一个快,那么假设在过去一分钟 RSK 出了两个 block,那这两个 block 要如何构建?毕竟 BTC miner 是 10 分钟才能构造一个 block。
这其实涉及到合并挖矿中不同链区块时间间隔差异的处理。RSK 的区块时间大约是 30 秒,而比特币的平均区块时间是大约 10 分钟。这确实意味着在比特币挖出一个区块的时间里,RSK 可以产生多个区块。
在合并挖矿中,是这样处理的:
-
RSK 区块的产生:虽然 RSK 的区块平均每 30 秒就能产生一个,但并不是所有这些区块都直接与比特币区块 “绑定”。RSK 使用一种称为 “装箱”(commitment)的机制,在比特币区块中记录 RSK 区块的信息。
-
区块 “装箱”:在比特币区块的 coinbase 交易中,矿工可以包含一个特殊的 RSK 区块信息(这通常被称为 “装箱” 或 “提交”)。然而,由于比特币的区块时间远长于 RSK,这个信息通常代表了多个 RSK 区块的状态。简而言之,一个比特币区块可能承载一个或多个 RSK 区块的信息,但这主要关乎于在特定时间点的最新 RSK 状态或区块的合并提交。
-
解决时间差异:因此,虽然多个 RSK 区块可能在一个比特币区块时间内被产生,但合并挖矿过程主要是关于在比特币区块中记录 RSK 网络的最新状态。每当比特币区块被挖掘出来并且包含 RSK 的信息时,这个信息会反映在 RSK 网络上,允许 RSK 区块得到确认。
-
RSK 网络的确认和安全性:每当一个比特币区块被成功挖出并且包含对 RSK 区块的引用时,相应的 RSK 区块就会被网络确认。这不仅为 RSK 区块提供了额外的安全性,还允许 RSK 利用比特币网络的强大挖矿能力。
矿工与全节点的分离#
在比特币网络中,矿工确实通常也运行全节点。这是因为为了有效地挖矿,他们需要访问完整的区块链数据来验证交易和防止无效的区块产生。因此,在比特币生态系统中,矿工和全节点运营商的角色经常重叠,尽管理论上,运行一个全节点并不一定要参与挖矿。
在 RSK 网络中,情况稍有不同:
- 矿工(Miners):
在 RSK 中,矿工同样对网络的安全性至关重要。RSK 允许比特币矿工通过合并挖矿同时为 RSK 网络提供安全性,这意味着他们可以在挖掘比特币的同时挖掘 RSK,而不需要额外的计算资源。这些矿工验证并打包 RSK 的交易,并通过工作量证明机制对 RSK 区块链进行维护。
- 全节点运营商(Node Operators):
虽然 RSK 矿工在网络中扮演重要角色,但全节点运营商也非常重要。全节点运营商在 RSK 网络中运行完整节点,这意味着他们保持网络的一个完整的、更新的区块链副本。他们帮助网络达成共识,传播交易和区块。不过,与比特币不同,在 RSK 中运行全节点并不直接等同于挖矿。你可以运行一个全节点以支持网络,而不参与合并挖矿。
因此,虽然在 RSK 中矿工和全节点运营商可以是不同的参与者,但也有可能是相同的。区别在于,尽管所有矿工几乎必须运行全节点以参与挖矿过程,但并非所有运行 RSK 全节点的人都参与挖矿。这样分开主要是因为合并挖矿允许比特币矿工在不牺牲自己挖矿效率的情况下增加对 RSK 网络的安全性,而全节点运营商则是为了维护网络的健康和透明度而存在的。
最后,BTC 合并挖矿的矿工会收到 RBTC 充当 gas 的奖励。Rootstock 链治理代币是 RIF,充当 gas fee 的是 1:1 锚定的 RBTC。这个双向锚定由 15 个 Powpeg(数量会变动)管理,存款的时候:将比特币发送到 RSK 的存款多签地址,等待足够多的区块确认即可。在足够多的确认之后,侧链上的一个 Solidity 合约会发现这笔交易,并给侧链上一个你的公钥(你所存入的 UTXO 的公钥)所控制的账户增加余额。取款的流程也由一个智能合约来控制,它会跟联盟沟通,联盟会签名由合约告知的主链取款交易。
本文由 @hicaptainz 原创
先赞后看,年入千万