當前位置:首頁 » 比特幣問答 » 比特幣區塊的difficulty

比特幣區塊的difficulty

發布時間: 2025-06-18 14:56:22

比特幣挖礦的難度和算力

難度是對挖礦困難程度的度量,即指:計算符合給定目標的一個HASH值的困難程度。

difficulty = difficulty_1_target / current_target

difficulty_1_target 的長度為256bit, 前32位為0, 後面全部為1 ,一般顯示為HASH值:, difficulty_1_target 表示btc網路最初的目標HASH。 current_target 是當前塊的目標HASH,先經過壓縮然後存儲在區塊中,區塊的HASH值必須小於給定的目標HASH, 區塊才成立。

例如:如果區塊中存儲的壓縮目標HASH為 0x1b0404cb , 那麼未經壓縮的十六進制HASH為

所以,目標HASH為0x1b0404cb時, 難度為:

比特幣的挖礦的過程其實是通過隨機的hash碰撞,找到一個解 nonce ,使得 塊hash 小於 目標HASH 值。 而一個礦機每秒鍾能做多少次hash碰撞, 就是其「算力」的代表, 單位寫成 hash/s 或者 H/s

算力單位:

比特幣系統的難度是動態調整的, 每挖 2016 個塊便會做出一次調整, 調整的依據是前面2016個塊的出塊時間, 如果前一個周期平均出塊時間小於10分鍾,便會加大難度, 大於10分鍾,則減小難度,目的是為了保證系統穩定的每過 10分鍾 產出一個塊,所以難度調整的時間大概是2周(2016 * 10 分鍾)

全網算力是btc網路中參與競爭挖礦的所有礦機的算力總和。當前難度周期全網算力會影響下一個周期的難度調整, 如果全網算力增加,挖礦難度增大,單台礦機固定時間的產出就會減少。目前全網算力大概是24.42EH/s, 一台螞蟻S9礦機的算力大概是14TH/s

那麼, 已知當前全網算力,下一個周期難度將如何調整呢?

根據公式:

因為出塊時間要穩定在10分鍾, 也就是600s:

那麼,在3.46e+12的難度下, 一台算力為14TH/s的礦機平均要花多長時間才能出一個塊呢?

根據公式:

有:

結果大概是12270天

② 現在挖礦一天的理論收益是多少

▪⋅挖礦收益跟當前的挖礦難度(Difficulty)、礦工的算力(Hashrate)、塊獎勵(Block Reward)都有關系,以比特幣為例,它現在的挖礦難度12720005267390.51,塊獎勵是12.5 BTC,以1Ph/s算力來算的話,一天理論上的挖礦收益是0.01976863 BTC。
▪⋅要是想挖礦的話,趕緊入場,越晚挖礦難度越大,出塊的獎勵越少。不過,現在國內挖礦行業前景也堪憂,可以找一下世鏈礦業這種在國外有優質礦場的礦企,協助自己出海挖礦,也是可以的,早點挖礦早致富。

③ 比特幣區塊里的各個欄位含義(先寫了個nonce)

nonce是個啥意思?根據bitcoin wiki

nonce是一個4-byte大小的區域,nonce的值設定使得該塊的hash是以一串0開頭的。
對於塊數據的一點點改變(比如nonce)都會引起block hash的巨大變化。由於逆向預測hash值相對應的一組bit值(hash原文)是不可行的,在嘗試足夠多的nonce值且計算每個nonce值相對應的block hash之後可以找到一個滿足有指定數量 0 bits (0比特位) 的hash值。而 0 bits的數量值是由difficult設定的。最終產生的hash須得是一個小於當前difficulty值。
因為這個迭代的計算耗費時間和資源,塊的出現也就是得到了正確的nonce值,這構成了 proof of work

關於以太坊里的nonce 網上很多解釋,很多一上來就是 交易計數器 , 然而卻把跟POW有關的丟了嗎?事實上以太坊里的nonce有兩種意思,一個是proof of work nonce,一個是account nonce。

那智能合約呢?合約也算是Account的一種,那也有nonce嗎?

是的,而且合約裡面的nonce也差不多,也是一個counter。在智能合約里,nonce的值代表的是該合約創建的合約數量。只有當一個合約創建另一個合約的時候才會增加nonce的值。但是當一個合約調用另一個合約中的method時 nonce的值是不變的。

在以太坊中nonce的值可以這樣來獲取(其實也就是屬於一個賬戶的交易數量):

但是這個方法只能獲取交易once的值。目前是沒有內置方法來訪問contract中的nonce值的,除了自己定義一個counter來計數...

那好,再來看一下Ethereum Block中的nonce:
以太坊和比特幣區塊鏈一樣,也需要proof of work(計劃轉移到股份證明也早已在做了)。在比特幣區塊鏈中,pow應該是要算出一個符合難度要求的值,通常是以一串0開頭的。這個難度一直在變化。可以查看 比特幣區塊鏈的POW難度變化 。

礦池難度值怎麼樣算


礦池難度值怎麼算的
礦池難度值是一個用於描述加密貨幣挖礦難度的指標,它是根據區塊鏈協議的規則和演算法來計算的。
在比特幣挖礦中,礦池難度值的計算過程如下:
確定區塊鏈協議中規定的挖礦難度計算公式。
比特幣協議中的挖礦難度計算公式為:difficulty=difficulty\_1\_target/current\_target
其中,difficulty\_1\_target是一個常量,表示挖到一個新塊所需的最小哈希值;current\_target是當前挖到的塊的哈希值。
確定計算周期。
在比特幣協議中,難度值是每2016個塊(大約兩周)調整一次。
統計計算周期內的塊數和時間。
對於每個計算周期,礦池需要記錄本周期內挖出的塊數和挖礦時間。
計算礦池難度值。
根據上述公式,將本周期內挖出的塊數和挖礦時間代入計算,得出本周期的礦池難度值。
礦池難度值的計算會根據不同的加密貨幣和區塊鏈協議而有所不同,但都遵循類似的計算方法。

⑤ 挖礦難度表示

比特幣的挖礦難度可以使用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格式信息一致。

⑥ 什麼是比特幣挖礦難度如何調整原理是什麼

比特幣挖礦難度(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 分鍾調整一次),有明顯的滯後性。你認為是哪種調整方式更合理呢?為什麼呢?歡迎在留言區分享你的觀點。

⑦ 區塊鏈鼻祖比特幣之8:分叉帶來的雙花支付、51%攻擊與解決辦法

分叉

前面講到了比特幣通過區塊鏈+工作量證明的獨特設計來解決了時間順序,但是不能保證在同一時刻有兩個節點算出了正確的解,雖然這種可能性很低很低。這就帶來了區塊的分叉。

雖然說幾乎同時有兩個節點計算出這一數學問題的可能性微乎其微,但是仍然存在這樣的可能性,所以分叉就以為著同一個區塊的後面可能會跟上兩個不同的區塊。

規則的打破一直要到下一個區塊被人解開。則會立即轉向最長的區塊,而那些短的區塊則會被拋棄。數學問題使得區塊很難被同時拆解。要連續發生多次更是困難。最終區塊鏈會穩定下來。也就是說所有人對最後幾個區塊順序達成共識。分叉意味著,譬如,若你的交易出現在較短的支鏈,它就會失去進入區塊鏈的位置。一般而言,只代表他會回到未確認交易池。然後被納入到下一個區塊。

比特幣網路如何解決分叉帶來的雙花支付

可惜,交易失去區塊位置的潛在可能,給了本來定序系統防範的重復支付攻擊機會。考慮下面的一個攻擊者A,其首先用自己的比特幣交換B節點的貨物,其立即又支付給自己。然後其通過努力的製造更長的鏈條來讓自己的支付替代掉B節點的支付,從而實現了雙重支付,B節點既得不到錢,還失去了貨物。

這時交易會退回到未確認池中,因為A節點已經利用參照同樣的input交易取而代之。節點就會認為Bob的交易無效。因為已使用掉。

你可能會猜測A節點會預先的計算出一支區塊鏈,然後抓住時機發布到網路。但是每個區塊的數學謎題阻擋了這個可能性。如前面所訴,解開區塊是猜測出一個隨機數的過程。一旦得出答案,解出的哈希值就會成為指紋一樣的區塊識別。只要區塊內容有一丁點變化,下一個區塊的參考值就會完全不同。此機制的結果就是無法在區塊鏈中置換區塊。在得到前一個區塊之前,下位區塊無法被解開。前一個區塊的指紋也是雜湊函數的引數之一。

同時,該工作量證明機制還解決了在集體投票表決時,誰是大多數的問題。如果決定大多數的方式是基於IP地址的,一IP地址一票,那麼如果有人擁有分配大量IP地址的權力,則該機制就被破壞了。而工作量證明機制的本質則是一CPU一票。「大多數」的決定表達為最長的鏈,因為最長的鏈包含了最大的工作量。如果大多數的CPU為誠實的節點控制,那麼誠實的鏈條將以最快的速度延長,並超越其他的競爭鏈條。如果想要對業已出現的區塊進行修改,攻擊者必須重新完成該區塊的工作量外加該區塊之後所有區塊的工作量,並最終趕上和超越誠實節點的工作量。我們將證明,設想一個較慢的攻擊者試圖趕上隨後的區塊,那麼其成功概率將呈指數化遞減。另一個問題是,硬體的運算速度在高速增長,而節點參與網路的程度則會有所起伏。為了解決這個問題,工作量證明的難度(the proof-of-work difficulty)將採用移動平均目標的方法來確定,即令難度指向令每小時生成區塊的速度為某一個預定的平均數。如果區塊生成的速度過快,那麼難度就會提高。

如果有一台超級電腦,能夠在區塊解題中獲勝?

即便是一台超級電腦,或者時幾百上千台電腦也很難贏得解一個區塊的勝利,因為競爭對手不是任一台電腦,而是整個比特幣網路。你可以用買彩票來比擬。操作千百台電腦,如同買了千百張彩票一樣。

51%攻擊是指的什麼

根據前面的例子,我們知道,要想有50%的概率領先其他人解題得到勝利,就需要掌握全網50%以上的算力。要連續領先他人解出區塊,掌握的運算能力還需要高得多。所以區塊鏈中的交易是受到數學競賽所保護。惡意用戶必須和整個網路較量。區塊連接建立的結果,使得在支鏈越前方的交易越安全。惡意的用戶必須在更長的時間贏過全網路,來達成重復支付,替換前面的區塊鏈。所以,系統只有支端末尾易受到重復支付攻擊。這也是為什麼系統建議多等幾個區塊,才能確認收款成功。

個人博客:https://dreamerjonson.com/

⑧ PoW共識機制的原理

比特幣的共識機制就是PoW共識,借鑒了HashCash的處理方法, 下面就來說說比特幣如何進行PoW共識的。

從區塊頭的結構中可以看到一個4 bytes的Nonce值,Nonce值的變動會影響整個區塊頭的哈希值,挖礦節點即是通過嘗試不同的Nonce值(通常從0開始每次加1),尋找一個哈希值小於Difficulty Target指定的難度值。

PoW證明過程,這也就是俗稱的挖礦過程, 找到合適的哈希值。
這里不詳細說明區塊打包過程, 區塊通過一定的演算法被生成, 當然生成是需要一定的代價的。
區塊頭里的各個值並不是隨機的, 而是由固定的演算法得出, Merkle根哈希值就是把交易打包變成一顆Merkle樹, 最後得出根的哈希值者困, 難度值是根據演算法不斷調整, 要維持出塊速率是10分鍾出一個塊。

首先我們把所有交易打包生成Merkle樹, 計算Merkle根的哈希值, 然後組裝區塊頭, 把區塊頭不斷進行SHA256(SHA256(區塊頭))雙重哈希操作, 然後判斷是否小於網路目標值, 這里其實就是把它變成2進制, 二進制前面有多少位是沒有0的, 因為有1的話, 這個十進制的值肯定是很大的, 就不會符合條件。 如果大於這個目標值, 說明前面的位數沒有滿足前多少位為0的條件 哈希不成功, 那麼就改變隨機數值,組成新的區塊頭,繼續哈希。
這是就是是挖到礦了,其他節點驗證的話也簡單,只要做一次SHA256(SHA256(驗證區塊頭))來判斷。

比特幣挖礦難度調整方式非常簡單,難度目標調整即不斷將256位的難度值減小,如277315號區塊的難度值十六進製表示為:
這個數字在二進製表示下前60位均是0,如果要增加難度只需要減小這個值,隨著難度值的減小,起始0的個數增多,可尋找的哈希值范圍減小,挖礦難度就越大。

難度的調整是在每個完整節點中獨立自動發生的。每2016個區塊,所有節點都會按統一的公式自動調整難度。如果區塊產生的速率比10分鍾快則增加難度,比10分鍾慢則降低難度。
公式可以總結為:新難度值=舊難度值×(過去2016個區塊花費時長/20160分鍾)

優點

缺點

1:挖礦過程為什麼要計算兩次哈希值?
中本聰在設計比特幣的挖礦演算法的時候,考慮到SHA2-256演算法存在被破解的可能,雖然在理論上並未出現對SHA2-256演算法的攻擊。為了減弱攻擊的威脅,區塊頭數據要對SHA2-256演算法運算兩次。

2:如果所有節點都從0開始嘗試Nonce值,那不就永遠都是算力高的節點先計算出有效的結果,算力低的節點永遠沒希望挖礦成功?
區塊頭大部分信息都是一樣的,但是Merkle Root對於每個節點必然是不同的,因為每個節點都會有自己的Coinbase交易,該交易中存在節點礦工的地址,此地址山嫌肆對於每個獨立挖礦節點都是不同的,根據哈希函逗轎數的雪崩效應可知每個獨立節點的Merkle Root必定有顯著的區別。

3:如何解決拜占庭問題?
通過工作量證明就增加了發送信息的成本,降低節點發送消息速率,這樣就以保證在一個時間只有一個節點在進行廣播,同時在廣播時會附上自己的簽名。工作量證明其實相當於提高了做叛徒(發布虛假區塊)的成本,只有第一個完成證明的節點才能廣播區塊,競爭難度非常大,需要很高的算力,如果不成功其算力就白白的耗費了,整個系統也因此而更穩定。

熱點內容
抵制數字貨幣 發布:2025-06-18 19:14:23 瀏覽:967
超市可以用比特幣么 發布:2025-06-18 19:08:10 瀏覽:186
doge幣年初到現在漲了多少倍 發布:2025-06-18 18:53:37 瀏覽:994
doge狗幣一天翻倍 發布:2025-06-18 18:38:20 瀏覽:720
誰會需要比特幣 發布:2025-06-18 18:03:59 瀏覽:823
哪些虛擬幣能取代eth 發布:2025-06-18 18:03:23 瀏覽:127
區塊鏈中的tx 發布:2025-06-18 17:50:57 瀏覽:900
比特幣人吃人 發布:2025-06-18 17:25:21 瀏覽:125
墨子礦機 發布:2025-06-18 17:25:06 瀏覽:550
人民幣圖片可以發朋友圈嗎 發布:2025-06-18 17:18:48 瀏覽:716