Difficulty
目標的緊湊表示是否有理由?
在比特幣中,目標是一個 256 位無符號整數,使用類似於 32 位浮點的緊湊表示儲存,具有以下參數:
- 1個符號位(有什麼用嗎?)
- 偏移量為二進制 3 的 8 位指數(為什麼?)
- 基數 256(使用這個基數,指數不能長 5 位嗎?根據定義,最大目標設置為 2^224 - 1 = 256^28 - 1)
看起來該格式是為比特幣目標以外的其他目的而設計的,並且在程式碼中未經修改就使用了。
如果您想首先說明為什麼要使用緊湊表示的理由:大概不要浪費塊頭中的空間。我們現在知道,根本不需要將目標儲存在塊頭中(頭優先同步不需要它),但在此之前,某些 DoS 保護需要它。
特定的選擇確實有點奇怪。符號位當然是不必要的,而且範圍似乎有點偏離。但是,對於簡單的通用 32 位浮點數來說,這並不是一個糟糕的選擇。