[閒聊] BTC/BCH 全節點 節省硬碟空間模式 無法匯入錢包?

作者: kugwa (kugwa)   2019-09-08 16:41:05
根據白皮書第七節 Reclaiming Disk Space
理論上 全節點可以丟棄已經被花掉的交易 不影響以後的驗證
(不可能有新交易指向已經被花掉的交易 所以丟棄當然不影響驗證
但如果單純想查被丟棄的交易的詳細資料 那當然找不到了)
而這個功能實際上在比特幣全節點軟體裡也有支援
只要在啟動全節點時加上「-prune=N」的參數即可 N的單位是MiB
意思是你只想要保留最新N MiB的區塊資料 更舊的就丟棄
N最小可以設550 這樣的話硬碟上的raw block data就會維持在550 MiB
(不包含目前大約4 GB的UTXO資料庫chainstate
4 GB + 550 MiB -> 整個比特幣節點軟體大約固定佔用5 GB的硬碟空間)
更詳細的說明在0.11版的release notes
https://tinyurl.com/obc8mhb
(BTC從0.11版開始支援 BCH是之後才分叉出去所以應該也有)
如果有需要跑全節點 但又不想佔太多硬碟空間
就可以啟用這種block file pruning模式
不跑的時候也可以把上述5 GB整個備份
等哪天又有需要再把這5 GB拿回來用
這樣的話只要補驗證這段時間錯過的區塊即可
不用從頭驗證幾百GB的區塊鏈
而且因為都是親自驗證 所以也沒有需要信任別人的問題
當然如果有人想跑全節點但又懶得親自從頭驗證
直接跟你要這5 GB來用(我不知道會不會有這種需求)
那他就必須信任你了
理論上 開啟prune mode的全節點 功能依然完整(問題只在於有無實作)
上面提到沒辦法查詢被丟棄的交易
其實只要跟「保留該交易的節點」要就好了
拿到的交易只要hash值能一路串到merkle root
就能證明它確實存在於區塊裡 依然沒有信任問題
這就跟SPV的原理一樣
只能感嘆聰神的強大
目前要注意的一點
就是全節點在prune mode下似乎無法匯入錢包
這點在0.11版release notes也有提及
這也是「理論上不是問題但目前尚未實作」
(不太懂技術上的難點在哪
源碼在src/wallet/rpcdump.cpp importwallet函數
這次應該不是BTC的鍋 因為BCH的這段源碼也差不多)
我以前用dumpwallet備份了文字檔錢包 裡面的BTC大約值1 USD
現在想importwallet回來居然跳錯
「Importing wallets is disabled in pruned mode」
手邊沒有以前的wallet.dat可以測試
不知道直接複製貼上整個wallet.dat而非透過RPC來弄 是否可行
希望有大大能解惑:
1. 目前prune mode下是否真的無法匯入錢包
2. 我的dumpwallet裡的BTC還有救ㄇ 看不懂裡面的私鑰格式
感謝~
作者: kugwa (kugwa)   2018-09-08 16:41:00
SL:qq2vtymc5syylwfda7rwfanx2pmhvls46gwrnepsh2
作者: DarkerDuck (達克鴨)   2019-09-08 16:42:00
推推~~在prune mode下匯入錢包會需要重爬一次完整區塊鏈啊但是就被prune掉了,當然就無法進行
作者: kugwa (kugwa)   2019-09-08 16:46:00
理論上只要有當前UTXO set 就沒問題不是嗎?我的錢包裡都是還沒花掉的
作者: DarkerDuck (達克鴨)   2019-09-08 16:49:00
匯入不同的錢包,不同地址要重新驗證交易啊沒有區塊鏈歷史資料,沒辦法重新驗證啊除非跟SPV節點一樣再重新跟其他完整節點要dumpwallet出來的私鑰就原始格式而不是WIF或是BIP39格式
作者: kugwa (kugwa)   2019-09-08 16:55:00
為啥需要重新驗證交易錢包裡的地址 如果是沒花掉的 應該要能在UTXO裡match到?UTXO屬於chainstate的一部分 是自己跑過的 沒有信任問題吧
作者: DarkerDuck (達克鴨)   2019-09-08 16:56:00
這是為了產生交易歷史,假如你只要最後的餘額那當然是只要UTXO就已經足夠了但我實際重新匯入過錢包,他會重新產生交易歷史資料庫因此會重新驗證交易才能重新產生整個交易歷史至於為什麼一定要重新產生交易歷史才行這可能就要去問Core開發者了,他們思維跟一般人不一樣
作者: kugwa (kugwa)   2019-09-08 16:58:00
原來如此但我根本不需要交易歷史啊xdddd我只要能提出裡面的BTC 把他轉走而已或是不知道有沒有SPV錢包認得dumpwallet格式只要能動到裡面的BTC 任何方法都行~除了重新驗證整條區塊鏈這個方法之外
作者: DarkerDuck (達克鴨)   2019-09-08 17:05:00
blockchain.info網站錢包我有匯入過原始私鑰,可用
作者: kugwa (kugwa)   2019-09-08 20:56:00
剛剛產生一個私鑰 來測試匯入到blockchain.info錢包真的可以用 感謝剛剛才搞懂 我的dumpwallet檔案 裡面的私鑰原來是WIF格式只是blockchain.info可以吃WIF和原始私鑰
作者: DarkerDuck (達克鴨)   2019-09-08 20:57:00
不過blockchain.info的安全性沒很好,匯入後就可轉出
作者: kugwa (kugwa)   2019-09-08 20:58:00
對 所以我剛剛是用沒錢的私鑰來測感覺沒什麼SPV錢包可以直接匯入私鑰 都要認他們自己的格式要碼就是seed phrase 要碼就是錢包自己認得的格式這樣要在不同錢包之間轉換有點困難
作者: DarkerDuck (達克鴨)   2019-09-08 21:22:00
https://bitcoinelectrum.com/importing-your-privateWIF格式的話,用Electrum也可以直接匯入
作者: kugwa (kugwa)   2019-09-08 21:40:00
這個好~
作者: DarkerDuck (達克鴨)   2019-09-09 04:30:00
773字 * 7星 = 5411 PCHhttps://tinyurl.com/y6mnldwg

Links booklink

Contact Us: admin [ a t ] ucptt.com