比特幣合併挖礦的原理是什麼?
請問namecoin和dogecoin如何實現的合併挖礦,原理是什麼?雖然有兩篇英文How does merged mining work?Merged mining specification但是看不太懂,請教能看懂的講解下技術上如何實現?
利用Auxiliary Proof-of-Work (AuxPOW)實現Merge Mining。
以Namecoin的merge mining為例:
bitcoin作為父鏈(Parent blockchain), namecoin作為輔鏈(Auxiliary blockchain)。父鏈不需要知道輔鏈的存在;而輔鏈需要有協議來支持復用父鏈的POW結果(AuxPoW)。
目標:需要實現只計算 H = Hash256(bitcoin header)。 當H符合Bitcoin的難度要求時,那麼就挖出BTC,而符合Namecoin的難度要求時,那麼就挖出NMC。
原理:Bitcoin的block中,由於coinbase這一交易的腳本中可寫入任意自定義數據,那麼通過寫入規定格式的數據,Namecoin的鏈可以解析並認可父鏈計算出的Hash值。
實現方法:
1. 父鏈端的工作量較小,只需在bitcoin block的coinbase的scriptSig中插入如下格式的數據(44位元組):
uint32_t magic; // 0xfa, 0xbe, 0x6d, 0x6d
uint256 nmc_block_hash; // 當前namecoin的block hash
int32_t merkle_size; // aux work merkle tree的大小,只有一個輔鏈時設置為1。
int32_t merkle_nonce; // 只有一個輔鏈時設置為0
2. 輔鏈需要做很多額外的工作,在namecoin的block header後依次附加:
(1)父鏈的coinbase的交易數據;
(2)附加Hash256(btc_block_header);(3)包含有coinbase tx的父鏈的Merkle tree分支;(不需要全部的交易數據,只需構建merkle tree所需的必要位置的HASH值即可,最後需要附上一個標記來註明左右次序)
(4)當有多個輔鏈時的其他分支; (5)父鏈的block header; (6)Namecoin的交易數據。什麼是合併挖礦merged mining?合併挖礦需要另一種幣支持所謂的Auxiliary PoW, 這樣的幣的區塊鏈里實際是有兩種區塊的,一種是正常的PoW,另一種是AuxPow, 當你收到一個AuxPow的區塊時,校驗方式也是不同的.
以Namecoin為例, AuxPow的區塊包括:
1. Namecoin的區塊頭2. 修改過的Bitcoin的coinbase transaction3. 來自Bitcoin的區塊頭的Hash
4. Merkle branch5. 來自Bitcoin的區塊頭6. Namecoin的transaction2到5都是AuxPow區塊特有的. 普通的PoW區塊只需要計算1的Hash, 而這裡我們首先看3是否滿足當前的難度, 然後驗證這個AuxPow確實是合併挖礦得到的. 接下來我們首先先檢查2中插入coinbase的scriptSig中的字元串是否正確, 然後由2和4我們計算出合併挖礦時Bitcoin區塊的Merkle root, 和5中對應的欄位比較就可以知道2這個transaction確實在這個Bitcoin區塊中.
合併挖礦在Bitcoin這邊來看只是多了些coinbase略奇葩的區塊, 可以找一些合併挖礦的礦池挖到的區塊查看其中的coinbase transaction如 Bitcoin Transaction f64b6ca180e5897aa99f297090e5b25fb32f8fc305c0d870c60037db2be95b48其中包含merged mining的標識"mm" (0x6d 0x6d)推薦閱讀:
※CryptoKitties(以太坊雲養貓)攻略二
※GBI突破19000+,什麼還值得囤
※教程:我是如何在火幣OTC一天之內實現資產腰斬
※聊聊新手的選幣思路①——和時間做朋友,擁抱主流POW幣種
※【幣價興亡,韭菜有責】幣圈韭菜生存指南:看看你被割了幾茬?
TAG:虛擬貨幣 | 貨幣 | 網路經濟 | 比特幣Bitcoin | 價值投資 |