以 BTC 二层 Rootstock 为例,解读铭文应用新场景合并挖矿
作者:Gametaverse
来源:PANews
众所周知,铭文技术目前主要是用来发行资产,但是最近我在研究BTC生态的时候,发现合并挖矿其实使用的也是铭文,本文将以BTC二层的 Rootstock (@rootstock_io)为例来探讨合并挖矿的工作原理。
RSK的合并挖矿原理
Rootstock 也是一条兼容EVM的侧链,基于SHA256 的 POW 共识,生态角色有三个,1) Miner,和BTC共用矿工来创建区块。2) Powpeg,负责和BTC链资产的双向锚定。3) Node Operator,运营全节点,广播交易,验证区块。因为和BTC共识一样,所以采用了合并挖矿。
在刚听到合并挖矿的时候,我的第一印象是,既然使用同样的挖矿算法,那么矿工(矿机)会比较挖矿收益,谁的收益高就挖谁,但仔细研究之后才发现这个想法是错的。合并挖矿的真实流程其实和制作铭文非常类似:如果说铭文NFT是把一个图片或者文字铭刻到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可以产生多个区块。
在合并挖矿中,是这样处理的:
1. RSK区块的产生:虽然RSK的区块平均每30秒就能产生一个,但并不是所有这些区块都直接与比特币区块“绑定”。RSK使用一种称为“装箱”(commitment)的机制,在比特币区块中记录RSK区块的信息。
2. 区块“装箱”:在比特币区块的coinbase交易中,矿工可以包含一个特殊的RSK区块信息(这通常被称为“装箱”或“提交”)。然而,由于比特币的区块时间远长于RSK,这个信息通常代表了多个RSK区块的状态。简而言之,一个比特币区块可能承载一个或多个RSK区块的信息,但这主要关乎于在特定时间点的最新RSK状态或区块的合并提交。
3. 解决时间差异:因此,虽然多个RSK区块可能在一个比特币区块时间内被产生,但合并挖矿过程主要是关于在比特币区块中记录RSK网络的最新状态。每当比特币区块被挖掘出来并且包含RSK的信息时,这个信息会反映在RSK网络上,允许RSK区块得到确认。
4. RSK网络的确认和安全性:每当一个比特币区块被成功挖出并且包含对RSK区块的引用时,相应的RSK区块就会被网络确认。这不仅为RSK区块提供了额外的安全性,还允许RSK利用比特币网络的强大挖矿能力。
矿工与全节点的分离
在比特币网络中,矿工确实通常也运行全节点。这是因为为了有效地挖矿,他们需要访问完整的区块链数据来验证交易和防止无效的区块产生。因此,在比特币生态系统中,矿工和全节点运营商的角色经常重叠,尽管理论上,运行一个全节点并不一定要参与挖矿。
在RSK网络中,情况稍有不同:
1. 矿工(Miners):
在RSK中,矿工同样对网络的安全性至关重要。RSK允许比特币矿工通过合并挖矿同时为RSK网络提供安全性,这意味着他们可以在挖掘比特币的同时挖掘RSK,而不需要额外的计算资源。这些矿工验证并打包RSK的交易,并通过工作量证明机制对RSK区块链进行维护。
2. 全节点运营商(Node Operators):
虽然RSK矿工在网络中扮演重要角色,但全节点运营商也非常重要。全节点运营商在RSK网络中运行完整节点,这意味着他们保持网络的一个完整的、更新的区块链副本。他们帮助网络达成共识,传播交易和区块。不过,与比特币不同,在RSK中运行全节点并不直接等同于挖矿。你可以运行一个全节点以支持网络,而不参与合并挖矿。
因此,虽然在RSK中矿工和全节点运营商可以是不同的参与者,但也有可能是相同的。区别在于,尽管所有矿工几乎必须运行全节点以参与挖矿过程,但并非所有运行RSK全节点的人都参与挖矿。这样分开主要是因为合并挖矿允许比特币矿工在不牺牲自己挖矿效率的情况下增加对RSK网络的安全性,而全节点运营商则是为了维护网络的健康和透明度而存在的。
最后,BTC合并挖矿的矿工会收到RBTC充当gas的奖励。Rootstock链治理代币是RIF,充当gas fee 的是1:1锚定的RBTC。这个双向锚定由 15个 Powpeg(数量会变动)管理,存款的时候:将比特币发送到 RSK 的存款多签地址,等待足够多的区块确认即可。在足够多的确认之后,侧链上的一个 Solidity 合约会发现这笔交易,并给侧链上一个你的公钥(你所存入的 UTXO 的公钥)所控制的账户增加余额。取款的流程也由一个智能合约来控制,它会跟联盟沟通,联盟会签名由合约告知的主链取款交易。