挖礦難度在哪看
『壹』 浠ュお甯佹庝箞鏍風湅綆
浠ュお甯佹庝箞鐪嬬畻鍔
浠ュお甯佺殑綆楀姏鏄鎸囧叏緗戝弬涓庢寲鐭跨殑鎵鏈夌熆鏈虹殑緇煎悎璁$畻鑳藉姏銆傜畻鍔涜秺澶э紝鎰忓懗鐫鍏ㄧ綉涓婄熆鏈虹殑鏁伴噺鍜屾ц兘瓚婇珮錛屾寲鐭塊毦搴︿篃灝辮秺澶с
涓鑸鏉ヨ達紝浠ュお甯佺殑綆楀姏鍙浠ヤ粠浠ヤ笅鍑犱釜鏂歸潰鏉ヨ傚療錛
鍏ㄧ綉綆楀姏錛氬彲浠ラ氳繃涓浜涚涓夋柟緗戠珯鎴栧簲鐢ㄧ▼搴忔潵鏌ョ湅褰撳墠浠ュお甯佺綉緇滅殑鎬葷畻鍔涖備緥濡傦紝Etherscan緗戠珯鍙浠ユ彁渚涘叏緗戠畻鍔涙暟鎹銆
鐭挎睜綆楀姏錛氫互澶甯佺殑鎸栫熆閫氬父鏄閫氳繃鐭挎睜榪涜岀殑錛屼笉鍚岀熆奼犵殑綆楀姏涔熶笉鍚屻傚彲浠ラ氳繃鐭挎睜鎻愪緵鐨勬暟鎹鏉ヤ簡瑙e叾綆楀姏澶у皬銆
涓浜虹畻鍔涳細濡傛灉浣犺嚜宸卞弬涓庝互澶甯佺殑鎸栫熆錛屽彲浠ラ氳繃鎸栫熆杞浠舵潵鏌ョ湅鑷宸辯殑鐭挎満綆楀姏澶у皬銆備竴鑸鏉ヨ達紝鐭挎満鎬ц兘瓚婇珮錛岀畻鍔涗篃灝辮秺澶с
鎬諱箣錛屼互澶甯佺殑綆楀姏鏄鍙嶆槧鍏ㄧ綉鍙備笌鎸栫熆鐨勭患鍚堣$畻鑳藉姏錛屽彲浠ラ氳繃澶氱嶉斿緞榪涜岃傚療鍜屼簡瑙c
比特幣挖礦難度(Difficulty),是對挖礦困難程度的度量,挖礦難度越大,挖出區塊就越困難。目標值(Target)與挖礦難度成反比。難度越高,目標值越小。而難度目標是目標值通過轉化得到,是一個只有 4 個位元組的欄位(為了便於理解,本文將難度目標等同目標值處理)。比特幣系統正是通過調整區塊頭中難度目標來控制挖出區塊所需平均時間的。
目標值是個長度為 256 比特的字元串,換句話說目標值約有 2^256 種可能的取值。調整難度目標就是調整目標值在整個輸出空間的佔比。
舉例說明:挖礦就如射擊,所有射出去的子彈都會落在一個很大的靶子上。難度目標就是這個大靶子上圈出一個范圍,這個范圍越小,被射中的難度就越高。調節難度目標,就是調節這個圈在整個靶子上的佔比。
挖礦算力增大,單位時間射擊的次數就越多,目標范圍被射中所需的時間就越短。反之,挖礦算力減小,目標范圍被擊中所需的時間就越長。而比特幣系統追求的平均出塊時間為 10 分鍾,這時候就需要調整難度目標來實現。
02 如何調整難度目標?
比特幣系統是怎樣調整難度目標的呢?在《白話區塊鏈入門 080 | 數說比特幣,了解 比特幣 必須知道這 10 個數字》一文中,我們介紹了比特幣系統每過 2016 區塊(大約為 14 天時間),會自動調整一次難度目標。所有區塊高度為 2016 整數倍的區塊,系統就會自動調整難度目標。如果上一個難度目標調整周期(也就是之前 2016 個區塊),平均出塊時間大於 10 分鍾,說明挖礦難度偏高,需要降低挖礦難度,增大難度目標(准確地說是目標值);反之,前一個難度目標調整周期,平均出塊時間小於 10 分鍾,說明挖礦難度偏低,需要縮小難度目標。
03 難度目標的可調范圍
比特幣系統設定,難度目標上調和下調的范圍都有 4 倍的限制。舉例說明:假設上一個難度目標調整周期內的 2016 個區塊,由於算力暴漲,只用 7 天就全部挖出來了,通過難度目標調整,將難度目標縮小一倍,可以將平均出塊時間維持在 10 分鍾左右,但如果算力暴漲,前 2016 個區塊全部挖出只用了 1 天,那麼難度目標最小隻能調整為原來的四分之一。
04 總結
比特幣的算力是持續波動的,比特幣系統通過難度目標的調整,使得平均出塊時間維持在 10 分鍾左右。難度目標和挖礦難度成反比,挖礦難度越大,難度目標越小。當區塊高度為 2016 的整數倍時,比特幣系統就會在該區塊上,自動調整難度目標。如果上一個難度目標調整周期內,平均出塊時間超過 10 分鍾,那麼降低挖礦難度,增大難度目標;反之則提高挖礦難度,減小難度目標。難度目標上調和下調的范圍都有 4 倍的限制。
比特幣每 2016 個區塊(大約 14 天)調整一次挖礦難度,相比於 BCH 每個區塊都調整(大約 10 分鍾調整一次),有明顯的滯後性。你認為是哪種調整方式更合理呢?為什麼呢?歡迎在留言區分享你的觀點。
『叄』 鎸栧竵闅懼害鎬庝箞鏍
鎸栧竵闅懼害鎬庝箞鐪
鎸栧竵闅懼害閫氬父鎸囩殑鏄鏁板瓧璐у竵錛堝傛瘮鎼忔嫤閿鐗瑰竵銆佷互澶鍧婄瓑錛夌綉緇滀腑鎸栫熆鐨勯毦搴︺備互涓嬫槸鎸栧竵闅懼害鐨勮︾粏瑙i噴錛
1.浠涔堟槸鎸栧竵闅懼害錛
鎸栧竵闅懼害鏄鏁板瓧璐у竵緗戠粶涓鐨勪竴涓鍙傛暟錛屽畠浠h〃浜嗘寲鐭跨殑闅懼害紼嬪害銆傞殢鐫緗戠粶涓鐭垮伐鐨勬暟閲忎笉鏂澧炲姞錛屾寲甯侀毦搴︿篃浼氫笉鏂澧炲姞錛屼互淇濊瘉鏁板瓧璐у竵鐨勪緵搴旈熷害涓庡滻瀹氱殑鑺傚忕浉鍖歸厤銆
2.濡備綍紜瀹氭寲甯侀毦搴︼紵
鎸栧竵闅懼害鏄閫氳繃緗戠粶綆楁硶鍔ㄦ佽皟鏁寸殑錛屽畠浼氶殢鐫緗戝熀娓哥粶涓鐭垮伐鐨勮緇濇暟閲忋佺畻鍔涚殑澧炲姞鎴栧噺灝戣岃嚜鍔ㄨ皟鏁淬傞氬父鎯呭喌涓嬶紝緗戠粶浼氭瘡闅斾竴孌墊椂闂達紙姣斿傛瘮鐗瑰竵緗戠粶姣忛殧2016涓鍖哄潡錛夊規寲甯侀毦搴﹁繘琛屼竴嬈¤皟鏁淬
3.濡備綍鐪嬪緟鎸栧竵闅懼害錛
鎸栧竵闅懼害瓚婇珮錛屾剰鍛崇潃鎸栫熆瓚婂洶闅撅紝闇瑕佹洿澶氱殑綆楀姏鍜屾洿鏄傝吹鐨勮懼囨潵榪涜屾寲鐭褲傚洜姝わ紝褰撴寲甯侀毦搴︿笂鍗囨椂錛屽逛簬鏅閫氱熆宸ユ潵璇達紝鍏舵寲鐭挎敹鐩婁細鐩稿簲涓嬮檷錛岃屽逛簬鎷ユ湁澶ч噺綆楀姏鐨勫ぇ鍨嬬熆宸ユ垨鐭挎睜鏉ヨ達紝鍏舵寲鐭挎敹鐩婂垯鐩稿規洿鍔犵ǔ瀹氥傚彟澶栵紝鎸栧竵闅懼害涔熸槸鏁板瓧璐у竵浠鋒牸娉㈠姩鐨勪竴涓閲嶈佸洜緔狅紝闅懼害涓婂崌鍙鑳戒細瀵艱嚧浠鋒牸涓嬭穼錛岃岄毦搴︿笅闄嶅垯鍙鑳戒細瀵艱嚧浠鋒牸涓婃定銆
鎬諱箣錛屾寲甯侀毦搴︽槸鏁板瓧璐у竵緗戠粶涓涓涓闈炲父閲嶈佺殑鍙傛暟錛屽畠鐩存帴褰卞搷鐫鏁板瓧璐у竵鐨勪緵搴旈熷害銆佹寲鐭跨殑闅炬槗紼嬪害浠ュ強浠鋒牸鐨勬嘗鍔ㄧ瓑銆
『肆』 鎬庝箞鏍風煡閬撴寲鐭跨殑闅
鎬庝箞鐭ラ亾鎸栫熆鐨勯毦搴
鎸栫熆鐨勯毦搴︽槸閫氳繃涓涓鍙鍋氣滈毦搴﹀尖濈殑鍙傛暟鏉ヨ閲忕殑錛屽畠鏄姣旂壒甯佺瓑鍔犲瘑璐у竵緋葷粺涓鐨勪竴涓閲嶈佸弬鏁般
闅懼害鍊兼槸鐢卞姞瀵嗚揣甯佺郴緇熻嚜鍔ㄨ皟鏁寸殑錛屽畠浼氭牴鎹榪囧幓涓孌墊椂闂村唴鐭垮伐浠鐨勬寲鐭塊熷害鏉ヨ嚜閫傚簲璋冩暣錛屼互淇濇寔鍔犲瘑璐у竵緋葷粺涓鏂扮殑鍖哄潡浜х敓鐨勯熷害紼沖畾銆
鍦ㄦ瘮鐗瑰竵緋葷粺涓錛岄毦搴﹀奸氬父姣忎袱鍛ㄨ皟鏁翠竴嬈°傚綋鐭垮伐浠鐨勭畻鍔涳紙鍗寵$畻鏈虹殑澶勭悊鑳藉姏錛夊炲姞鏃訛紝鎸栫熆鐨勯熷害浼氬彉蹇錛岄毦搴﹀間篃浼氶殢涔嬪炲姞錛屼互淇濇寔姣旂壒甯佺郴緇熶腑鏂板尯鍧椾駭鐢熺殑閫熷害澶х害涓烘瘡10鍒嗛挓涓涓銆
鍙浠ラ氳繃姣旂壒甯佺綉緇滀笂鐨勪竴浜涚綉絝欐垨鑰呭尯鍧楁祻瑙堝櫒鏉ユ煡鐪嬪綋鍓嶇殑闅懼害鍊礆紝渚嬪侭lockchain.info銆丅TC.com絳夛紝瀹冧滑浼氬疄鏃舵洿鏂伴毦搴﹀肩殑鍙樺寲鎯呭喌銆
鎬葷殑鏉ヨ達紝鎸栫熆鐨勯毦搴︽槸鐢卞姞瀵嗚揣甯佺郴緇熻嚜鍔ㄨ皟鏁寸殑錛岄氳繃鏌ョ湅姣旂壒甯佺綉緇滀笂鐨勭綉絝欐垨鑰呭尯鍧楁祻瑙堝櫒錛屾垜浠鍙浠ュ緱鐭ュ綋鍓嶇殑闅懼害鍊箋
『伍』 挖礦難度表示
比特幣的挖礦難度可以使用Target Threshold,nBits或Difficulty表示,它們互相等價:
這三個值的轉化關系可以採用下面的實例來說明:
首先獲取哈希值為 的區塊原生十六進制信息如下:
區塊中nBits採用小端格式表示,解析區塊信息,得到nBits欄位值為0x4c86041b。因此轉化為大端格式為0x1B04864C,這個值是Target Threshold的壓縮格式表示,可以將它轉化成256位的Target Threshold值:
開頭的一個位元組為指數,後面三個位元組為系數,則:
計算出Target Threshold值為 。
再計算Difficulty的值,它有兩個值,計算公式分別為:
由此可以使用 Python 計算出bdiff的值:
因此,得到在比特幣客戶端中的difficulty值bdiff為14484.162361225399。
為了檢驗上述結果,可以在比特幣核心客戶端中使用 getblock "" 命令得到該區塊的json格式信息:
最終,可以發現該區塊的bits和difficulty欄位信息與上面分析計算的相關結果一致。
nBits的大端格式表示法中,其系數最大為0x7fffff,這是因為Target Threshold數據類型是無符號整型,而它繼承自有符號數據類,則在實際中Target Threshold系數的最高位有可能是1,這可能會被解析成一個負數。則在挖礦過程中難度值永遠無法小於一個負數。因此,為了解決這個問題,比特幣核心在生成nBits值時需要首先檢查一下生成的nBits是否會被解析為一個負數。如果是,首先在系數開頭補8位0,即除以256,然後指數再加上1。這樣由nBits轉化為Target Threshold過程中轉化公式就與普通值相同了,即指數位都是減去3,轉化過程上面已經提到。
舉個例子說明:
哈希值為 的區塊信息如下:
發現bdiff值為1,則利用bdiff與Target Threshold關系可以計算出:
將Target Threshold值 轉化為nBits的過程中可以發現其系數為0xffff00,指數為0x1c,這樣:
然而由於系數最高位為1,則如果這樣表示的話就可能將Target Threshold解析為負數。因此,我們將系數除以256,指數加上1,得到系數為0x00ffff,指數為0x1d。這樣:
最終,nBits值為0x1d00ffff(大端表示),與json格式信息一致。
『陸』 礦機多長時間能挖一個btc
這跟礦機算力、全網難度都有關系,挖礦不需要了解多久能挖出來一個,只需要計算自己的回報率,和每天的收入費用,了解其風險和運行需要具備的條件就可以,可以到彩雲比特或者今日礦工官網看看。
『柒』 礦池難度值怎麼樣算
礦池難度值怎麼算的
礦池難度值是一個用於描述加密貨幣挖礦難度的指標,它是根據區塊鏈協議的規則和演算法來計算的。
在比特幣挖礦中,礦池難度值的計算過程如下:
確定區塊鏈協議中規定的挖礦難度計算公式。
比特幣協議中的挖礦難度計算公式為:difficulty=difficulty\_1\_target/current\_target
其中,difficulty\_1\_target是一個常量,表示挖到一個新塊所需的最小哈希值;current\_target是當前挖到的塊的哈希值。
確定計算周期。
在比特幣協議中,難度值是每2016個塊(大約兩周)調整一次。
統計計算周期內的塊數和時間。
對於每個計算周期,礦池需要記錄本周期內挖出的塊數和挖礦時間。
計算礦池難度值。
根據上述公式,將本周期內挖出的塊數和挖礦時間代入計算,得出本周期的礦池難度值。
礦池難度值的計算會根據不同的加密貨幣和區塊鏈協議而有所不同,但都遵循類似的計算方法。