Client

如何獲取地址與比特幣客戶端的餘額?

  • January 30, 2022

我想使用 bitcoind 查看某個地址的餘額。

我設置txindex=1並做了一個-reindex讓所有交易都被索引。

但是,似乎沒有辦法獲得地址的餘額。getreceivedbyaddress不適用於您自己錢包中的地址(我希望它可以在 a 之後使用-txindex=1 -reindex,但事實並非如此)。

我想知道為什麼 blockexplorer.comgetreceivedbyaddress可以對任何地址執行此操作,但預設客戶端不能。如果你下載並同步整個區塊鏈,你應該可以查詢它的任何資訊,對吧?

預設情況下,0.8 區塊鏈引擎維護的是:

  • 所有塊
  • 包含所有塊頭的數據庫,以及每個塊在磁碟上的位置
  • 代表區塊鏈目前尖端的所有未使用的交易輸出(UTXO)的數據庫,由 txid 索引
  • 撤消允許在這組 UTXO 上倒回塊效果的文件。

此級別不存在與地址或餘額相關的任何內容。這只是數據的客戶端表示。錢包的餘額是可與錢包中的一組密鑰一起使用的 UTXO 值的總和。您可以將地址的餘額定義為分配給與給定地址匹配的腳本的 UTXO 值的總和(這是幾個站點所做的),但是以這種方式呈現它是非常令人困惑的——這讓很多人認為比特幣交易將價值從一個地址轉移到另一個地址。這不是真的,它們消耗先前交易的特定輸出,並將它們合併並拆分為新的輸出。

您提到的-txindex選項增加了驗證引擎維護的另一件事:

  • 一個數據庫,其中包含每個事務在磁碟上的位置,由 txid 索引。

添加此功能是為了使該getrawtransaction命令適用於歷史交易,但同樣,這與地址無關。按地址索引 UTXO 設置的數據庫,甚至按地址索引整個區塊鏈歷史的數據庫是可能的,但維護成本相對較高,並且對於正常操作來說不是必需的(儘管它對調試非常有用。 ..)。

這些東西屬於哪裡,就在錢包裡。參考客戶端提供的錢包不使用“地址餘額”——而是將地址視為錢包的入口點,而是將整個錢包中的硬幣一起管理,無論它們最後發送到哪個地址。這也讓那些習慣於查看類似區塊瀏覽器的網站的人感到困惑,因為他們意識到例如更改總是發送到一個新地址。

所以,給出一個真實的答案:如果你真的想追踪餘額,你需要錢包介面。目前,這是相當不靈活的,但有計劃很快改善這種情況。我們有望很快獲得對多個錢包和僅限手錶的錢包的支持,您可以在其中添加您想要跟踪的地址,而無需擁有他們的密鑰。

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