Pages:
Author

Topic: HELP! Transactions not confirming ;( - 4 btc bounty - page 2. (Read 11889 times)

legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
I have tried to install this stuff and just hit a brick wall somewhere.

Although not exactly the easiest thing for a typical end-user to accomplish I actually found the instructions fairly straight forward.

If you could perhaps explain exactly how far you got with pywallet and what did/didn't happen at that point perhaps it shouldn't be too hard to get over the final hurdle.
legendary
Activity: 2940
Merit: 1333
I think that using Gavin's bitcointools to mark the 5 rogue transactions as 'unspent' should fix your problem.

Get it from here:
  https://github.com/gavinandresen/bitcointools

Then something like:
  python fixwallet.py --tweakspent ccf585bcfed1283d11b5012c5f3f3429c5695a8d2280287c44e605223b6318b5

I'll experiment here to see if it works, and report back.

I've been unable to get bitcointools to do what I wanted.

https://bitcointalksearch.org/topic/solved-i-think-i-broke-my-wallet-29765 seems to be a similar issue to Jeremy's, but the solution that was found there is on an old git branch that never made it back to the master branch.
hero member
Activity: 700
Merit: 501
and then run the following command:

Code:
python pywallet.py --web

Actually the current installation will create a pywallet.bat that you just need to run (it calls pywallet.py with the args provided for you).

Most importantly make sure you have a web server running locally in order to use http://localhost:8989.


I have tried to install this stuff and just hit a brick wall somewhere. Unfortunately I'm a customer service guru and other than that just a general user of computers and bitcoin, not a coder or technical person in any way.

I've given up for the evening and gone ahead and paid these five transactions again, hoping that I can figure out this pywallet stuff and recover the lost bitcoins tomorrow. ;(

Thanks for all your help so far everybody! The bounty will go to the person who writes up step by step instructions that make sense to a total non-techie like myself. Smiley
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
and then run the following command:

Code:
python pywallet.py --web

Actually the current installation will create a pywallet.bat that you just need to run (it calls pywallet.py with the args provided for you).

Most importantly make sure you have a web server running locally in order to use http://localhost:8989.

EDIT - (see below)
legendary
Activity: 924
Merit: 1004
Firstbits: 1pirata
The pywallet method definitively works, i had this same issue a while back with one tx and used it without other alternative. You will have to remove the transaction from wallet.dat, which is a database that stores this kind of info, manually. Make sure you have a backup copy of your wallet before doing any of this.

Like others have said in this thread, get yourself pywallet by downloading the zip and unpack it somewhere accessible on your main windows drive (for ex. c:\pywallet).
 
1. Open up a terminal window by running "cmd" and make sure you have python interpreter installed by running "python" in the console window.

2. If you get an "unknown command" error, download and install python here then optionally add it to your path.

3. You will have to install some python libraries like bsddb and twisted to have it work correctly. Download setuptools 0.6 from here.

4. After installing it run this in your terminal:

Code:
X:\Python27\Scripts\easy_install bsddb3
X:\Python27\Scripts\easy_install twisted

where X: is the drive where your python installation is located.

5. Now comes the fun part, run the following command by replacing X: with the correct drive letter in both places:

Code:
X:\Python27\python X:\pywallet\pywallet.py --web

If it doesn't give you an error don't close the terminal, just minimize it and open up your usual web browser at this address http://localhost:8989, which is the pywallet web interface page that it serves locally, on port 8989 by default.

6. The next step is to find out the id of the troubling transaction. Just fire up your bitcoin wallet and when it finishes go to "Transactions" tab and double click the unconfirmed tx, you should see it's id down on the list. Copy it and shut down your bitcoin wallet, completely, or else pywallet would not be able to work with the wallet safely.

7. Now go to your browser on the pywallet's page and paste your tx id in "Delete a key from your wallet" section and hit "Delete" without changing anything else. You should see a success message right away.

8. Start your bitcoin wallet normally and check if the transaction has been deleted, so now you can resend it again but make sure you include some fees so it gets confirmed right away. Hope this helps.

EDIT: Added twisted and bsddb libs install.
legendary
Activity: 1072
Merit: 1181
It seems you have transactions in your wallet that conflict wih others in the blockchain (i.e., attempted double spends). Have you sent transactions from an instance that used a copy of the wallet.dat as well as from an instance running the original? That could explain the behaviour.

The only solution for now is removing those transactions from your wallet. I suppose tools like pywallet can do this, or manual tinkering using the bdb tools to dump/remove/load the wallet file.

There are plans for adding logic to the wallet for detecting transactions that conflict with the blockchain, and at least temporarily disable them, and eventually delete them if the transactions that they conflict with are buried too deep in the chain.
legendary
Activity: 1896
Merit: 1353
I just asked on the dev channel, and I got confirmation of what I feared:
Code:
does ResendWalletTransactions() check tx inputs?
ThomasV: how do you mean?
ThomasV: it just resends all unconfirmed transactions
sipa: double spends, etc
sipa: https://bitcointalk.org/index.php?topic=85689.msg944505#msg944505
ThomasV: the current wallet code basically always assumes that its transactions are valid and will eventually confirm
that's a major flaw
sipa: what if a tx has become a double spent because of a reorg?
could this explain the error reported there?
ThomasV: i suppose
sipa: what should this user do?
(you might get a bounty if you answer in the thread)

so, this might explain your problem, even if it does not really solve it.
I guess you could try to remove the transactions from your wallet using pywallet. make sure you back it up before.
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
I got the Windows version of pywallet installed and running (and yes you do need to click Next/I Agree many times).

Once you have "pywallet.bat" running then you can use http://localhost:8989/ as the interface (you need to have a web server running locally for this - if using Windows 7 then assuming IIS was installed then this is how to start it http://technet.microsoft.com/en-us/library/cc732317(v=ws.10).aspx).

Assuming you got the Pywallet Web Interface to appear then if you scroll down to Delete a key from your wallet you should be able to enter the txid of those 5 tx's to remove them one at a time (of course make sure you have a backup of the wallet before doing this).
legendary
Activity: 2940
Merit: 1333
I used my current wallet with a backup of all the rest of the files in the bitcoin folder from 1 day prior to the unconfirmed transactions. My understanding was that the wallet contained nothing but the private keys. Is this incorrect?

Yes, that's incorrect.

See http://bitcoin.stackexchange.com/questions/3173/what-information-does-a-wallet-contain
legendary
Activity: 1896
Merit: 1353
I used my current wallet with a backup of all the rest of the files in the bitcoin folder from 1 day prior to the unconfirmed transactions. My understanding was that the wallet contained nothing but the private keys. Is this incorrect?

No, I believe the wallet.dat also contains transactions stored. If you use the same it won't work.

the debug file suggests that these stored transactions are resent without being checked.
they might have become double-spents because of a reorg.
I guess it would make sense for ResendWalletTransactions() to check old transactions inputs again. Does it redo this check?
legendary
Activity: 1106
Merit: 1004
I'm wondering if the transactions are invalid for some reason, and so his peers aren't accepting the transactions.  I don't know why that would be though.

Could someone isolate his node and refuse transactions ?


Theoretically possible, but very unlikely. Hard to do, and, why would the attacker cherry-pick these 5 transactions?


Jeremy, if the backup thing doesn't work, would you mind adding some trusted peers in your list manually?
https://en.bitcoin.it/wiki/Fallback_Nodes
legendary
Activity: 1106
Merit: 1004
I used my current wallet with a backup of all the rest of the files in the bitcoin folder from 1 day prior to the unconfirmed transactions. My understanding was that the wallet contained nothing but the private keys. Is this incorrect?

No, I believe the wallet.dat also contains transactions stored. If you use the same it won't work.
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
My understanding was that the wallet contained nothing but the private keys. Is this incorrect?

Unfortunately it contains a lot more than just the private keys which I guess is exactly why the pywallet tool was created.
hero member
Activity: 686
Merit: 500
Wat
To the devs: isn't this a bug in the Satoshi client? Shouldn't the client try to rebroadcast unconfirmed transactions once in a while? If it does rebroadcast, just not fast enough for Jeremy's needs, then isn't this an enhancement issue that should be logged anyway? (allowing the user to configure the rebroadcasting periods, and/or adding a command line switch (perhaps even GUI) to manually force the rebroadcast...)

Or is there something peculiar with those transactions that make them be refused by everyone every time they are sent? I'm ruling out voluntary double-spends. (if it's an involuntary one, it's possibly an even more serious issue...)

It is rebroadcasting the transactions over and over.  From the log Jeremy put on dropbox:

Code:
ResendWalletTransactions()
Relaying wtx ccf585bcfe
Relaying wtx ee188b9e04
Relaying wtx b1f331143f
Relaying wtx 11fd5b6aed
Relaying wtx 4b87953acc

I'm wondering if the transactions are invalid for some reason, and so his peers aren't accepting the transactions.  I don't know why that would be though.

Could someone isolate his node and refuse transactions ?
hero member
Activity: 700
Merit: 501
Currently trying Maged's idea of restoring a backup bitcoin folder. Less than 2 days behind, should be up to date soon and know whether I'm all sorted. Smiley

Damn it! Ended up with the same 5 unconfirmed transactions! Why would that be if they never ended up on the network?

The backup you used was done after the 5 bogus transactions. For that to work, you'd need to find a backup which was done before the bogus transactions, but which happens to contains all your private keys. Seeing the number of transactions you make, that might be difficult. 
You'll probably have to resort to manually deleting the transactions...


I used my current wallet with a backup of all the rest of the files in the bitcoin folder from 1 day prior to the unconfirmed transactions. My understanding was that the wallet contained nothing but the private keys. Is this incorrect?
legendary
Activity: 2940
Merit: 1333
To the devs: isn't this a bug in the Satoshi client? Shouldn't the client try to rebroadcast unconfirmed transactions once in a while? If it does rebroadcast, just not fast enough for Jeremy's needs, then isn't this an enhancement issue that should be logged anyway? (allowing the user to configure the rebroadcasting periods, and/or adding a command line switch (perhaps even GUI) to manually force the rebroadcast...)

Or is there something peculiar with those transactions that make them be refused by everyone every time they are sent? I'm ruling out voluntary double-spends. (if it's an involuntary one, it's possibly an even more serious issue...)

It is rebroadcasting the transactions over and over.  From the log Jeremy put on dropbox:

Code:
ResendWalletTransactions()
Relaying wtx ccf585bcfe
Relaying wtx ee188b9e04
Relaying wtx b1f331143f
Relaying wtx 11fd5b6aed
Relaying wtx 4b87953acc

I'm wondering if the transactions are invalid for some reason, and so his peers aren't accepting the transactions.  I don't know why that would be though.
legendary
Activity: 2940
Merit: 1333
I think that using Gavin's bitcointools to mark the 5 rogue transactions as 'unspent' should fix your problem.

Get it from here:
  https://github.com/gavinandresen/bitcointools

Then something like:
  python fixwallet.py --tweakspent ccf585bcfed1283d11b5012c5f3f3429c5695a8d2280287c44e605223b6318b5

I'll experiment here to see if it works, and report back.
legendary
Activity: 1106
Merit: 1004
Currently trying Maged's idea of restoring a backup bitcoin folder. Less than 2 days behind, should be up to date soon and know whether I'm all sorted. Smiley

Damn it! Ended up with the same 5 unconfirmed transactions! Why would that be if they never ended up on the network?

The backup you used was done after the 5 bogus transactions. For that to work, you'd need to find a backup which was done before the bogus transactions, but which happens to contains all your private keys. Seeing the number of transactions you make, that might be difficult. 
You'll probably have to resort to manually deleting the transactions...


To the devs: isn't this a bug in the Satoshi client? Shouldn't the client try to rebroadcast unconfirmed transactions once in a while? If it does rebroadcast, just not fast enough for Jeremy's needs, then isn't this an enhancement issue that should be logged anyway? (allowing the user to configure the rebroadcasting periods, and/or adding a command line switch (perhaps even GUI) to manually force the rebroadcast...)

Or is there something peculiar with those transactions that make them be refused by everyone every time they are sent? I'm ruling out voluntary double-spends. (if it's an involuntary one, it's possibly an even more serious issue...)
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
Damn it! Ended up with the same 5 unconfirmed transactions! Why would that be if they never ended up on the network?

I think the problem is that the tx's are known to your wallet so will just keep coming back.

Otherwise, you can set-up pywallet and delete the individual transactions from your wallet. It's easy to do this, luckily, but setup is a pain (lots of sitting and clicking until everything is installed).

Perhaps you will need to do this (and note that there is a Windows version of the tool).
hero member
Activity: 700
Merit: 501
Currently trying Maged's idea of restoring a backup bitcoin folder. Less than 2 days behind, should be up to date soon and know whether I'm all sorted. Smiley

Damn it! Ended up with the same 5 unconfirmed transactions! Why would that be if they never ended up on the network?
Pages:
Jump to: