• v0.14.0 ee534b0f55

    btcbob released this 2026-09-26 13:51:52 +00:00 | 1 commits to main since this release

    The big change in this release is the wallet file. Read the first section before you upgrade.

    Your wallet is converted to a new format on first start

    Until now wallet.dat was a Berkeley DB file. From v0.14.0 it is an SQLite file. The records inside (keys, labels, watch-only addresses, transactions) are the same; only the file format around them changes.

    What happens the first time v0.14.0 starts with an old wallet:

    1. It reads your old wallet.dat without changing it.
    2. It writes every record into a new SQLite file, reads the new file back, and checks it against the original, byte for byte.
    3. It keeps your original file, unchanged, as wallet.dat.bdb-<number> in the same folder (the number is the time of the conversion).
    4. Only then does the new file take the name wallet.dat.

    The log says so in one line:

    Migrated wallet.dat to SQLite: 25 records written and verified byte for byte in 10ms; the Berkeley DB original is kept as wallet.dat.bdb-1790342535
    

    If any step fails, the node stops with an error and your original wallet.dat is left exactly as it was. Nothing is ever deleted. An encrypted wallet converts without asking for your passphrase, and the same passphrase unlocks it afterwards.

    Older versions cannot open a converted wallet. If you start v0.13.8 or earlier on it, it stops with wallet.dat corrupt, salvage failed. The file is not damaged and is not changed by that; the old version simply cannot read the new format.

    If you need to go back to an older version, you have two ways:

    • The kept original. Stop the node, move the new wallet.dat aside, and rename wallet.dat.bdb-<number> back to wallet.dat. Anything that happened in the wallet after the upgrade (new addresses, labels) is not in that file, although transactions to old addresses show up again after a rescan.
    • Export and import. On v0.14.0, dobbscoin-cli dumpwallet <file> writes every key and label to a text file. On the older version, start with a fresh wallet and run dobbscoin-cli importwallet <file>. That file holds your private keys in plain text: keep it somewhere safe and delete it when you are done.

    Back up before you upgrade anyway. The conversion keeps your original, but a backup on another disk is still the only thing that survives a lost disk. Wallets you back up with backupwallet from now on are SQLite files too.

    Other wallet changes

    • A damaged wallet stops the node instead of being quietly rewritten. The old version, on finding a damaged wallet file, salvaged whatever it could read and carried on. v0.14.0 stops and says so, and -salvagewallet is there when you choose to use it. -salvagewallet now keeps redeem scripts, watch-only addresses, labels and key metadata, not only keys, and a single bad record no longer costs every record stored beside it.
    • A write-protected wallet.dat is refused at startup with a message that says it cannot be written, instead of starting and failing at the first new address.
    • A symlinked wallet.dat stays where it is. If your wallet.dat is a link to another disk, the conversion and encryptwallet now work on the real file there, instead of replacing the link with a plain file in the data folder.
    • Every write is safe against a power cut. Each change is flushed to disk, including the folder entry, before it counts as done.
    • Refilling the keypool is fast. 1000 new keys went from about 6 seconds to a third of a second.
    • The wallet file code was checked with fuzzing (random and damaged files fed to it for hours) and a code review. Those found and fixed several problems before release, the worst being a damaged wallet that could load with an encrypted key missing and no error. None of these problems ever existed in a released version; they were all in the new code.

    Mining

    The built-in miner is much faster, solo and pool. It now hashes several nonces at once using the SIMD instructions of your processor: about 5 to 6 times faster on processors with AVX2, and 2 to 3 times faster on older ones that have only SSE2. It picks the fastest method your processor supports by itself, and the log says which one (Scrypt miner: using AVX2 (6-way)). To force one, start with -minerscrypt=generic, sse2, avx or avx2. Only the miner changed: block validation still uses the original scrypt code, and the miner checks every block it finds with that code before sending it.

    Network

    DNS seeds on a second domain. v0.13.8 added ten spare seed names, all on dobbscoin.info, so they shared one registrar and one renewal date. Five more now ship on 23skidoo.info, behind the same nodes:

    jhvh1.23skidoo.info
    dobbs.23skidoo.info
    eris.23skidoo.info
    connie.23skidoo.info
    nheeghee.23skidoo.info
    

    A new node has two independent ways to find the network by name. Seeds are not consensus.

    Fallback addresses that work. When no DNS seed answers, a node falls back to a built-in list of addresses. That list was still Bitcoin's from 2015 and reached no (BOB) node at all. It now holds the six public (BOB) nodes behind the DNS seeds.

    Downloads and installing

    The Linux builds no longer need libnatpmp or libminiupnpc (#45). Every Linux build since v0.13.5 failed on a system without those two packages, with error while loading shared libraries: libnatpmp.so.1. Both libraries are now built into the binaries. Port mapping (-mapport) works as before.

    Both Linux tarballs include dobbscoin-cli. The v0.13.8 daemon tarball shipped dobbscoind alone.

    A Windows installer. This release ships a setup.exe alongside the zip. It installs to Program Files\Dobbscoin: the wallet, a short readme and a plain-words license summary in that folder, the daemon and dobbscoin-cli in daemon, and two documents (files.md, tor.md) in doc. Its uninstaller removes everything it added to the registry. The installer shows "Bob" and the Dobbscoin coin; its images and icons had been Bitcoin's since an old code import. The zip is still there for people who would rather not install anything.

    The installer waits for a running wallet. If Dobbscoin is still running, the installer now says so before it copies anything and offers Retry and Cancel, instead of failing halfway with "Error opening file for writing". A silent install (/S) stops with an error code instead.

    License notices. COPYING now ends with a Third-party notices section for the code bundled into the programs. Every download carries it, the AppImage included.

    Updated Windows libraries: OpenSSL 3.5.8, Boost 1.83, Qt 5.15.19. The Windows programs need nothing but Windows itself. Every Windows program now reports its real version in its file properties (it used to say 0.13.0.0).

    For people who build from source

    • Berkeley DB is gone as a build dependency. The wallet needs SQLite (libsqlite3-dev) instead. Nobody has to build Berkeley DB 4.8 by hand anymore.
    • CMake builds the whole tree (#43), beside Autotools for this one release. Both produce the same code; Autotools is removed in the next release. BUILDING.md has copy-and-paste steps for Linux and for the Windows installer, and doc/build-cmake.md has every option.
    • qa/run-all.sh runs every test suite in one command: 26 suites, 0 failures.
    • The wallet file readers have libFuzzer harnesses; see doc/fuzzing.md.

    No consensus rules change in this release.


    Should you upgrade?

    Everyone, eventually. Future releases build on the new wallet format. Read the first section, make a backup, and upgrade when it suits you.

    Miners and pool operators: be on v0.13.8 or later before block 2,000,000 (roughly 2027-01-24), when CHECKLOCKTIMEVERIFY activates by height. There is no version signaling to warn anyone first. v0.14.0 satisfies that; so does v0.13.8. If you run a pool, test the wallet conversion on a copy of your pool wallet first, and don't leave the upgrade to the last week.

    What the Linux builds need

    The daemon tarball (dobbscoind, dobbscoin-cli) is dynamically linked against these, which most Debian and Ubuntu systems already have:

    sudo apt install libsqlite3-0 libssl3 \
                     libboost-chrono1.74.0 libboost-filesystem1.74.0 \
                     libboost-program-options1.74.0 libboost-thread1.74.0
    

    libsqlite3-0 is new in this release. libnatpmp1 and libminiupnpc17 are no longer needed. The binaries are built on Ubuntu 22.04 and need glibc 2.34 or newer.

    The Qt tarball also needs the system Qt 5 libraries (libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5dbus5), libqrencode4 and libprotobuf23. libprotobuf23 is not packaged on some newer systems (Debian 12 ships libprotobuf32). If the Qt tarball will not start, use the AppImage.

    The AppImage bundles its libraries and needs none of this.

    Verification

    All of this was run on the release files themselves, the Linux ones on a machine that did not build them:

    • Version: every program reports v0.14.0.0-ee534b0f; getinfo reports "version" : 140000.
    • Linux, with libnatpmp and libminiupnpc hidden from the loader: the daemon starts, mines on regtest, sends and confirms a payment, and backupwallet writes a valid SQLite copy. The v0.13.8 daemon, under the same conditions, fails in the loader.
    • Wallet conversion, Linux and Windows: wallets written by an unmodified v0.13.8, one plain and one encrypted, convert on first start. The kept .bdb- file is byte-identical to the original. Labels and the watch-only address are present. The encrypted wallet refuses a wrong passphrase, unlocks with the right one, signs a message and spends.
    • The way back: v0.13.8 refuses a converted wallet and leaves it unchanged; a dumpwallet file from v0.14.0 imports into v0.13.8 with its labels.
    • Mining: 60 seconds of solo mining on testnet, 8 threads on an AVX2 processor: about 97,000 hashes per second on Linux and 94,000 on Windows. 4 threads on an SSE2-only processor: about 38,000. Each time the log named the method it chose. The new code matches the original scrypt on 3,072 random inputs and 128 real mainnet block headers for every method the processor supports.
    • Windows: the unit tests pass (177 cases); the installer installs silently, the installed programs are identical to the ones in the zip and carry version 0.14.0.0, and the uninstaller leaves no registry key and no folder behind.
    • Test suites: consensus and scrypt suites 37 cases, no errors; qa/run-all.sh: passed 26 failed 0 known failures 0.

    Checksums

    c5e5caed803991825f87d776feb411a90a5a7bb07bd40982b2f0967591b58588  dobbscoin-v0.14.0-linux-daemon.tar.gz
    d2a1245a34cfcc947c3f1fb22ed4c2daf8957e327aea4402c9b19df456f2b64c  dobbscoin-v0.14.0-linux-qt.tar.gz
    f111d52ce5e13b825a6e38613b88b24af522b235c481fd5b66d71c70b1b8e5c2  dobbscoin-v0.14.0-win64-setup.exe
    56d271d65ef67d058b1e2a71182441b1ba77f95a517cebac77e7609ea20937d7  dobbscoin-v0.14.0-win64.zip
    df3b57a23b747742b2edaf17ff9f825204fe094b3591c728a96ef67c640df79e  dobbscoin-v0.14.0-x86_64.AppImage
    

    The zip also carries SHA256SUMS-windows.txt for the three programs inside it. To check a download on Linux: sha256sum -c SHA256SUMS.txt. On Windows: certutil -hashfile <file> SHA256.

    Downloads