美文网首页比特币源码学习笔记
比特币源码阅读(工作量证明-检测)

比特币源码阅读(工作量证明-检测)

作者: 坠叶飘香 | 来源:发表于2018-08-06 10:39 被阅读0次
    收到新区块后,需要检测区块的工作量证明是否真的完成了,检测代码如下:

    代码文件:src/pow.cpp

    /**
    *
    **/
    bool CheckProofOfWork(uint256 hash, unsigned int nBits, const Consensus::Params& params)
    {
        bool fNegative;
        bool fOverflow;
        arith_uint256 bnTarget;
    
        bnTarget.SetCompact(nBits, &fNegative, &fOverflow);
    
        //negative:负数
        //为负数;为0;溢出;大于最大限制
        // Check range
        if (fNegative || bnTarget == 0 || fOverflow || bnTarget > UintToArith256(params.powLimit)) //难度值是否合理
            return false;
    
        // Check proof of work matches claimed amount
        if (UintToArith256(hash) > bnTarget) //区块hash大于难度值
            return false;
    
        return true;
    }
    

    相关文章

      网友评论

        本文标题:比特币源码阅读(工作量证明-检测)

        本文链接:https://www.haomeiwen.com/subject/tkewvftx.html