Blockchain

UpdateTip 中的參數 - log2_work 的計算

  • April 1, 2016

我在裡面查找了 log2_work main.cpp,我無法按照log(chainActive.Tip()->nChainWork.getdouble())/log(2.0).

a)->明確表示什麼?(我處於 C++ 的基礎水平)

b)log2_work到底在說什麼?它是否量化了計算的工作量?

相關問題:這裡

僅供參考,討論中的程式碼可在 GitHub 上找到

->是 C++ 中的成員訪問運算符,就像.是一樣。他們都期望右邊的對象成員的名稱(例如成員函式或變數)。不同之處在於它.需要一個左側的對象,而->需要一個指向它首先取消引用的對象的指針。

所以chainActive.Tip()->nChainWork.getdouble()從活動鏈開始,獲取一個指向表示目前提示的 CBlockIndex 對象的指針,取消引用該指針並獲取提示的總鏈工作(這是一個 256 位整數),並將其轉換為雙精度數。

接下來它計算natural_log(total_chain_work) / natural_log(2),這與計算相同log_base_2(total_chain_work)。我認為這只是為了使輸出更小,而不是必須輸出整個(更長)total_chain_work

如果您想將其恢復為total_chain_work舊版本中使用的格式,只需計算 2 log2_work,例如pow(2.0, log2_work).

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