Blockchain
UpdateTip 中的參數 - log2_work 的計算
我在裡面查找了 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)
.