您的位置:网站首页 > 挖矿(POW/IDO/POS/减半) > 正 文 比特币

比特币合并挖矿的原理是什么?

【作者:网文】 来源:转载 日期:2014-9-30 10:37:36 人气: 标签:比特币 【打印】

namecoin和dogecoin如何实现的合并挖矿?
利用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的交易数据。

合并挖矿需要另一种币支持所谓的Auxiliary PoW, 这样的币的区块链里实际是有两种区块的,一种是正常的PoW,另一种是AuxPow, 当你收到一个AuxPow的区块时,校验方式也是不同的.

以Namecoin为例, AuxPow的区块包括:
1. Namecoin的区块头
2. 修改过的Bitcoin的coinbase transaction
3. 来自Bitcoin的区块头的Hash
4. Merkle branch
5. 来自Bitcoin的区块头
6. Namecoin的transaction

2到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)

本文节选自:http://www.zhihu.com/question/25401169

返回顶部】【关闭窗口 风险提示:本站分享转载的信息均来自互联网,且仅供阅读参考,不作为具体投资的依据,据此入市,风险自担。本站所有内容涉及到的“货币”字眼需谨慎研判,我们维护各国法币的合法地位,同时数字资产具有货币的某些属性,目前是不能替代任何国家的法定货币的,请谨慎理解投资并严格遵守各国法律法规!详见本站[免责声明]。】
【读完这篇文章后,可否发表您的感受?】
0
0
0
0
0
0
0
0
本文网址:
安全联盟站长平台 互联网举办平台 公共信息安全网监 中国网安 赛门铁克安全响应中心