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