如何使 ImportMulti 功能類似於 ImportAddress 用於放置在帳戶中的僅觀看地址?
我的問題是:我想使用 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 個塊高度。