挖礦過程如何需要大約 10 分鐘?
我不認為我完全理解區塊鏈中的“困難”主題,因此我不明白挖礦過程如何需要接近 10 分鐘。
如果我有“目標”值(某個雜湊值,每個塊的值必須小於或等於該目標),為什麼需要 10 分鐘才能找到塊的雜湊值?也許當 Nonce = 2 時,塊的值將 <= Target,也許當 Nonce = 100000000 時,值將 <= Target。
但是如果 Nonce = 2 ,那麼挖礦的時間是幾秒鐘,如果 Nonce = 100000000 ,那麼挖礦的時間是幾分鐘。
所以這是運氣什麼的,但是挖礦的時間是可以改變的。。那麼區塊鏈中的原理是什麼\礦工是做什麼的,為了讓挖礦過程平均在10分鐘內?
我是這項技術的新手,所以我希望得到簡單的答案 在此先感謝
為了簡單起見:
探勘包括找到一個特定的塊,該塊一旦散列就會給出低於某個門檻值(目標)的值。
每固定數量的塊(2016)重新計算目標,以便每兩週刷新一次(以每 10 分鐘 1 個塊的速率)。
重新計算時,會考慮總網路雜湊率,因此根據該值,平均每十分鐘會探勘一個塊。請注意,這純粹是機率性的。
它是如何工作的?
目標是定期重置的 256 位值。當一個區塊被挖出時,SHA-256 雜湊值會在區塊上執行,並將結果與目標進行比較。
現在,如果目標是一個巨大的 256 位數字,則該塊的雜湊值將很容易小於目標,並且該塊將被認為是有效的。但是,如果目標值真的很小,那麼找到一個有效的塊將更加困難。這就是網路雜湊率發揮作用的地方。算力越大,目標越低。因此,一旦自上次更新以來發布了 2016 年區塊,目標將被重新計算,根據總網路雜湊率的演變情況使其更高或更低。
請注意,確實有可能在少於或多於 10 分鐘的時間內找到一個塊,但機率更可能在標記附近。
它是如何計算的?
如果你想確切地知道它是如何計算的,這裡有一個 Python 程式碼可以做到這一點:
max_tgt = int("00000000FFFF0000000000000000000000000000000000000000000000000000", 16) # Around 2^224 current_diff = 440779902287 current_tgt = max_tgt / current_diff # current_diff = max_tgt/current_tgt hash_rate = 3310469378 * pow(10, 9) # GHash/s to Hash/s print current_tgt/float(pow(2, 256)) * hash_rate * 600
通過將目前目標除以可能的最大雜湊數 (2^256),您可以獲得找到有效雜湊的機率。如果將其乘以雜湊率,您會得到一秒鐘內將獲得多少正確的雜湊值。最後,通過將它乘以 10 分鐘(600 秒),您可以得到多少有效雜湊,平均而言,您將在 10 分鐘內得到。
什麼給你:
1.04920216926
最大目標(
max_tgt
)、目前難度(current_diff
)和雜湊率(hash_rate
)等數據均從bitcoinwisdom中獲取,並與目前網路數據相匹配。在那裡你還可以找到一些關於過去幾個月算力和難度如何演變的圖表。對於那些想知道如何實際計算網路雜湊率的人,您可以在此答案中進行檢查。