<feed xmlns='http://www.w3.org/2005/Atom'>
<title>npub1q9geyrch3feyczz242sxjaa05yczv50dlpug082sjln2kl0wrnxst0nrfa/bitflash/src/walletcmd.cpp, branch main</title>
<subtitle>[no description]</subtitle>
<id>https://upleb.uk/npub1q9geyrch3feyczz242sxjaa05yczv50dlpug082sjln2kl0wrnxst0nrfa/bitflash/atom?h=main</id>
<link rel='self' href='https://upleb.uk/npub1q9geyrch3feyczz242sxjaa05yczv50dlpug082sjln2kl0wrnxst0nrfa/bitflash/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1q9geyrch3feyczz242sxjaa05yczv50dlpug082sjln2kl0wrnxst0nrfa/bitflash/'/>
<updated>2026-08-19T12:30:40+00:00</updated>
<entry>
<title>gui/wallet: name backups by backend, and stop saying "wallet.dat" for phrase gaps</title>
<updated>2026-08-19T12:30:40+00:00</updated>
<author>
<name>bitflash</name>
<email>dev@bitflash.network</email>
</author>
<published>2026-08-19T12:30:40+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1q9geyrch3feyczz242sxjaa05yczv50dlpug082sjln2kl0wrnxst0nrfa/bitflash/commit/?id=cf155d40ddd260975240e72b5e72cd3decc30291'/>
<id>urn:sha1:cf155d40ddd260975240e72b5e72cd3decc30291</id>
<content type='text'>
Two things that read wrong once the wallet is on SQLite:

- The Wallet Safety backup dialog defaulted the file name to .dat, but
  BackupWallet copies wallet.sqlite under the SQLite backend -- so the
  suggested name put SQLite contents in a wallet-backup-*.dat file. The
  default now matches the live backend (.sqlite on SQLite, .dat on BDB).

- The recovery audit called coins on non-phrase keys "wallet.dat-only" and
  told the user to "keep wallet.dat backups". Under SQLite those coins live
  in wallet.sqlite, not wallet.dat. Reworded to the backend-neutral truth:
  "not phrase-backed" balance, and "keep a file backup of this wallet" --
  accurate on either backend. Same wording in the CLI -recoveryaudit and
  the GUI Wallet Safety panel.

Display/naming only; audit numbers and BackupWallet are unchanged. All 13
wallet suites still pass.
</content>
</entry>
<entry>
<title>gui: offer to convert a Berkeley DB wallet to SQLite on first run</title>
<updated>2026-08-18T19:26:34+00:00</updated>
<author>
<name>bitflash</name>
<email>dev@bitflash.network</email>
</author>
<published>2026-08-18T19:26:34+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1q9geyrch3feyczz242sxjaa05yczv50dlpug082sjln2kl0wrnxst0nrfa/bitflash/commit/?id=477d57b9a01102b6f79ad9b10b2dcfd280faa1cb'/>
<id>urn:sha1:477d57b9a01102b6f79ad9b10b2dcfd280faa1cb</id>
<content type='text'>
A first-run dialog for an existing wallet.dat with no backend choice yet:
"Convert to SQLite" exports the wallet and records the sqlite marker so
the next start opens it; "Keep Berkeley DB" records that choice so the
offer does not return; "Decide later" leaves no marker and asks again.
wallet.dat is never touched, and the change takes effect on restart --
matching the restart-to-apply model.

The conversion itself is DoConvertWalletToSQLite(), a headless-testable
function the button calls: it reuses the export path (extracted as
ExportActiveWalletToSQLite, shared with -walletsqliteexport, which keeps
its own specific messages), refuses if already on SQLite or if a
wallet.sqlite exists, and writes the marker only after a verified export.

New wallet-convert self-test proves the action end to end: build a
Berkeley DB wallet, convert, and confirm wallet.sqlite + the marker are
written, wallet.dat is left untouched, a second convert refuses, and a
flagless restart opens the converted SQLite wallet with its phrase intact.
All wallet suites pass. The modal itself is thin UI over this tested
action.
</content>
</entry>
<entry>
<title>wallet: encrypt atomically under the SQLite backend</title>
<updated>2026-08-18T17:23:38+00:00</updated>
<author>
<name>bitflash</name>
<email>dev@bitflash.network</email>
</author>
<published>2026-08-18T17:23:38+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1q9geyrch3feyczz242sxjaa05yczv50dlpug082sjln2kl0wrnxst0nrfa/bitflash/commit/?id=e58c4022e0ddd137b93cdb3464753bef5df1d456'/>
<id>urn:sha1:e58c4022e0ddd137b93cdb3464753bef5df1d456</id>
<content type='text'>
EncryptWallet() had only a Berkeley DB path: it rebuilt a wallet.dat temp
file and swapped it in. Under -walletbackend=sqlite that was wrong -- it
would leave the live wallet.sqlite unencrypted and write a divergent
wallet.dat instead. Add a SQLite persistence branch that rebuilds a fresh
wallet.sqlite in one transaction (public records copied from the live
store, encrypted key material serialized byte-for-byte the way the BDB
path writes it), checkpoints it, and swaps it in with a .before-encrypt
backup, mirroring the BDB rename dance. A fresh file rather than an
in-place rewrite keeps the change atomic and leaves no plaintext key in a
freed page.

CmdEncryptWallet skips PurgeDbEnvironmentLogs under SQLite (no Berkeley DB
environment behind the wallet) and reports the backend it used.

New wallet-sqlite-encrypt self-test drives the real command path in child
processes: export a wallet to SQLite, encrypt it through
-walletbackend=sqlite, and prove it comes out encrypted, unlockable with
the right passphrase, refusing the wrong one, with its recovery phrase
intact and the original wallet.dat left untouched.
</content>
</entry>
<entry>
<title>wallet: check SQLite exports against loader types</title>
<updated>2026-08-14T20:44:09+00:00</updated>
<author>
<name>Nsable-sh</name>
<email>nsable-sh@noreply.git.bitflash.network</email>
</author>
<published>2026-08-14T20:44:09+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1q9geyrch3feyczz242sxjaa05yczv50dlpug082sjln2kl0wrnxst0nrfa/bitflash/commit/?id=3e778dd6cc9045862e99503b5b9af80ec682826f'/>
<id>urn:sha1:3e778dd6cc9045862e99503b5b9af80ec682826f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wallet: clean up failed SQLite migrations</title>
<updated>2026-08-14T20:23:21+00:00</updated>
<author>
<name>Nsable-sh</name>
<email>nsable-sh@noreply.git.bitflash.network</email>
</author>
<published>2026-08-14T20:23:21+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1q9geyrch3feyczz242sxjaa05yczv50dlpug082sjln2kl0wrnxst0nrfa/bitflash/commit/?id=f7f9885e89e2c2527933b99ec713592ebf930483'/>
<id>urn:sha1:f7f9885e89e2c2527933b99ec713592ebf930483</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wallet: restore BDB wallets from SQLite exports</title>
<updated>2026-08-14T20:02:35+00:00</updated>
<author>
<name>Nsable-sh</name>
<email>nsable-sh@noreply.git.bitflash.network</email>
</author>
<published>2026-08-14T20:02:35+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1q9geyrch3feyczz242sxjaa05yczv50dlpug082sjln2kl0wrnxst0nrfa/bitflash/commit/?id=df129cc672b9b894ff2558d3e9361ddab082433d'/>
<id>urn:sha1:df129cc672b9b894ff2558d3e9361ddab082433d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wallet: verify SQLite wallet exports</title>
<updated>2026-08-14T19:47:43+00:00</updated>
<author>
<name>Nsable-sh</name>
<email>nsable-sh@noreply.git.bitflash.network</email>
</author>
<published>2026-08-14T19:34:43+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1q9geyrch3feyczz242sxjaa05yczv50dlpug082sjln2kl0wrnxst0nrfa/bitflash/commit/?id=99c6b5f2971da51cca1c739b5e982ae2022acc85'/>
<id>urn:sha1:99c6b5f2971da51cca1c739b5e982ae2022acc85</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wallet: export BDB records to SQLite</title>
<updated>2026-08-14T18:56:12+00:00</updated>
<author>
<name>Nsable-sh</name>
<email>nsable-sh@noreply.git.bitflash.network</email>
</author>
<published>2026-08-14T18:56:12+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1q9geyrch3feyczz242sxjaa05yczv50dlpug082sjln2kl0wrnxst0nrfa/bitflash/commit/?id=59b9d11015f0e3a2475d0750fc534583c2ca9f77'/>
<id>urn:sha1:59b9d11015f0e3a2475d0750fc534583c2ca9f77</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tests: prove wallet storage sanity failures</title>
<updated>2026-08-14T15:13:38+00:00</updated>
<author>
<name>Nsable-sh</name>
<email>nsable-sh@noreply.git.bitflash.network</email>
</author>
<published>2026-08-14T14:51:14+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1q9geyrch3feyczz242sxjaa05yczv50dlpug082sjln2kl0wrnxst0nrfa/bitflash/commit/?id=83b9c4feddeac14bbc5edf63b44d3a2013384ecc'/>
<id>urn:sha1:83b9c4feddeac14bbc5edf63b44d3a2013384ecc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wallet: add read-only record scan boundary</title>
<updated>2026-08-14T12:08:29+00:00</updated>
<author>
<name>Nsable-sh</name>
<email>nsable-sh@noreply.git.bitflash.network</email>
</author>
<published>2026-08-14T12:08:29+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1q9geyrch3feyczz242sxjaa05yczv50dlpug082sjln2kl0wrnxst0nrfa/bitflash/commit/?id=95bd9cbcb1d17f4bc6223e6bfe3a92bfb8c3067d'/>
<id>urn:sha1:95bd9cbcb1d17f4bc6223e6bfe3a92bfb8c3067d</id>
<content type='text'>
</content>
</entry>
</feed>
