2014-02-27 35 views
6

我正在查看stratum protocol,並且遇到了mining.notify方法的nbits值的問題。我很難計算它,我認爲這是貨幣難度。試圖理解層協議的nbits值

我從一個狗幣池中取出一個通知,它返回1b3cc366,當時的難度是1078.52975077。

我在這裏假設1b3cc366在轉換時應該給我1078.52975077。但我似乎無法完成轉換權。

我看了here,here,並且還嘗試了.NET函數BitConverter.Int64BitsToDouble

有人能幫我理解nbits值是什麼意思嗎?

回答

10

你是對的,nbits是目前的網絡難度。

難度編碼是全文描述here

0x1b3cc366

十六進制表示由兩個部分組成:

  • 0x1b - 字節中的目標數
  • 0x3cc366 - 目標前綴

這意味着,有效散列應該少比0x3cc366000000000000000000000000000000000000000000000000(確切地說0x1b = 27字節長)。

浮點難度表示顯示目前的目標比起始塊中使用的目標更難。

Satoshi決定使用0x1d00ffff作爲創建區塊的難度,所以目標是 0x00ffff0000000000000000000000000000000000000000000000000000

而且1078.52975077很多當前的目標是如何比初始一個更大:

$ echo 'ibase=16;FFFF0000000000000000000000000000000000000000000000000000/3CC366000000000000000000000000000000000000000000000000' | bc -l 
1078.52975077482646448605