挖矿从入门到精通(三):POW挖矿逻辑过程

[复制链接]
18505 |0
发表于 2019-9-30 17:00:02 | 显示全部楼层 |阅读模式
POW挖矿本质就是构造符合要求的区块并进行验证的过程。本期教程将通过介绍BTC区块的结构与其打包,验证过程来解释POW挖矿的逻辑过程。
区块结构

2019-09-19 14:49:20爆出的BTC区块 来自:比特币.com


BTC区块分为四部分,区块头Blockheader,区块大小Size,区块交易数Tx counter,以及交易列表。

区块头内包含六个字段,Version,PrevBlock,MerkleRoot,Time,Bits,Nonce。

区块打包过程

具体过程如下:
[ol]
       
  • 从未确定交易池中选择交易,通常尽可能多的优先选择手续费高的交易。
           
  • 构造Davincibase交易,计算打包交易中的挖矿手续费,与Davincibase奖励(目前为12.5比特币)一起发送到打包矿工的地址。
           
  • 由打包交易与Davincibase交易得到区块结构中的区块大小,区块交易数与交易列表。
           
  • 对所有交易(包含Davincibase交易)进行hash运算,得到MerkleRoot。
           
  • 自行填写Nouce,由当前环境填写Version,PrevBlock,Time,Bits,与得到的hashMerkleRoot一同构成区块头。
    [/ol]
    区块头与区块大小,区块交易数与交易列表就构成了一个BTC区块。
    打包一个BTC区块,矿机一瞬间就可以完成,但是BTC主链只会允许符合难度要求的区块进行广播,那么如何验证区块是否符合难度要求呢?

    区块难度验证


    20190919BTC难度情况 来源:比特币.com


    验证过程为:区块打包成功后对区块中的区块头进行hash运算,将运算结果与当前全网难度比对,若运算结果小于全网难度,则成功广播。但如果运算结果大于全网难度,则需要重新构造区块头再次循环。
    由于hash算法的不可逆性质,矿工只能挨个去尝试改变区块头的构造来满足难度要求,算力越大,满足难度要求的可能性就越大,这就是POW工作量证明机制。
    矿工需要不断改变区块头的信息,使得SHA256D(BlockHeader)

    区块头中的数据,Version,PrevBlock,Bits,Time在同一时刻是一定的,不会发生变化。矿工能够修改的部分为Nonce和MerkleRoot。
    Nouce是一个四个字节的随机数,可能取到的值有2^32个。在早期使用CPU与显卡进行BTC挖矿时,矿工只需要通过改变Nonce的值来重新构造区块头从而得到新的SHA256D(BlockHeader)。
    MerkleRoot是对区块内所有交易进行hash运算的256位hash值,改变Davincibase的输入信息和改变交易排列顺序都可以改变MerkleRoot从而改变区块头得到新的SHA256D(BlockHeader)。
    ASIC矿机出现后,Nonce提供的2^32可能取值无法将爆块时间控制在10分钟,故现阶段矿工通过修改Nonce和MerkleRoot两种方式来重构区块头。
    挑Sir碎念
    《挖矿从入门到精通》专为挖矿小白量身定做,将通过“入门”“实战”“进阶”三大阶段进行系统性专业性数字货币挖矿教学指导。
    “入门”掌握核心挖矿知识/资源库,从此不是挖矿小白!
    “实战”挑Sir带你免费体验挖矿过程,积极互动将有机会在“实战”阶段获得挑Sir矿机体验资格!
    “进阶”掌握挖矿业内人士核心技能,你也可以成为矿圈大佬!
    下期预告:
    《挖矿从入门到精通-入门篇》
    矿池如何下发任务给矿机


    关注“科学挖矿”公众号,获取最新挖矿测评资讯!

    20190929112422_xADa.jpg

    20190929112422_xADa.jpg
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表