Bitcoin-Core
為什麼 Core CLI 在載入區塊索引或驗證區塊時無法查詢錢包餘額?
為什麼 Core CLI 在載入區塊索引和驗證區塊之前不能查詢錢包餘額?執行測試和簽名網路需要一些時間,但是在執行主網路時,對於我這個年代久遠的硬體來說,這很困難,而且需要很多秒。有時有點不方便。兩個負載不應該是並行的嗎?
錢包需要訪問鏈狀態才能正常執行,並且需要訪問塊索引。因此,錢包在其建構子中需要一個鏈狀態,並且在載入塊索引並完成完整性檢查之前,管理鏈狀態的對像不可用。錢包中有幾個地方假設鏈狀態可用。
此外,還有許多 RPC 需要訪問鏈狀態和其他節點對象,並且這些 RPC 的一般假設是這些對像是可用的(它們往往是全域的)。因此,為了避免對象尚未初始化的任何問題,RPC 伺服器將阻止所有 RPC 呼叫,直到初始化完成,以保證這些對像被初始化。
這可能會更改為不阻塞,但是這樣的項目可能會非常大,並且需要對全域對象的假設進行重大更改。與所有開源項目一樣,之所以沒有這樣做,是因為沒有人費心去做。