Proof-of-Work

投入鏈的工作量證明的數量是如何計算的?

  • August 28, 2018

比特幣白皮書(第3 頁)指出

多數決策由最長的鏈代表,該鏈投入了最大的工作量證明。

我找不到這個難度是如何計算的。

它是每個塊的隨機數的前綴零的總和嗎?


我找到了這個答案,但它太短了,我無法理解。

工作量計算為work = 2^256 / block_target,如鍊接答案中所述,這是算作有效工作量證明的最小雜湊值(請注意,這僅每 2016 個塊更改一次)。原始碼是src/chain.cpp L#121。總鏈工作是鏈中所有塊的工作總和,在此處計算:src/validation.cpp L#3713。因此,為了形象化,塊目標越低,完成的工作就越多。

例子

塊 0 目標:00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff

塊 1 目標: 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff

塊 0 塊 1****:work = (2^256) / <block 0 hash> = 4.295 × 10^9

work = (2^256) / <block 1 hash> = 4.295 × 10^9

您可以看到他們都完成了相同數量的工作。如果出現平局,則適用以下規則,請參閱https://bitcoin.stackexchange.com/a/372​​75/60443

  • 哪個先收到?(對於不同的客戶端,這可能會有所不同,這就是首先應用前面的規則的原因。)
  • 哪個指針地址更大?(這在很大程度上是隨機的,並且對於不同的客戶來說是不同的。)

引用自:https://bitcoin.stackexchange.com/questions/78678