Bitcoin Forum
May 11, 2024, 02:29:04 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Core 14.0: unspent output stuck in blockchain (weird)  (Read 2839 times)
SuperPandaBear (OP)
Newbie
*
Offline Offline

Activity: 25
Merit: 8


View Profile
April 22, 2017, 05:21:37 PM
 #1

I've always used "coin control" because it's great to have control over inputs when making a transaction. I selected a bunch of addresses up to 3.2 BTC, but I realized I only needed to send 3 BTC, so I put "3 BTC" to send, so that's 0.2 BTC that I should have received as (change) in a newly generated address. The problem is, this money never arrived back, which means I've lost 0.2 BTC which is a lot for me. I have looked in the blockchain, and the newly generated address is one I don't possess. This is very strange.

I've been reading about it and apparently it may be that I hit some sort of limit that made the newly generated address not be under my control. Is there any way I can resolve this? This is pretty insane, imagine if it was a bigger amount. But 0.2 BTC is a lot for me already, I hope I can recover it.

I think creating a brand new wallet after 0.13 fixes this forever as HD mode is enabled (in 0.14 there is an icon and my HD is not enabled) but I was too lazy to make a new wallet and transact all of my BTC into a brand new wallet (im not even sure I would do that)

Please help me recover those coins, then I can start planning how to migrate to new HD format.
Even in the event that an attacker gains more than 50% of the network's computational power, only transactions sent by the attacker could be reversed or double-spent. The network would not be destroyed.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715394544
Hero Member
*
Offline Offline

Posts: 1715394544

View Profile Personal Message (Offline)

Ignore
1715394544
Reply with quote  #2

1715394544
Report to moderator
achow101
Moderator
Legendary
*
Offline Offline

Activity: 3388
Merit: 6635


Just writing some code


View Profile WWW
April 22, 2017, 09:14:18 PM
 #2

The address you won't recognize is called a change address. You won't be able to actually see what your change addresses are as they are handled internally by the wallet and typically never shown to the user. Just because you don't recognize it does not mean that you don't control the address.

To make sure that the address is yours, go to Help > Debug Window and click on the console tab. Then type
Code:
validateaddress <address>
where <address> is the address in question. Then hit enter.

In the output, look for the field "ismine". If that is true (will look like "ismine": true,), then the address is yours and is controlled by your wallet.

Double check that your balance is actually what you expect it to be. The transactions list should say that you are sending 3 BTC, not 3.2.

SuperPandaBear (OP)
Newbie
*
Offline Offline

Activity: 25
Merit: 8


View Profile
April 22, 2017, 10:04:52 PM
 #3

The address you won't recognize is called a change address. You won't be able to actually see what your change addresses are as they are handled internally by the wallet and typically never shown to the user. Just because you don't recognize it does not mean that you don't control the address.

To make sure that the address is yours, go to Help > Debug Window and click on the console tab. Then type
Code:
validateaddress <address>
where <address> is the address in question. Then hit enter.

In the output, look for the field "ismine". If that is true (will look like "ismine": true,), then the address is yours and is controlled by your wallet.

Double check that your balance is actually what you expect it to be. The transactions list should say that you are sending 3 BTC, not 3.2.

Yes, the amount sent was -3 BTC, which means the other 0.2 should have returned under (change)

You can see the (change) addresses using Coin Control feature.

https://bitcoin.org/img/bitcoin-core/coin-control.png

I tried
Code:
validateaddress <address>
and I got ""ismine": true," this gives me a peace of mind that I least I control the key, but the funds are not showing up.

I suspect the problem may be related to what I was talking about:

http://bitzuma.com/posts/five-ways-to-lose-money-with-bitcoin-change-addresses/

Quote
Alice uses Bitcoin-Qt. Understanding the importance of backups, she created an encrypted wallet backup long ago and stored it in a safe place. After making dozens of transactions with Bitcoin-Qt, Alice's hard drive crashed.

Alice bought a new hard drive and then re-installed Bitcoin-Qt on it. She then restored her wallet backup. To her horror, Alice discovered the restored wallet was empty.

Explanation: Alice generated enough change addresses to overflow the original pool of 100. On the 100th spending transaction, Bitcoin-Qt moved Alice's change (which happend to be her entire balance) into an address not in the backup. Restoring the backup only restored empty addresses.

Recovery: Even if a hard drive can't boot an operating system, individual files can still be recovered. Using data recovery tools, Alice may be able to salvage the Bitcoin-Qt wallet from the faulty hard drive, and with it her lost funds.

Prevention:

    Count the number of manually-created addresses and spending transactions since your last backup. If this number is greater than about 80, back up again. Weekly backups might be enough for most users.
    Set a very high value (e.g., 10,000) for the -keypool option, either as a command line parameter, or in the bitcoin.conf file.
    Switch to a deterministic wallet.



What should I do? im scared to screw something up.

And how do I properly migrate to HD format? I create a new wallet, then generate addresses and send the BTC there with the previous wallet?

In this case I waste a bit of money in transactions since I will need to do several different transactions to preserve privacy (if I sent it all at once, all my inputs will be joined which is stupid, since you wasted your time using 1 different address each time as recommended, since you will be telling the world "I own all those addresses" with 1 single transaction of the entire wallet)
cellard
Legendary
*
Offline Offline

Activity: 1372
Merit: 1252


View Profile
April 23, 2017, 12:38:01 PM
 #4

The same thing occurred to me the other day. The expected change didn't come back, so it shows as Unspent Outputs in blockchain.info. The address is mine as shown by validateaddress command. I've considered running -zapwallettx but im worried that this may wipe out my money somehow.

How do we get our money back?

PS: I also was too lazy to make the switch to the HD format.

PS2: I have not made any new transactions, and im worried the change of the next transaction will also not show up.
achow101
Moderator
Legendary
*
Offline Offline

Activity: 3388
Merit: 6635


Just writing some code


View Profile WWW
April 23, 2017, 03:40:05 PM
 #5

What should I do? im scared to screw something up.
How do we get our money back?
Try running a rescan. Start Bitcoin Core with the -rescan option. This will rescan the entire blockchain for all transactions related to your wallet.

Can both of you also please post your debug.log file?

And how do I properly migrate to HD format? I create a new wallet, then generate addresses and send the BTC there with the previous wallet?

DannyHamilton
Legendary
*
Offline Offline

Activity: 3388
Merit: 4653



View Profile
April 23, 2017, 04:11:40 PM
 #6

To verify that you haven't gotten confused about your balance, run the following in the "Console" tab:
Code:
listunspent

This should provide a list of ALL unspent outputs that your wallet is currently aware of.

  • Is the problem transaction included in this list?
  • Is the problem change address included in this list?
  • If the answers to the above 2 questions are "yes", then is the amount equal to the "change" you expected from the transaction?
  • If you add up all the values in the "amount" fields of the entire list, is the sum equal to your current wallet balance?
cellard
Legendary
*
Offline Offline

Activity: 1372
Merit: 1252


View Profile
April 23, 2017, 05:23:57 PM
 #7

What should I do? im scared to screw something up.
How do we get our money back?
Try running a rescan. Start Bitcoin Core with the -rescan option. This will rescan the entire blockchain for all transactions related to your wallet.

Can both of you also please post your debug.log file?

And how do I properly migrate to HD format? I create a new wallet, then generate addresses and send the BTC there with the previous wallet?

How much time can it take to rescan the entire blockchain nowadays? I haven't done that in ages. My HDD is a 7200 rpm one, I need to buy an SSD because when something like this happens, it's such a waste of time waiting for the thing to end.

I will try later.

What part of debut.log you want? it's a 6.5mb file so I guess you only need the recent entries.

I've run listunspent and there's a ton of transactions there, it will take me ages to find the address im looking for. They should add a ctrl+f search feature on the console.

Anyway validateaddress shows I own the address with the exact amount of funds that should have returned as change, just like OP, so I just need to get those funds showing up on my balance.
achow101
Moderator
Legendary
*
Offline Offline

Activity: 3388
Merit: 6635


Just writing some code


View Profile WWW
April 23, 2017, 05:45:32 PM
 #8

How much time can it take to rescan the entire blockchain nowadays? I haven't done that in ages. My HDD is a 7200 rpm one, I need to buy an SSD because when something like this happens, it's such a waste of time waiting for the thing to end.
Rescanning should only take at most a few hours, usually somewhere in the tens of minutes I think. Rescanning is not the same as redownloading or reindexing.

I will try later.

What part of debut.log you want? it's a 6.5mb file so I guess you only need the recent entries.
As much as possible from the bottom. Preferably including the entries around the time of when you sent the transaction in question.

I've run listunspent and there's a ton of transactions there, it will take me ages to find the address im looking for. They should add a ctrl+f search feature on the console.
Copy and paste the output to a text editor and use the search function there.

SuperPandaBear (OP)
Newbie
*
Offline Offline

Activity: 25
Merit: 8


View Profile
April 23, 2017, 11:26:07 PM
 #9

Hey I have tried -rescan and the balance is still the same.

listunspent shows the address in question with the funds that are missing on my balance (0.2 BTC), it says this too:

    "spendable": true
    "solvable": true

200+ confirmations and so on, I can't see anything strange. Looks like a regular transaction compared to the rest of transactions.

I dont want to post any logs because of privacy tbh.

But in the log i have searched the exact time when I did the transaction, it begins with:

CommitTransaction:

Then CTransaction and all the inputs and outputs and so on as usual

then CScriptWitness() a bunch of times

then "keypool keep 69"

finally "AddToWallet" and "Relaying wtx" with the tx id

i dont see anything strange

im so confused because according to listunspent and validateaddress I do own the key but the balance never returned to my wallet...

Next time I make a transaction I will generate a new receiving address and specify to receive the change there instead of leaving it blank just in case... but I want to recover my money anyway.
SuperPandaBear (OP)
Newbie
*
Offline Offline

Activity: 25
Merit: 8


View Profile
April 23, 2017, 11:56:06 PM
 #10

Oh wait, I can see now the address and the funds in Coin Control, but balance is the same... weird. I swear yesterday it wasn't showing up on Coin Control. Maybe rescan made it show there but the final balance was the correct one. I think the problem is solved.

But in any case, how do I properly migrate to the HD format? I want to get this done for once.
Casy
Member
**
Offline Offline

Activity: 149
Merit: 22

🔴🔵 FoxMixer.com 🔵🔴


View Profile WWW
April 25, 2017, 10:10:10 PM
 #11

I did have a similar issue with the new bitcoin client version.

I then reverted to v13.1 and did a rescan of my wallet. All funds reappeared. I transferred them to a new wallet.
For production and high load webservices I keep using the older version since that, as I never had such a problem there.

Hoping there will be some updates soon that fix such behaviour.

Casy
Member
**
Offline Offline

Activity: 149
Merit: 22

🔴🔵 FoxMixer.com 🔵🔴


View Profile WWW
April 25, 2017, 10:16:22 PM
 #12

And for the HD wallet generation: for me worked starting up the client without any wallet.dat file. Then it showed up the "HD" icon in the lower right corner. And afterwards a transaction to an address there.
This is cleaner than trying to convert a wallet or stuff like that.

Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!