Offline

如何安全地離線使用壓縮密鑰?

  • December 5, 2013

軍械庫很好地支持離線交易,但不支持壓縮密鑰。

存在許多其他創建離線交易的方法,但所有這些方法——我見過的每一種方法——都需要手動創建原始交易。以前這導致意外發送巨額費用,我看到人們說**“除非你是比特幣專家,否則不要**創建原始交易” 。

我不是比特幣專家,這是肯定的。如何確保離線創建“安全”交易?我看過 Brainwallet 和 Coinbase 的服務,這些是萬無一失的嗎?他們顯示了一些 JSON,但我不確定我是否會發現該 JSON 中是否有問題……

創建手動離線交易並不難,您只需要小心並考慮您在做什麼。

在繼續之前,請確保您擁有公共比特幣地址和私鑰。

這就是我要做的(假設你將一些 BTC 發送到一個地址,一些作為零錢返回給你自己,一些作為交易費)

  1. 創建可引導的 Live linux CD
  2. 下載<https://github.com/brainwallet/brainwallet.github.com/archive/master.zip>並將其保存到 USB 記憶棒中。
  3. 打開<https://blockchain.info/unspent?address=1publicbitcoinaddress>並將其粘貼到文本編輯器中
  4. 這(從 3 開始)是比特幣地址的所有未使用交易的列表,我喜歡手動選擇我想用作輸入的交易。例如。如果我想發送 1 個比特幣,我可能會參考 0.5 和 0.6 BTC 的交易,而不是 5BTC 的交易。
  5. 請記住,交易是比特幣的 1/100,000,000。
  6. 刪除您不想用作輸入的交易,為此,請從文本編輯器中刪除交易,包括“{”和“}”,
  7. 如果您刪除了列表中的最後一筆交易,請檢查最後一筆交易後是否沒有逗號。
  8. 使用 Brainwallet 程式碼將此文本文件的內容保存到 U 盤。
  9. 關機,斷開您的電腦與網路的連接,斷開硬碟驅動器並啟動到 live linux CD。
  10. 在網際網路瀏覽器中打開 Brainwallet 程式碼
  11. 如果您的私鑰以 5(未壓縮)或 L(壓縮)開頭,請跳至步驟 15。
  12. 您需要將您的私鑰轉換為以 5 或 L 開頭的格式。
  13. 如果它是 64 個字元的十六進制程式碼,請將其鍵入生成器選項卡的“秘密指數”部分並複制私鑰。
  14. 如果它是一個大腦錢包(密碼),在生成器選項卡的“密碼”部分輸入您的密碼並複制私鑰
  15. 轉到交易選項卡
  16. 輸入私鑰,當被要求下載交易歷史記錄時點擊取消(無論如何您都無法使用它)。
  17. 驗證“源地址”是您的比特幣地址
  18. 點擊“編輯輸入”並粘貼未使用交易的測試。
  19. 源地址旁邊的 BTC 框將更新以顯示您選擇的交易的價值 - 這是如果您弄亂交易費用,您將失去的比特幣數量,所以要小心。
  20. 從 19 中取出比特幣數量並減去您的交易費用(例如:0.0003) - 結果是您需要花費的 BTC 數量(包括零錢)。
  21. 將目標地址編輯為您要支付的地址並設置金額。
  22. 點擊 [+] 按鈕添加另一個目的地地址並輸入您的比特幣地址(用於更改)並將金額設置為 20 減去到您目的地的付款的結果。
  23. 現在,在計算器上,將兩個付款金額相加並加上您的交易費用。這應該與步驟 19 中參考交易中的金額完全匹配。
  24. 滾動到底部,然後點擊重新簽名。這簽署了交易。
  25. 將“原始交易”的內容複製到文本編輯器並將其保存到 U 盤
  26. 關閉,重新連接硬碟驅動器、網路並啟動。

您現在有一個尚未在比特幣網路上的簽名交易。您現在需要將其推送到比特幣網路。

我們將對交易進行最終測試。

  1. 訪問<https://blockchain.info/decode-tx>(標題應該是解碼原始交易)
  2. 粘貼原始交易並點擊“送出交易”
  3. 滾動到結果的底部並檢查以下內容:
  4. vout_sz 是目標地址的數量(不包括交易費用)
  5. hash 是可以在 blockchain.info 等上搜尋的交易雜湊(一旦送出)
  6. vin_sz 是您引用的輸入事務數
  7. out 包含部分(每個目標地址),因此請檢查“地址”值是您期望支付硬幣的值。
  8. 還將“價值”部分加起來除以 100,000,000 以獲得要發送的總比特幣(這與所有參考輸入之間的差額將作為採礦費支付)

如果您對上述檢查完全滿意,您現在可以廣播交易。

  1. 前往<https://blockchain.info/pushtx>(標題為廣播交易)
  2. 粘貼原始交易並點擊送出。
  3. 如果一切順利,它應該說“交易已接受”。

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