众所周知,铭文技術目前主要是用來發行資產,但是最近我在研究 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 可以產生多個區塊。
在合併挖礦中,是這樣處理的:
-
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 原創
先贊後看,年入千萬