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

收到新区块后,需要检测区块的工作量证明是否真的完成了,检测代码如下:

代码文件: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;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 有一个好脾气,你才能遇见更好的自己,你才能到达有诗、有爱的远方。 2017年8月7日 星期一 晴 今天休班在家,吃...
    辣辣的吕先森阅读 1,285评论 0 1
  • 晨读分享的这本书――《搞定》(Getting Things Done)乍一看感觉像是《深度工作:如何有效使...
    娴哥_252c阅读 224评论 1 2
  • 在随身物品中,最重要的无非钱包了,出门可以什么不带,钱包必须要带,但是钱包是最难伺候的物品。 严格来说,...
    貌似猪头阅读 442评论 0 0
  • GCD为多核并行运算提出的解决方案,是一个多核编程的解决方法,GCD在工作时会自动利用更多的处理器核心以充分利用更...
    Spicy_Crayfish阅读 544评论 0 0
  • 1.单词3/3阅读1/5 2.数学*1 3.英语卷子 总结:昨天吐槽到太晚,早上起晚了,最后一遍:目标比感受更重要...
    你本大王阅读 112评论 2 0

友情链接更多精彩内容