Treat wallet as a generic keystore #6

issue davout opened this issue on December 20, 2010
  1. davout commented at 12:29 PM on December 20, 2010: none

    Actually it would be even nicer if we could treat our wallet.dat file as a generic keystore, importing and exporting keys. This would allow merging and splitting of wallets as well, besides signatures as suggested above.

    See : http://www.bitcoin.org/smf/index.php?topic=2373.0

  2. cdecker commented at 1:34 PM on December 20, 2010: contributor

    We already have generic keystores on Linux machines, why not adapt Bitcoin to use them and provide a really simple one for systems that do not provide their own?

  3. gavinandresen commented at 1:45 PM on December 20, 2010: contributor

    See my python bitcointools for code that can read and write the key/value pairs in wallet.dat (fixwallet.py reads the wallet and writes out a new wallet, leaving out any keys that seem to be mis-formatted).

    Merging wallets is hard because you have to teach bitcoin to re-scan the block chain for transactions to or from keys you just imported.

  4. cdecker commented at 1:49 PM on December 20, 2010: contributor

    Just delete all the block data and redownload the block chain.

  5. davout commented at 5:32 PM on December 20, 2010: none

    Deletion is not necessary, doesn't it already happen anyway when wallet is replaced ?

  6. mndrix commented at 6:00 PM on February 9, 2011: contributor

    Easy import and export of keys would make it easier for trusted vendors to sell Bitcoin stored-value cards (USB sticks, mini CDs, etc) with a private key on them. The buyer then just imports the private key from the card.

    Easy import/export also addresses parts of issue #2

  7. gasteve commented at 4:32 AM on February 28, 2011: none

    Easy import/export is an important feature for the day when transactions are no longer free on the network. People won't want to pay transaction fees when consolidating or moving btc value between different wallets they own. Also, easy import/export should be treated like moving (rather than copying) to prevent keys from ending up in multiple, concurrently active wallets (backup should be used for ensuring you don't lose keys).

    I think I'll create a separate issue for this (since it is straying from this topic).

    As for treating the wallet as a generic key store or using existing key store solutions, I think it's better to stay away from that in the short term. That could pose quite a few technical and integration challenges, and if not done very carefully, could pose a security risk (you would be putting bitcoin users at the mercy of third party key storage solutions that may or may not be very well implemented).

  8. alexwaters commented at 6:46 AM on September 6, 2011: contributor

    #220 wallet import and export should resolve this issue, please contribute to that thread.

  9. alexwaters closed this on Sep 6, 2011

  10. laanwj referenced this in commit b9e80983a5 on Sep 18, 2011
  11. sipa referenced this in commit 16fbc0f281 on Jun 2, 2013
  12. nelisky referenced this in commit 8b3530d21a on Aug 8, 2013
  13. kac- referenced this in commit 5d63ba21c6 on Mar 25, 2014
  14. justmoon referenced this in commit e40837da51 on Apr 7, 2014
  15. kac- referenced this in commit 35f0a4e2e9 on Oct 8, 2014
  16. braydonf referenced this in commit 508bedaae0 on May 10, 2016
  17. AkioNak referenced this in commit bf226befaf on Jul 24, 2017
  18. laanwj referenced this in commit b13a68e129 on Aug 2, 2017
  19. fametrano referenced this in commit ecbd242045 on Aug 4, 2017
  20. JeremyRubin referenced this in commit 7f378349b2 on Aug 9, 2017
  21. MarcoFalke referenced this in commit 2151c25dca on Sep 29, 2017
  22. Anfauglith referenced this in commit 222b328a4b on Oct 26, 2017
  23. classesjack referenced this in commit a1f4b4cbcf on Jan 2, 2018
  24. HashUnlimited referenced this in commit fb8585691c on Mar 9, 2018
  25. KrzysiekJ referenced this in commit 5e670fdb0c on Mar 28, 2018
  26. effectsToCause referenced this in commit c3686e6d08 on Jun 22, 2018
  27. MarcoFalke referenced this in commit 4d550ffab6 on Jul 30, 2018
  28. Empact referenced this in commit 2a3aa4350e on Aug 1, 2018
  29. hashtobewild referenced this in commit f7d07449a3 on Aug 26, 2018
  30. dooglus referenced this in commit f1f88bed2e on Oct 20, 2018
  31. cryptapus referenced this in commit 545fadbc57 on Jan 12, 2019
  32. DigiGreenCoin referenced this in commit 15e2eddfd7 on Oct 29, 2019
  33. sipsorcery referenced this in commit e9c85bb139 on Nov 7, 2019
  34. MarcoFalke referenced this in commit cf43f3f0a8 on Dec 5, 2019
  35. Warchant referenced this in commit 7958da26e8 on Dec 31, 2019
  36. laanwj referenced this in commit 66480821b3 on Feb 10, 2020
  37. laanwj referenced this in commit 31bdd86631 on Jul 15, 2020
  38. KolbyML referenced this in commit 574a08d376 on Sep 4, 2020
  39. laanwj referenced this in commit 924a4ff7eb on Oct 29, 2020
  40. jonasschnelli referenced this in commit c33662a0ea on Dec 2, 2020
  41. laanwj referenced this in commit e520e091db on Jan 6, 2021
  42. MarcoFalke referenced this in commit 590e49ccf2 on Apr 4, 2021
  43. MarcoFalke referenced this in commit bce09da122 on Apr 28, 2021
  44. fanquake referenced this in commit fa00bb2c5c on Apr 29, 2021
  45. MarcoFalke referenced this in commit eb9a1fe037 on May 7, 2021
  46. laanwj referenced this in commit ee9befe8b4 on May 12, 2021
  47. MarcoFalke referenced this in commit c857148636 on May 15, 2021
  48. rajarshimaitra referenced this in commit f991d5cf2e on Aug 5, 2021
  49. DrahtBot locked this on Sep 8, 2021
Linked (view graph)
#340 bug introduced in 0.3.23, crash when no network interfaces up.#447 RPC 'sendfrom' with invalid address crashes bitcoind#672 bitcoin-qt crashes in db on startup#737 Deadlock during startup (Appears to be AddAddress / DNSSeed related)#982 Startup blocks on mutex at "Loading Addresses"#999 v0.6.0rc5 segfault on initial blockchain download when out of diskspace#1065 addrMan crash on CentOS#1098 segfault in qrcode message dialog#1156 Addrman crash#1182 bitcoin-qt usually SEGVs when exited using unix signals#1294 NULL ptr deref when press Ctrl+C right after starting bitcoind#1472 detachdb - coredump backtrace#1505 Boost exceptions in ReadConfigFile() not caught#2397 ReserveKeyFromKeyPool(): read failed#2416 Bitcoind aborts on startup: ./db/skiplist.h:152 Assertion `n >= 0' failed.#2472 System error: database corrupted: void boost::recursive_mutex::lock(): Assertion `!pthread_mutex_lock(&m)' failed#3997 crash in CMerkleTx::GetDepthInMainChainINTERNAL()#4410 bitcoin-qt core dumping#4499 Watchonly code: cs_main lock not held#4502 GetMyExternalIP hangs shutdown when waiting for response#4995 null pointer of pindexPrev crash.#5330 cs_main lock not held when reindexing blocks on disk?#5698 Code vulnerable to segfault after a network fork#5795 Bizarre test_bitcoin crash, but passes in debugger#5910 Gitian 64-bit bitcoin-qt segfaults on Ubuntu 14.04#6332 Segmentation fault on bitcoind or bitcoin-qt startup (64bit Linux)#6411 connection limit calculation for select() is overly ambitious with -txindex#6540 scheduler_tests (currently disabled) occasionally deadlocks#6775 Bitcoind v0.11.0 segfaults on startup trying to read wallet.#8984 GUI hangs during sync#9348 Node crashed with assertion failure in network code#9687 bitcoin-qt crashed in FinalizeNode()#9759 Setting -maxsigcachesize to zero causes segfault#9881 v0.14.0rc2 crash on shutdown#9883 [Qt] Segfault on startup#9997 Running out of disk space during GUI init results in hang and non-drawing windows#10209 Stalled shutdown#10210 Frozen (for 15 minutes) on shutdown [dnsseed thread]#10293 SEGV in segwit fundrawtransaction#10611 Gitian build (current master) crashes on OSX#10861 Segfault on shutdown after pressing 'q' to postpone utxo db upgrade#11355 LevelDB read failure: Corruption: block checksum mismatch#11763 deadlock on shutdown#12038 deadlock on database corruption#12229 Shutdown deadlock in SyncWithValidationInterfaceQueue#12279 shutdown took 8 minutes in v0.15.0.1#12690 LevelDB "corrupted compressed block contents" errors#12915 Segmentation fault in util: ScheduleBatchPriority#12943 Segfault on startup at a04440#13316 make check fails for configure option --with-incompatible-bdb and Berkeley DB 5.3#13806 qa: Fix bench/block_assemble assert failure#14330 [tests] segfault during`DEBUG=1` run of existing_data_no_obfuscate locally#14349 mac: make check failure on macOS 10.14#14359 bitcoin-qt hangs in futex() / __cxa_guard_acquire()#14754 bitcoin-qt hangs on startup on Ubuntu 18.10/Debian Buster#14842 segfault in bench_bitcoin if configured using --with-libs=no#14923 segmentation fault on gui startup#14967 TSAN issue in cuckoocache_erase_parallel_ok test after 14935#15227 bitcoind terminated with uncaught exception if configure --debug-enabled#15300 rpc: segfault if combinepsbt called with empty inputs#15310 gui: crash if encrypt / change passphrase window is open and wallet is unloaded#15379 bitcoind crashes after exception in scheduler thread#15674 Segmentation fault on Ubuntu Linux with trickle#15819 macOS: crash while loading wallet with berkeley-db@4#16307 scheduler: crash after releasing wallet#16815 wallet: CPU use proportional to wallet transaction count when idle#16875 gui: Avoid calling processEvents#16904 Bus error (core dumped) after "Using obfuscation key for" log line#17540 ci build fails in ./qt/test/test_bitcoin-qt on aarch64 native tsan#17620 MemorySanitizer complains about unitialized variable in RPC method names#17627 Suppress false positive warning about uninitialized entropy buffers#17674 tests: Add initialization order fiasco detection in Travis#17729 Fuzzing Bug undefined-behavior pubkey.cpp:210:38#18046 Some fuzzing crashes when running under ASan and/or UBSan#18090 gui: Crash if shutdown during processNewTransaction#18362 gui: segfault unloading and immediately reloading wallet with gui#18372 sanitizer: heap-use-after-free in checkinputs_test#18706 crash briefly after launching binaries compiled using --without-gui and --with-incompatible-bdb#18762 fuzz: AddressSanitizer: SEGV on unknown address in /strprintf#18763 fuzz: AddressSanitizer: container-overflow in /script fuzzer#18913 ci: fuzz/process_message fails#18924 QT Crash when using open wallet dialog#18948 qt: Call setParent() in the parent's context#19024 UB: double lock of mutex in init.cpp#19049 test: Potential deadlock in wallet_tests/CreateWalletFromFile#19211 feature_reindex.py triggers data race#19236 Strange behaviour when importing `pk()` descriptors, changed from 0.19 to 0.20#19353 Fix mistakenly swapped "previous" and "current" lock orders#19417 Intermittent CI failure: ThreadSanitizer failure (data race) when running wallet_multiwallet.py --usecli#19448 qa: Data race detected when running `mempool_expiry.py`#19678 UBSan warning when fuzzing with -fsanitize=integer#19715 ThreadSanitizer: data race in feature_reindex.py#19789 fuzz: ASAN complaint on macOS with -fsanitize=fuzzer,address,undefined#19955 test: Potential deadlock in wallet_tests#20163 TSAN race after merge of #20090#20242 fuzz: Properly initialize PrecomputedTransactionData#20334 ci: fuzz/decode_tx fails#20542 Unexpected test fail: wallet/wallet.cpp:3113:51: runtime error: division by zero#20618 Data race in interface_zmq.py#20844 test: Add sanitizer suppressions for AMD EPYC CPUs#21466 Avoid use of "socket" syscall when formatting IP addresses in CNetAddr::ToString#21479 fuzz: UndefinedBehaviorSanitizer warnings in netbase.cpp#21584 Fix assumeutxo crash due to invalid base_blockhash#21586 test: Add missing suppression for signed-integer-overflow:txmempool.cpp#21605 wallet: Segmentation fault during sync#21632 MemorySanitizer: use-of-uninitialized-value in sqlite3BtreeOpen#21773 fuzz: Ensure prevout is consensus-valid#21802 refactor: Avoid UB in util/asmap (advance a dereferenceable iterator outside its valid range)#21948 test: Fix off-by-one in mockscheduler test RPC#22233 fuzz: UndefinedBehaviorSanitizer warnings in consensus/tx_verify.cpp#22537 UndefinedBehaviorSanitizer: implicit-integer-sign-change consensus/tx_verify#22548 CheckQueue_Correct_Random data race#22588 Cirrus CI showed error in netaddress.cpp file when checking PR#22592 LeakSanitizer detects memory leak if CDBWrapper ctor fails#23160 test_bitcoin-qt error: "Unable to init server: Could not connect: Connection refused"#23248 Bitcoin Core crashes under clang-13 libc++ with "Bad system call (core dumped)"#23321 bitcoind segfault's while loading tr descriptor on regtest v22.0#23539 Descriptor Checksum Inconsistency#24290 segfault when compiled with depends DEBUG=1 and libc++#24340 util: Add missing unlinkat to syscall sandbox#24426 test: Fix intermittent Tsan issue#24819 data race in SimpleRoundTripTest logging for macOS#25077 Fix chain tip data race and corrupt rest response#25146 Starting with an unsupported wallet configured leads to a segfault (master only?)#25323 miniscript fuzzer failing after qa-assets update#25365 ThreadSanitizer: data race on vptr (ctor/dtor vs virtual call) in BaseIndex#25632 SUMMARY: ThreadSanitizer: SEGV src/index/base.cpp:388:9 in BaseIndex::SetBestBlockIndex(CBlockIndex const*)::$_1::operator()() const#25692 psbt.h:896:51: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'unsigned long'#25824 UndefinedBehaviorSanitizer: stack-overflow in miniscript (descriptor_parse)#25857 IBD core dumped during recursive call to CCoinsViewCache::FetchCoin (while connecting best chain tip)#25985 Revert "build: Use Homebrew's sqlite package if it is available"#26068 Segmentation fault in the scheduler thread when an index fails to commit to the db#26274 bitcoind dumps core when deriveaddresses is called with index 2147483647 (2^31-1)#26477 validation: fix broken maxtipage comparison#27222 test: use-of-uninitialized-value in sqlite3Strlen30#27235 Avoid integer overflow in CheckDiskSpace#27354 wallet: Data race in GetOrCreateLegacyScriptPubKeyMan vs IsMine#27355 index: ThreadSanitizer: data race on vptr #27360 ci: use LLVM/clang-16 in native_asan job#27492 ci: failure in Docker build step#27582 TSAN: lock-order-inversion (potential deadlock) in ZapSelectTx test#27922 ci: fix llvm-symbolizer in MSAN jobs#27924 fuzz: banman, Assertion `banmap == banmap_read' failed#28510 migratewallet crashes on an freshly created datadir ( wallet/wallet.h:959: int wallet::CWallet::GetLastBlockHeight() const: Assertion `m_last_block_processed_height >= 0' failed.)#28570 fuzz: msan fuzz CI currently broken on x86_64#28665 'std::out_of_range' crash in I2P fuzz test#28917 fuzz, parse_iso8601: attempt to dereference an end-of-stream istreambuf_iterator#28918 fuzz, coinselection: Assertion 'result_bnb->GetChange(coin_params.m_cost_of_change, CAmount{0}) == 0' failed#28966 test: Add missing CBlockPolicyEstimator::processBlockTx suppression#28969 fuzz: Avoid signed-integer-overflow in wallet_notifications fuzz target#29153 new crash in v26.0#29178 ubsan: misaligned-pointer-use in crc32c/src/crc32c_arm64.cc#29767 ThreadSanitizer: data race src/flatfile.cpp:47:13 in FlatFileSeq::Open(FlatFilePos const&, bool)#29908 test: SegFault in `ismine_tests` on SunOS / illumos#30057 ci: msan use-of-uninitialized-value when -jobs=1 (or higher)#30284 Mini miner `AncestorFeerateComparator` Signed Integer Overflow#30402 Illegal Instruction in `CoinStatsIndex::CustomAppend`#30760 ci: fuzz_msan failed with ==4201==WARNING: MemorySanitizer: use-of-uninitialized-value #0 0x55f0c9bdeffb in SetArgs#30792 ci: failure in win64 unit tests `err:virtual:virtual_alloc_first_teb wine: failed to map the shared user data: c0000018\n0444:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.\n0444:err:winediag:nodrv_CreateWindow L"Make sure that your X server is running and that $DISPLAY is set correctly."`)#30969 win64-cross CI timeout: `wine: chdir to /tmp/wine-JFrcnM/server-30-e86edd : No such file or directory`; `01e0:err:module:relocate_ntdll ntdll could not be mapped at preferred address (0x320000), expect trouble`#31203 fuzz: fix `implicit-integer-sign-change` in wallet_create_transaction#31234 fuzz: connman target: terminate called after throwing an instance of 'std::bad_alloc'#31618 multiprocess: `ipc_tests` fail on *BSD#31921 intermittent ipc_tests (Timeout)#32089 Failure to run Fuzz tests when running with corpus#32111 wallet: migratewallet crashes "Assertion `m_wallet_flags == 0' failed"#32112 wallet: migratewallet crashes "Assertion `legacy_spkm' failed"#32173 validation: `CheckBlockIndex` crashes during block reconsideration#32558 intermittent issue in qt addressBookTests: (table_view->model()->rowCount()): [3 != 2] Loc: [./qt/test/addressbooktests.cpp(183)]#32780 lsan: add more Qt suppressions#32957 SegFault in QSortFilterProxyModelPrivate::build_source_to_proxy_mapping#33063 util: Revert "common: Close non-std fds before exec in RunCommandJSON"#33097 fuzz: `txgraph`: Assertion `cmp == 0' failed#33150 intermittent TSAN failure in lockmanager_tests::blockmanager_readblock_hash_mismatch#33245 integer sanitizer warning, when running with -natpmp=1 enabled#33277 intermittent Segmentation fault in mptest IPC path (callFnAsyncParams)#33548 `test_bitcoin-qt`: segfault under LTO (CMAKE_INTERPROCEDURAL_OPTIMIZATION=ON)#33949 ubsan: add another suppression for InsecureRandomContext#33964 Startup crash on macOS with GCC 15.2: `std::source_location::file_name()` is `nullptr`#34014 mptest hangs, when run in a loop#34109 refactor: Use uint64_t over size_t for serialize corruption check in fees.dat#34110 scriptpubkeyman fuzz target creates Base58 too large; Fails on 32-bit (armhf, ...)#34645 oss-fuzz: coins_view_overlay: ASSERT: m_dirty_count == 0#34655 fuzz: keep `coins_view` fuzzers within caller contracts#34711 src/ipc/libmultiprocess/src/mp/proxy.cpp:416:44: runtime error: member access within null pointer of type 'mp::Waiter'#34732 i386 segv in #0 0xf7a49ce0 in kj::operator*(kj::_::Stringifier, kj::Exception const&) (/lib/i386-linux-gnu/libkj-1.1.0.so+0x38ce0)#34734 test: Fix shutdown vptr race in BlockFilterIndexSync bench#34756 ipc: AddressSanitizer: SEGV nptl/pthread_mutex_lock.c:80:23 in __pthread_mutex_lock#34777 ipc: AddressSanitizer: heap-use-after-free in `capnp::CallContext<ipc::capnp::messages::BlockTemplate::GetBlockParams, ipc::capnp::messages::BlockTemplate::GetBlockResults>::getParams()`#34782 mptest: mp::CancelMonitor: AddressSanitizer: stack-use-after-return#34988 rpc: fix initialization-order-fiasco by lazy-init of decodepsbt_inputs

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-05-03 15:16 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me