您现在的位置是:首页 > 比特币 > 比特币指南比特币指南

比特币PoW挖矿及共识流程

2019-06-09来源:作者:有一亿栏目:比特币指南

简介比特币挖矿的过程:构建一个空区块,称为候选区块;从内存池中打包交易至候选区块;构造区块头,填写区块头的下述字段;开始挖矿。挖矿就是不断重复计算区块头的哈希值,修改nonce参数,直到找到一个满足条件的nonce值,也就是该nonce值下,hash函数运算出来的hash值 < Bits。

比特币PoW工作量证明共识机制流程图如下:

比特币PoW工作量证明共识机制流程图
比特币挖矿的过程
  1. 构建一个空区块,称为候选区块
  2. 从内存池中打包交易至候选区块
  3. 构造区块头,填写区块头的下述字段
    1)填写版本号version字段
    2)填写父区块哈希prevhash字段
    3)用merkle树汇总全部的交易,将merkle root的哈希值填写至merkle root字段
    4)填写时间戳timestamp字段
    5)填写目标值Bits字段
  4. 开始挖矿。挖矿就是不断重复计算区块头的哈希值,修改nonce参数,直到找到一个满足条件的nonce值,也就是该nonce值下,hash函数运算出来的hash值 < Bits。当挖矿节点成功求出一个解后把解填入区块头的nonce字段。
  5. 这时一个新区块就成功挖出了,然后挖矿节点会做下面这些事:
    1) 按照标准清单检验新区块,检验通过后进行下面的 2)和 3)步骤
    2)立刻将这个新区块发给它的所有相邻节点,相邻节点收到这个新区块后进行验证,验证有效后会继续传播给所有相邻节点。
    3)将这个新区块连接到现有的区块链中,按照如下规则:
    根据新区块的prevhash字段在现有区块链中寻找这个父区块,
    (Ⅰ) 如果父区块是主区块链的“末梢”,则将新区块添加上去即可;
    (Ⅱ) 如果父区块所在的链是备用链,则节点将新区块添加到备用链,同时比较备用链与主链的工作量。如果备用链比主链积累了更多的工作量,节点将选择备用链作为其新的主链,而之前的主链则成为了备用链;
    (Ⅲ) 如果在现有的区块链中找不到它的父区块,那么这个区块被认为是“孤块”。孤块会被保存在孤块池中,直到它们的父区块被节点接收到。一旦收到了父区块并且将其连接到现有的区块链上,节点就会将孤块从孤块池中取出,并且连接到它的父区块,让它作为区块链的一部分。

Tags:比特币挖矿   共识机制

很赞哦! ()