RSK是最有趣的智能合約開發平臺之一,因為它結合了比特幣的網絡安全與Solidity語言易于使用的特性。為了給系統提供動力,Rootstock使用雙挖方式。想知道雙挖是怎么回事嗎?讓我們開始吧!
工作量證明(Proof-of-Work)的簡要概述
在進一步討論之前,讓我們快速地總結一下工作量證明(POW)。
· 礦工通過解決密碼學難題來“挖”區塊并將其添加到鏈上。
· 這個過程需要大量的能源消耗和計算能力。這些加密問題的設計方式使它變得難以解答,并對系統造成負荷。
· 當一個礦工解決了難題時,可以向網絡提交區塊以供驗證。
在比特幣的生態系統中挖礦是一個艱難的過程。這就是為什么礦工將他們的資源和算力集中起來以創建“礦池”。 礦池遵循客戶端-服務器架構,其中礦工(客戶端)連接到礦池服務器(服務端)。礦池服務器運行礦池服務器軟件。常見的軟件有CKpool、BTCpool和Eloipool。
如果您想更深入地了解POW,請參閱本指南(https://blockgeeks.com/guides/blockchain-consensus/)。接下來,讓我們更深入地討論雙挖。
什么是雙挖?
雙挖(https://dwz.cn/xQtXvIjL)是一種允許使用相同算法的不同加密貨幣同時挖礦的機制。在這種情況下,由于比特幣和RSK都基于SHA-256算法,它們可以通過雙挖的方式聯合挖礦。雙挖的兩個最大優勢是:
· 大大降低了礦工的投資成本,因為他們不需要購買新的挖礦設備。
· 具有較低算力的加密貨幣可以通過與具有較高算力的加密貨幣錨定來獲得足夠的算力。
· 礦工也可以通過維護雙挖鏈獲得額外獎勵。
Namecoin是第一種和比特幣雙挖的加密貨幣。讓我們來看看雙挖的總體工作流程:
· 雙挖鏈的區塊ID嵌入在主鏈的區塊中。該區塊ID是二級鏈中區塊的加密哈希。
· 該雙挖區塊的哈希值以雙挖的“標簽”為前綴。該標簽可以是一些簡短的描述性文本或魔術字節(magic bytes)。
· 為避免混淆,主鏈中的區塊只能與第二鏈中不超過一個區塊相關聯。
· 為了確保雙挖的整體安全性,必須保證:在主鏈上挖出一個可與副鏈中的兩個區塊關聯的主塊的難度,要難于在主鏈上挖出兩個分別只關聯一個副鏈區塊的主塊的難度。
在RSK-比特幣的例子里,RSK的挖礦難度相當于70-bit,而比特幣難度相當于74 bits。
比特幣礦池通常在向礦工提供的每個采礦作業中都引用RSK的區塊。每次礦工找到解決方案時,都會將其與比特幣和RSK的挖礦難度進行比較。此時可能出現三種情況:
· 礦工計算出的解決方案滿足比特幣網絡難度。區塊被封裝并發送到網絡。比特幣網絡還將傳播RSK的雙挖參數。因為RSK的難度比比特幣低,所以這個解決方案也適用于封裝RSK。
· 此解決方案滿足RSK,但不滿足比特幣。解決方案將提交給RSK網絡,而不是比特幣網絡。
· 解決方案不滿足任何難度要求。
無論如何,最終提交給RSK的解決方案允許節點構建SPV證明。如果證明是有效的,那么它將成為提交給網絡的區塊的一部分。
深入研究雙挖
比特幣區塊頭類似于雙挖中的POW代理。RSK區塊鏈解釋了比特幣區塊頭的工作量證明。通過在比特幣區塊中搜索標簽以確定RSK鏈上的哪一個區塊應該與之相關聯。同時我們需要記住,RSK區塊鏈不需要一個完整的比特幣區塊來驗證區塊頭的POW,并將其與相應的RSK區塊頭部相關聯。一個簡易SPV證明就足以建立這種關系。我們將會繼續探討一點SPV證明。在此之前,讓我們對RSK標簽做進一步的理解。
RSK標簽的當前格式是:
RSKBLOCK:RskBlockHeaderHash
其中:
· “RSKBLOCK:” 是由52 53 4b 42 4c 4f 43 4b 3a字節組成的ASCII字符串。
· RskBlockHeaderHash 是不含雙挖區域的二進制格式的RSK區塊頭的Keccak哈希運算結果摘要,雙挖區域將在PoW解決后被填充。
雖然不是強制性的,但RSK標記應該包含在輸出腳本的OP_RETURN OP_PUSHDATA1操作碼之后。這有助于防止向比特幣UTXO發送垃圾數據。
RskBlockHeaderHash 由標準RSK節點(rskj daemon)創建。礦池服務器插件輪詢rskj daemon,并維護提供給礦池服務器的最新RskBlockHeaderHash值。
除上述規定之外,以下附加限制也可能適用:
· RskBlockHeaderHash之后直到coinbase最新交易之間的字節數必須小于或等于128字節。
· 二進制字符串“ RSKBLOCK:”(52 53 4b 42 4c 4f 43 4b 3a)不能包含在結尾的原始字節中。
· 如果RSK標記位于非最后一個輸出腳本中,那么它有可能出現在下一個輸出的字節中。這就是為什么強烈建議使用最后一個輸出腳本用于RSK標記的原因。
· 如果RSK標記位于coinbase區域中,那么“RSKBLOCK:”就有可能出現在Coinbase區域中。
什么是SPV證明?
如上所述,二級RSK區塊鏈與一級比特幣區塊鏈之間的關聯可以通過SPV證明來建立。SPV證明主要由Merkle樹成員證明構成。
藍色方框表示SPV證明中包含的信息,并沿RSK塊傳輸。由于尾隨字節的限制,RSK 全節點將創建SPV證明的壓縮版本,包括:
· 比特幣區塊頭(80字節)。
· 一個Coinbase交易的Merkle分支(約320個字節)。
· 消耗Coinbase交易頭的SHA-256中間狀態(32字節)。
· 一個由Coinbase交易記錄和RSK標簽組成的64字節對齊的數據塊(最大169字節)。
· 目前,SPV雙挖證明的最大大小為780字節。
礦池服務器軟件可以向rskj daemon發送完整的區塊或SPV證明。如果rskj接收到一個區塊,它將解析它并提取必要的字段來構建SPV證明。
雙挖難度
在繼續之前,我們需要弄懂難度的含義以及為什么首先引入此概念。你可能知道,比特幣的上限是2100萬枚。隨著越來越多的礦工參與挖礦,需要有一個機制來防止礦工很快挖完所有的比特幣。
為了防止比特幣的供應失控,并使其成為一種更可持續的模式,中本聰(Satoshi Nakamoto)引入了難度機制。隨著挖掘出越來越多的區塊,解決密碼學問題的難度呈指數級增長。基本上,挖掘出的比特幣越多,挖掘過程就越困難。
考慮到RSK鏈的難度遠低于比特幣。在系統內部,難度被轉換成“目標”,與難度成反比。目標是一個256位無符號整數。
在同一天,合并挖掘出的區塊鏈是一個近似的目標。而RSK有更高的目標,因為其出塊頻率高達比特幣的20倍以上。
這就是為什么解決RSK POW難題的區塊頭可能無法被比特幣網絡接受的原因,因為它可能無法滿足其難度。因此,這里要問的問題是:如果一個礦池總是在尋找比特幣區塊,它怎么才能探測到一個RSK區塊呢?現有事實已經證明,礦工們一直在尋求以較低難度解決區塊的方法。這些中間的、低難度的區塊稱為“配額(Shares)”,它們是礦池服務器在記帳時需要的。礦池中的許多礦工將在比特幣的真實解答之間積極地創建更多的配額,從而為礦工的貢獻提供更高的顆粒度。
以下是關于配額需要注意的事情:
· 配額會非常頻繁地傳輸到礦池服務器。因此,服務器可以根據相關礦工的算力貢獻,在他們之間分配未來的收入。
· 取決于系統的整體算力,比特幣挖礦的難度有時會下降。這就是為什么要在系統內傳遞配額,因為它有可能是解決當前比特幣POW運算的辦法。
· 如果配額的哈希摘要低于比特幣當前的目標,那么它會被轉發到bitcoind daemon,后者會在網絡上傳播它。
· 不同的次級區塊鏈可能有不同的難度。這就是為什么一個能夠進行雙挖的礦池服務器必須將配額的目標與它所支持的次級區塊鏈的所有目標進行比較的原因。因此,如果配額滿足RSK的目標,那么相應的區塊就被認為對RSK網絡是有效的。
RSK雙挖的安全性
在RSK雙挖的機制中,一個理性的挖礦者只需要進行2^69次運算(RSK當前的難度)。一個惡意的攻擊者需要在30秒內計算多達2^80次哈希運算才能對系統造成破壞。為了進行這種攻擊,攻擊者必須投入比礦工多2000倍的硬件。投入總額約為5萬億美元。
然而,這里還有一件事需要考慮。攻擊者也可以只為相同的RSK區塊高度生成一個或多個共享其POW的區塊。如果是這樣的話,也需要浪費5萬億美元的成本才能實現。
(譯者注:所以RSK網絡現在已經非常安全了。)
SHA256算法的假設弱點
RSK使用一種非標準的加密手段來壓縮交易生成。RSK只傳輸尾部,而不是通過對Merkle-Damgard構造的中間態進行哈希來傳輸整個交易。 然而,這個手段假設SHA256算法完全抵抗“自由啟動碰撞(freestart collision)”。根據RSK的設置,SHA256至少需要和暴力破解80比特的難度一樣安全。
在SHA256中目前沒有發現自由啟動碰撞,最接近的結果也只是在SHA256的簡化版中發現半自由啟動碰撞(64輪中的第38輪,代價是2^65次運算)。
到目前為止,該算法被認為是安全的。然而,如果發現這樣的攻擊,RSK可以通過網絡升級來應對。在這種情況下,RSK將不使用加密壓縮技術。當然,這將導致區塊大小的小幅增加。
注意:如果SHA256遭遇了自由啟動碰撞攻擊,它將完全失效。對于比特幣來說,這也是一個非常大的問題。
另外,RSK的1.0.0版本提供了80位的安全性,以防止可能的標簽沖突。80位碰撞攻擊在理論上是不經濟和無法計算的。
· POV計算: 如此大規模的攻擊將需要天量的內存。而且,碰撞攻擊的CPU成本比解決RSK PoW難題的成本高出2000多倍(69 vs 80比特)。
· POV理論:RSK的DECOR+共識認為碰撞的區塊可共享區塊獎勵,因此,如果過去的區塊獎勵大約等于新區塊的獎勵,挖出過去區塊的新替代區塊將變得無利可圖。這實際上意味著攻擊者將主要與他們自己競爭。
· POV經濟:善意的雙挖礦工可以賺取比特幣交易手續費,因此雙挖由比特幣補貼。 另一方面,攻擊者將必須支付碰撞攻擊的全部費用。這意味著對POW鏈接的任何攻擊都是沒有成本效益的。
RSK團隊表示:“即使考慮到計算效率的提升,我們認為標簽在未來20年仍然是安全的。然而,如果計算趨勢發生根本變化,則未來的網絡升級可以很容易地將哈希的大小擴展到完整的32字節。”
總結
RSK是比特幣雙挖中最賺錢的選擇。RSK團隊已經為CoiniumServ、CKpool、BTCpool和Eloipool等礦池開發了幾個完全可用的插件。其他礦池也開發了他們自己的插件。RSK團隊更推薦CKpool,因為它做了適當的優化。如果您是一個新上線的礦池,只需遵循RSK雙挖的說明進行操作即可。
責任編輯;zl
評論
查看更多