ReddCoin Core 4.22.9.4: wallet fixes and what you need to know

ReddCoin Core 4.22.9.4: wallet fixes and what you need to know
A new point release fixes wallet key derivation issues and restores the gethdwalletinfo command. Your coins are safe: here is what changed and what it means for you.

This covers everything between v4.22.9 and v4.22.9.4.

Some of this touches wallet key derivation, and terms like BIP32, BIP39 and
BIP44 tend to make people assume the worst. So the plain answers come first,
and the technical detail comes after.


Plain answers first

Is my money at risk? Can anyone take my coins?

No. Nothing here lets an attacker take coins, and nothing here makes coins
disappear from the blockchain. There is no remote exploit, no theft vector,
and no consensus problem. Your coins are on the chain and your wallet file
holds the keys to them.

So what is the actual problem?

It is a backup and recovery problem, not a theft problem.

ReddCoin Core can create wallets in different styles, and each style derives
its addresses using a different numbering scheme. Because of a coding
mistake, a wallet could end up using a different scheme than the one you
asked for. Everything keeps working normally day to day. The catch appears
only if you ever restore from your seed phrase: you could restore
correctly and still see an empty or incomplete wallet, because the coins sit
on addresses the other scheme generates.

The coins are still there. You would just be looking in the wrong place.
If that has already happened to you, there is a step by step section
below: If you restored from a seed and the balance is wrong.

Who exactly could be affected?

Two groups, on v4.22.9:

  1. You restored or created a wallet from a seed phrase (a mnemonic).
  2. You took a wallet that was not encrypted and then encrypted it.

You are not affected if you simply created a wallet, never encrypted it,
and never restored one from a seed phrase. Watch-only wallets and older
non-HD wallets are not affected either.

Are existing wallets safe to keep using?

Yes. Keep using them. An affected wallet is not broken or degraded. It
records which scheme it uses inside wallet.dat and keeps using that same
scheme consistently, so your addresses and balances stay exactly as they are,
including after upgrading.

Do I need to do something right now, or can I wait for 4.22.9.4?

There is no emergency and nothing is on fire. But there is one thing worth
doing today regardless of version:

Make a fresh backup of your wallet.dat file.

A wallet.dat backup contains your actual keys and works no matter which
derivation scheme your wallet ended up using. That single step sidesteps this
entire class of problem.

If I only act on one thing, what is it?

If you have ever encrypted a wallet, back it up again after
encrypting, and rely on that backup rather than an older one.

This is the one genuine way somebody could lose access, and it is worth being
blunt about. Encrypting a wallet that has no seed phrase causes ReddCoin Core
to generate a new seed for it. That behaviour is inherited from Bitcoin
Core and is not the bug, but it does mean a backup taken before you
encrypted will not cover addresses created afterwards. An out-of-date
backup is the real risk here, and it always has been.

Does 4.22.9.4 fully fix this going forward?

For new wallets and new encryptions, yes, completely.

Existing wallets are deliberately left alone. 4.22.9.4 does not rewrite or
migrate them, because changing a wallet's scheme after the fact is exactly
how you would lose sight of your coins. An already-affected wallet keeps
working on its current scheme, which is the safe outcome.

4.22.9.4 also repairs the gethdwalletinfo command, which on v4.22.9 failed
with an internal error on most wallets. That failure is a large part of why
this went unnoticed for so long: the tool you would use to check was broken.

How do I tell which scheme my wallet is on?

If you use the graphical wallet, look at the wallet icon in the status bar at
the bottom of the window. It differs by scheme, so this tells you at a glance
and is the method we would suggest for most people.

If you use the console, gethdwalletinfo shows it, though it does not print
the scheme by name. You read it off which fields come back:

  • a mnemonic field present means the wallet has a seed phrase so is either a BIP39 or BIP44
  • accountextendedprivkey and accountextendedpubkey present means BIP44
  • neither of those present means a plain BIP32 wallet

Be careful with that command. gethdwalletinfo prints your seed phrase
and private keys in plain text. Anyone who sees that output can take your
coins. Never paste it into Telegram, Discord, GitHub, a screenshot or a
support request, and do not run it while screen sharing. Nobody from the
ReddCoin team will ever ask you for it. If you are unsure, use the status
bar icon instead, which reveals nothing sensitive.

What if I would rather my wallet was on the scheme I originally intended?

You can do that, and it is entirely optional. Nobody needs to.

Once you are on 4.22.9.4, create a new wallet, which will use the correct
scheme, and send your coins from the old wallet to an address in the new one.
That is an ordinary on-chain transaction and it gives you a wallet whose seed
phrase restores exactly what you expect.

Three things to weigh before you do:

  • It costs a normal transaction fee, and it is a real transaction on the
    chain, so treat it with the usual care. Send a small test amount first and
    confirm it arrives before moving the rest.
  • It resets your coin age, which pauses staking. Moved coins cannot stake
    for the first 8 hours, and their staking weight then rebuilds over time,
    reaching its maximum at 45 days. If you are staking a meaningful balance,
    this is the real cost of moving and it is worth planning around rather than
    discovering afterwards.
  • Keep your old wallet backup. Do not delete or overwrite the old
    wallet.dat once the funds have moved. It costs nothing to retain and it
    is your fallback if anything was missed.

If you are not staking and you simply want the tidiness of a wallet whose
seed phrase behaves as documented, this is a perfectly reasonable thing to
do. If you are staking, weigh it against the pause. Either way, staying put
is a valid choice: an affected wallet is not unsafe.


If you restored from a seed and the balance is wrong

This is the situation the defect actually produces: you restore from your
seed phrase, the restore appears to succeed, and the wallet shows zero, or
only part of what you expect. Work through the following in order.

One fact governs all of it: a wrong balance after a restore is a wallet
looking in the wrong place, not coins leaving the chain.
Your coins are
recorded on the blockchain and no wallet software can remove them from it.
Nothing below is urgent, and every step is reversible provided you do not
delete anything.

Three things not to do, first

  • Do not delete, move or overwrite any wallet file, folder or old backup,
    and do not reinstall to start clean. This is the one way a recoverable
    situation turns into a permanent loss.
  • Do not enter your seed phrase anywhere except ReddCoin Core on your own
    computer.
    No website, no phone app, no browser extension, no "wallet
    recovery tool". A missing balance is exactly the moment people go looking
    for help and get robbed. No service can recover coins for a fee, and
    anybody offering to is stealing from you.
  • Do not move the coins you can still see until you understand the
    picture. There is no race.

1. Let the node finish before you believe the number

Most zero balances at this point are not the defect. They are a wallet that
has not caught up yet. Restoring from a seed triggers a rescan of the entire
chain from the very first block, and that only runs once the chain itself
has finished syncing. Until both are complete, the balance on screen means
nothing at all.

In the graphical wallet, wait for the sync progress bar at the bottom of the
window and for any "Rescanning…" dialog to clear. On the console,
getblockchaininfo should report initialblockdownload as false and
verificationprogress at essentially 1. On a slow disk this can take hours.
Let it run to the end before drawing any conclusion.

One exception worth knowing: if you run a pruned node, a restore cannot
scan the full history. ReddCoin Core will say so plainly rather than quietly
showing a wrong balance, and you will need to turn pruning off and resync
before a seed restore can find old coins.

2. Check the chain, not the wallet

If you know any address that received coins, look it up in a block explorer.
Seeing the balance sitting there is the fastest reassurance available, and
it confirms this is a lookup problem inside the wallet rather than a loss.
Looking up an address is safe and gives away nothing that could be used
against you, unlike a seed phrase or a private key.

3. If you have a wallet.dat backup, use it, and stop there

This is the complete answer and it sidesteps the whole problem, because a
wallet.dat holds the keys themselves rather than a recipe for deriving
them. It does not care which scheme anything ended up on.

Do not overwrite your current wallet with it. Copy the backup into its own
folder inside your wallets directory and open it alongside what you
already have: in the graphical wallet, File > Open Wallet, or on the
console, loadwallet. If the balance still looks wrong once it has settled,
run rescanblockchain 0 and let that finish.

4. If all you have is the seed phrase, restore again on the other scheme

This is the real remedy for the defect, and the search is short: there are
only two possibilities to try. A seed phrase belongs to either a BIP39
or a BIP44 wallet, and the defect can land you on the one you did not
pick.

In the graphical wallet, go to File > Create/ Restore Wallet… and:

  • give it a new name, for example recovery-bip44, so that nothing you
    already have is touched
  • on the wallet type page, choose the other type from the one you used
    last time: Bip44 Wallet if you tried Bip39 Wallet, or the reverse
  • on the next page choose Already have a seed
  • enter the same words, and the same Pass Phrase as before if you used
    one

Then let it rescan to the end, which again takes as long as it takes. If the
balance appears, you are done, and the coins were never anywhere else.

Restore each attempt under its own name and keep every attempt until you are
finished. ReddCoin Core will hold as many wallets side by side as you like,
and you can close and delete the failed ones at the end.

5. Rule out the seed itself before blaming the scheme

  • The Pass Phrase field is part of the seed. Other wallets call this an
    extra word, or a 13th or 25th word. If you set one when the wallet was
    created and leave it blank now, or left it blank then and fill it in now,
    you get a different seed and a genuinely empty wallet. Blank is the
    default and most people never set one, so if you do not remember setting
    one, leave it empty.
  • Word order and spelling matter. One transposed or misremembered word
    gives you a perfectly valid wallet that simply is not yours. Check the
    list against your written copy, word by word.

6. If some coins appear but not all

Two ordinary explanations to rule out before the scheme:

  • Staking maturity. Recently staked coins are held separately until they
    mature and are not counted in your spendable total. getbalances reports
    this as immature, and the graphical wallet shows it on its own line. It
    is your money and it arrives on its own.
  • A long run of unused addresses. The wallet only looks a fixed distance
    ahead when hunting for used addresses. If you once generated a great many
    addresses without ever using them, coins beyond that gap can be missed.
    Unlock the wallet if it is encrypted, run keypoolrefill 5000, then
    rescanblockchain 0, and let it finish.

7. If none of it works, ask, and know what is safe to send

Safe to share: the addresses you expect to hold coins, transaction ids, the
version you restored with, the version that created the original wallet, and
your debug.log file, which does not contain your seed phrase or your
private keys.

Never safe to share, with anyone, under any circumstances: your seed phrase,
your private keys, or the output of gethdwalletinfo. That includes
screenshots, partial versions, "just the first four words", and private
messages from people offering to help. Nobody from the ReddCoin team will
ever ask you for them, and anybody who does is trying to take your coins.


About that line in the release notes

This one came from the community, and it was a fair catch. Until now the
release notes said, under How to Upgrade:

Upgrading from earlier versions of Reddcoin Core also runs the risk of
losing coins. PLEASE CREATE BACKUPS.

and then, in the wallet section:

No funds are at risk from either defect.

Read together those look like a contradiction. They were not: the two
sentences were about different things, but nothing in the document said so
and readers were left to work it out.

The first was standing boilerplate. It appears in every ReddCoin Core
release note going back to 22.0, and in Bitcoin Core's before that. It is the
generic "back up before you upgrade any wallet software" caution, and it was
never a statement about this release.

The second is the specific finding about the two defects fixed here: they do
not put funds at risk.

The release notes have since been corrected. The upgrade section now
reads:

Upgrading any wallet software carries the standing risk that an out-of-date
backup does not cover everything the wallet holds. PLEASE CREATE
BACKUPS
.

This is the general precaution carried in every release. It is not a
statement about the defects fixed in this one: the wallet fixes described
under Wallet key derivation fixes below do not put funds at risk.

The wallet section now also spells out what the residual risk actually is: a
recovery hazard, where a seed phrase restored under the wrong scheme derives
different addresses while the coins sit untouched on the chain. And it notes
that a wallet.dat backup holds the keys themselves, so it does not care
which scheme a wallet uses.

One further correction went in at the same time. The notes had described the
new seed generated when you encrypt a wallet as though it were part of the
bug. It is not: ReddCoin Core regenerates the seed for any HD wallet without
a seed phrase when you encrypt it, and Bitcoin Core does the same. That
distinction matters, because it is the difference between "this bug might
lose your coins" and "a stale backup might, as it always could". The second
is the true statement, and it is why the backup advice above is worth
following.


What changed between 4.22.9 and 4.22.9.4

Wallet derivation fixes. The two defects described above. Two internal
settings were used before they were given a value, so they held whatever
happened to be in memory at the time. That is why the behaviour looked
inconsistent between builds and was awkward to pin down. Both are now set
explicitly.

gethdwalletinfo works again. It previously failed with an internal
error on essentially every wallet created through the console. It now
correctly reports the wallet's seed and derived keys. Remember that its
output is private key material and must never be shared.

Network warnings restored. Your node can once again warn you when an
unknown network rule change starts being signalled. This warning had been
silently inoperative on mainnet since the Core 22 migration, meaning nodes
would not have told you about an upcoming change they did not understand.

Version numbers are now real. Until now the fourth digit in a version
like 4.22.9.3 existed only in the download's tag name. The program itself
still reported plain "4.22.9", so point releases were indistinguishable from
one another on the network and in the logs. From 4.22.9.4 the full version is
carried properly.

Update check fixed. As a direct consequence of the above, the built-in
update checker could not read four-part version numbers correctly. It could
report a nonsense version and build a broken download link. This is fixed in
4.22.9.4, but note it is not fixed in the version you are running now.

Because of this, please do not trust the in-app update link for this
release. Get 4.22.9.4 from the official download page or from the links
shared in our official channels.

Housekeeping. Node startup data refreshed, updated network seeds, build
fixes for modern systems, and testing improvements that let us properly
exercise upgrade and staking scenarios before release.


Summary

  • Nobody can take your coins, and no coins are lost.
  • Keep using your wallet as normal.
  • Make a current wallet.dat backup, especially if you have ever encrypted
    a wallet.
  • Upgrade to 4.22.9.4 when it is published, using the official download page
    rather than the in-app link.
  • To check which scheme your wallet uses, look at the wallet icon in the
    status bar. Avoid gethdwalletinfo unless you know what you are doing: it
    prints your seed phrase and private keys, and must never be shared.
  • Optionally, if you would rather be on the intended scheme, create a new
    wallet on 4.22.9.4 and move your coins across. Stakers should note this
    resets coin age and pauses staking for 8 hours, with weight rebuilding to
    its maximum over 45 days.
  • If you have already restored from a seed and the balance looks wrong,
    delete nothing and never type your seed into a website or a recovery
    tool. Work through If you restored from a seed and the balance is
    wrong
    above. The usual causes are a rescan that has not finished or
    the other derivation scheme, and both are recoverable.

Questions are welcome. If anything above is unclear, ask and we will explain
it properly rather than pointing you at the release notes.

Share the Post: