日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Bitcoin 中的挖矿算法(6) 难度调整

發布時間:2025/3/21 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Bitcoin 中的挖矿算法(6) 难度调整 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 基本概念

難度調整方法:

difficulty_new = difficulty * ( 2016 ActualTimespan / 2016 targetTimespan )新的難度目標值 = 舊的難度目標值 * 生成最近2016個區塊所花費的實際時間 / 系統期望生成2016個區塊的時間

難度的調整是在每個完整節點中獨立自動發生的。每2016個區塊,所有節點都會按統一的公式自動調整難度,這個公式是由最新2016個區塊的花費時長與期望時長(期望時長為20160分鐘即兩周,是按每10分鐘一個區塊的產生速率計算出的總時長)比較得出的,根據實際時長與期望時長的比值,進行相應調整(或變難或變易)。也就是說,如果區塊產生的速率比10分鐘快則增加難度,比10分鐘慢則降低難度。

2. 難度調整周期

比特幣系統是以2016個區塊為一個周期自動進行難度調整的,2016是這樣算出來的:比特幣規定2個星期,即14天,進行一次難度調整,平均每10分鐘生成一個區塊,按此計算,即2016個區塊調整一次。看下params.DifficultyAdjustmentInterval()方法:

int64_t DifficultyAdjustmentInterval() const{ return nPowTargetTimespan / nPowTargetSpacing; } nPowTargetTimespan 即 系統期望生成2016個區塊的時間 。

chainparams.cpp里面的參數:

// two weeks, 20160min consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; consensus.nPowTargetSpacing = 10 * 60;//每10分鐘一個區塊 consensus.fPowAllowMinDifficultyBlocks = false; consensus.fPowNoRetargeting = false; consensus.nRuleChangeActivationThreshold = 1916; // 95% of 2016 consensus.nMinerConfirmationWindow = 2016;// nPowTargetTimespan / nPowTargetSpacing

3. 計算難度目標

nBits代表著工作量證明的難度目標值,這個值是由系統計算生成的
pblock->nBits = GetNextWorkRequired(pindexPrev, pblock, chainparams.GetConsensus());

unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHeader *pblock, const Consensus::Params& params) {assert(pindexLast != nullptr);unsigned int nProofOfWorkLimit = UintToArith256(params.powLimit).GetCompact();// Only change once per difficulty adjustment interval//如果新區塊不需要進行難度調整,即新區塊的高度不能被2016整除,則用父區塊的難度目標即可if ((pindexLast->nHeight+1) % params.DifficultyAdjustmentInterval() != 0){if (params.fPowAllowMinDifficultyBlocks){// Special difficulty rule for testnet:// If the new block's timestamp is more than 2* 10 minutes// then allow mining of a min-difficulty block.if (pblock->GetBlockTime() > pindexLast->GetBlockTime() + params.nPowTargetSpacing*2)return nProofOfWorkLimit;else{// Return the last non-special-min-difficulty-rules-blockconst CBlockIndex* pindex = pindexLast;while (pindex->pprev && pindex->nHeight % params.DifficultyAdjustmentInterval() != 0 &&pindex->nBits == nProofOfWorkLimit)pindex = pindex->pprev;return pindex->nBits;}}return pindexLast->nBits;}// Go back by what we want to be 14 days worth of blocks//到了這里說明新區塊恰好需要進行難度調整,//即新區塊的高度能被2016整除,則進行一次難度調整,計算新的難度目標int nHeightFirst = pindexLast->nHeight - (params.DifficultyAdjustmentInterval()-1);assert(nHeightFirst >= 0);const CBlockIndex* pindexFirst = pindexLast->GetAncestor(nHeightFirst);assert(pindexFirst);return CalculateNextWorkRequired(pindexLast, pindexFirst->GetBlockTime(), params); }

4. 計算新的難度目標

unsigned int CalculateNextWorkRequired(const CBlockIndex* pindexLast, int64_t nFirstBlockTime, const Consensus::Params& params) {if (params.fPowNoRetargeting)return pindexLast->nBits;// Limit adjustment step// 計算生成最近的2016個區塊實際花費了多少時間int64_t nActualTimespan = pindexLast->GetBlockTime() - nFirstBlockTime;//這里需要限制調整的步長,即把實際花費的時間限制在0.5周和8周之間if (nActualTimespan < params.nPowTargetTimespan/4)//params.nPowTargetTimespan是2周,即20160分鐘nActualTimespan = params.nPowTargetTimespan/4;if (nActualTimespan > params.nPowTargetTimespan*4)nActualTimespan = params.nPowTargetTimespan*4;// Retargetconst arith_uint256 bnPowLimit = UintToArith256(params.powLimit);arith_uint256 bnNew;bnNew.SetCompact(pindexLast->nBits);//舊的難度目標值bnNew *= nActualTimespan;bnNew /= params.nPowTargetTimespan;if (bnNew > bnPowLimit)bnNew = bnPowLimit;return bnNew.GetCompact(); }

總結

以上是生活随笔為你收集整理的Bitcoin 中的挖矿算法(6) 难度调整的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲一区二区国产精品 | 久久天| 亚洲欧洲在线播放 | 国产欧美日韩综合精品 | 日本强好片久久久久久aaa | 中文字幕第一页久久 | 他揉捏她两乳不停呻吟动态图 | 91色区| 动漫一区二区 | 亚洲成人第一页 | 久久久久亚洲精品国产 | 亚洲综合色自拍一区 | 亚洲第一毛片 | 成人免费看片在线观看 | 欧美日韩午夜 | 中文字幕日韩欧美一区二区 | 久久这里只精品 | 三级av在线免费观看 | 最新中文字幕在线播放 | 国产在线精品观看 | 成人免费直播 | 久久国产高清 | 久视频在线 | 天天躁日日摸久久久精品 | 亚洲网站免费看 | 大学生高潮无套内谢视频 | 久久国产精品免费观看 | 中文字幕资源站 | 国产欧美日韩综合精品一区二区 | 亚洲男人天堂2018 | 久久国产中文 | 一级欧美黄色片 | 91爱爱视频| 国产夫妻在线视频 | 国产乱在线| 99热视| 尤物国产 | 亚洲第八页 | 波多野结衣免费看 | 成人3d动漫一区二区三区 | 久久av高潮av | 人妻中文字幕一区二区三区 | 大地资源影视在线播放观看高清视频 | 免费观看成人av | 性感美女毛片 | 亚洲网站在线看 | 午夜精品久久久 | 色久婷婷| 欧美精品一区二区免费 | 日本三级韩国三级三级a级按摩 | 秋霞国产午夜精品免费视频 | 性生活视频播放 | 懂色av蜜臀av粉嫩av喷吹 | 久久精视频 | 日韩精品一区二区免费视频 | 日本不卡视频在线观看 | 日韩丰满少妇无码内射 | www.一区二区三区四区 | 在线你懂的视频 | 日本免费不卡一区二区 | 草草在线免费视频 | 人妻激情偷乱频一区二区三区 | 在线香蕉 | 亚洲av无码国产精品久久不卡 | 在线免费看污网站 | 欧美福利一区二区 | 住在隔壁的她动漫免费观看全集下载 | 国产主播福利 | 9999精品视频 | 成人人伦一区二区三区 | 午夜成人影片 | 成人免费视频网址 | 草草草av| 国产欧美日韩在线 | 99啪啪| 国产视频久久久久久 | 日韩av一卡| 亚洲 激情 | 欧美精品乱码99久久蜜桃 | 日本熟妇色xxxxx日本免费看 | 久久久黄色| 成人在线视频免费 | 婷婷综合av | av午夜天堂| 高清一区二区视频 | 亚州中文字幕 | 姐姐的朋友2在线 | 韩日午夜在线资源一区二区 | 色播网址 | 国产精品日本 | 尹人成人网 | 私密视频在线观看 | 日本激情一区二区 | 欧美激情在线一区 | 春意影院福利社 | 日韩一区二区免费视频 | 全部免费毛片在线播放 | 欧美色图一区二区 | 亚洲精品一二三四 |