Watch-Only

如何使 ImportMulti 功能類似於 ImportAddress 用於放置在帳戶中的僅觀看地址?

  • July 10, 2018

我的問題是:我想使用 ImportMulti 導入一長串僅限觀看的地址。但是,與 ImportAddress 不同,我看不到任何將這些地址放入特定“帳戶”的方法。這甚至可能嗎?

更新:經過更多研究,在我看來,“標籤”的概念與“帳戶”基本相同。它是否正確?對我來說似乎有點困惑。如果是這種情況,那麼 ImportMulti 可以通過使用“標籤”屬性按我的意願工作。

在使用 ImportMulti 和 ImportAddress 進行一些 RPC 函式呼叫測試後,我有信心回答我自己的問題。

舉例來說,假設我想導入一個僅限觀看的地址“1CxZZZREDACTEDYYYYREDACTEDxyzabcD1”:

使用“導入地址”:

bitcoin-cli importaddress  1CxZZZREDACTEDYYYYREDACTEDxyzabcD1 "Account XYZ" true

使用“ImportMulti”:

bitcoin-cli importmulti '
 [
   {
     "scriptPubKey" : { "address": "1CxZZZREDACTEDYYYYREDACTEDxyzabcD1" },
     "timestamp" : 1510387200,
     "label" : "Account XYZ"
   }        
 ]' '{ "rescan": true }'

得到教訓:

Label vs Account : ImportAddress 中的“account”參數與 ImportMulti 中的“label”屬性具有相同的效果。他們都只是用友好的文本標記比特幣地址(在我的例子中,“帳戶 XYZ”)。

重新掃描和時間戳:如果您在 ImportAddress 中將“重新掃描”設置為 true,那麼它將從頭開始重新掃描整個區塊鏈。但是,如果您使用 ImportMulti 將“重新掃描”設置為 true,那麼它只會重新掃描到您的 JSON 編碼地址對象列表中最早的“時間戳”值。請注意,我使用以下 Linux 命令生成我的時間戳值 1510387200:

$ date -d "Nov 11 2017" +%s
$ 1510387200

概括:

您可以使用 ImportMulti 執行與 ImportAddress 相同的操作,知道在 ImportMulti 中,每個 Import 對象的“label”屬性與 ImportAddress 中的“account”參數含義相同。此外,ImportMulti 更強大,因為您可以指定每個地址的創建時間戳,從而更快地“重新掃描”。

如果我在這裡寫的任何東西是錯誤的,請糾正我。

如果您在 Javascript 中的 Date 對像中使用 getTime() 方法,則會生成一個時間戳,該時間戳是從 Unix 紀元開始的MILLISECONDS而不是**SECONDS的數量。**因此,要使 importmulti 呼叫正常工作,請去除 Javascript 中生成的時間戳的最後 3 個數字,否則 bitcoind 會認為是未來日期,它將用“現在”替換這個時間戳,這只會重新掃描目前最佳區塊鏈的 10 到 13 個塊高度。

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