Author

Topic: Transaction ID not found after using zapwallettxes (Read 790 times)

newbie
Activity: 4
Merit: 0

It appears that c1c beat up 34c, now I have the other two, 556 and 245, unconfirmed only.

Thanks achow101 and DannyHamilton, your information was very interesting and useful for me.
legendary
Activity: 3472
Merit: 4801
So why did I use -zapwallettxes at all? Smiley

So that YOUR wallet would forget the original transactions.  Your wallet would not allow you to create a new replacement transaction as long as it was aware of the old transaction.

I followed an article saying that pp. 2-3 is what you need when you want to cancel unconfirmed / re-send with a higher fee.

It is impossible to "cancel" a transaction in bitcoin. Once you send a transaction, you no longer have any control over what other nodes and miners will choose to do with it.

The best you can do is broadcast a competing transaction, and provide an incentive for it to hopefully be accepted into the blockchain.  Whichever of the two transactions makes it into the blockchain will become the "real" transaction, and any competing transaction will then become invalid.

Why didn't it work in my case? Is it because 34c fee is not too low to be rejected and a lot of nodes "cached" it to their mempool?

It did work.  You did create a competing transaction.  Your wallet is aware of it.  Since you are using Bitcoin Core, it will continue to re-broadcast this new competing transaction (as long as it is running and connected to peers) until one of the following:
  • It gets confirmed
  • It becomes invalid because the other transaction becomes confirmed
  • You tell your wallet to forget about it with something like zapwallettxes

If your original transaction remains unconfirmed, eventually peer nodes will begin to forget about it.  Then when your wallet re-broadcasts the competing transaction, they will add the new transaction to their memory pool and will attempt to relay it to their peers.
legendary
Activity: 3472
Merit: 4801
Some things to be aware of to help clarify what happened...

  • Bitcoin Core remembers all the transactions it sends and never drops them from it's own list unless specifically asked to (such as with zapwallettxes).  Therefore, even if the entire network has forgotten about an unconfirmed transaction, the transaction will remain in the sender's Bitcoin Core wallet as pending.
  • Given the opportunity to do so (left running and connected to peers), Bitcoin Core will occasionally re-broadcast any unconfirmed transactions that it has sent so as to remind the network about those unconfirmed transactions
  • zapwallettxes is useful to force your sending wallet to forget about a transaction so that it won't re-broadcast it and so that you can regain access to bitcoins that were sent in a transaction that will never confirm
  • Even if your own wallet does not re-broadcast a transaction, ANYONE on the network that saw the initial transaction could re-broadcast it if they want to.  Generally nodes don't bother doing this, but a recipient might if they wanted to be sure that a transaction they were waiting to receive wasn't forgotten
  • zapwallettxes does not "cancel" a transaction or remove it from the other nodes on the network. It only removes the transaction from your own wallet.
  • The vast majority nodes on the network do not typically choose to accept and relay the highest-fee transaction.  They typically choose to accept and relay the transaction they hear about first.  If they later hear about a competing transaction, they reject it (even if it pays a higher fee).  Eventually, if the first transaction is not confirmed, the nodes will drop it from their own memory.  At that point they will be willing to accept a competing transaction (even if it pays a lower fee), since they are no longer aware that it competes with any other transaction.
  • You have no control at all over when other nodes will choose to forget your transaction.  Most nodes will typically forget unconfirmed transactions after a few days.
  • The blockchain (not blockchain.info, your own wallet, or any other source) is the "Official List" of valid transactions. If any transaction competes with a transaction that is already in the blockchain, then the unconfirmed competing transaction is considered to be invalid by all nodes, and the confirmed transaction is accepted as the valid one.
  • That last statement even applies to your own instance of Bitcoin Core.  If you try to send a transaction, and then your Bitcoin Core receives a block that makes your unconfirmed transaction invalid, then your Bitcoin Core will accept the confirmed blockchain transaction and reject your, then invalid, transaction.
  • Bitcoins never "come back to your wallet".  This is because they never actually leave your wallet in the first place. And that is because they don't actually exist in your wallet at all.  Bitcoins exist only as transactions in the blockchain. Your wallet searches through the blockchain and adds up all the bitcoins that it believes it can control. It then displays that sum to you as a balance. When you send a transaction, your wallet assumes that the transaction will confirm eventually, so it subtracts the amount of bitcoins in your transaction from the balance it is showing you.  If you use zapwallettxes, then your wallet forgets about all its unconfirmed transactions, so it stops subtracting their value from the balance it is showing you.  When a transaction finally does confirm and your wallet hears about it in the blockchain, it then realizes that it no longer has control over those bitcoins so it subtracts them from the balance it is showing you.
newbie
Activity: 4
Merit: 0
So why did I use -zapwallettxes at all? Smiley

I followed an article saying that pp. 2-3 is what you need when you want to cancel unconfirmed / re-send with a higher fee.

Why didn't it work in my case? Is it because 34c fee is not too low to be rejected and a lot of nodes "cached" it to their mempool?
staff
Activity: 3458
Merit: 6793
Just writing some code
Thanks for your answer, achow101.

So as I understand, c1c is actually rejected and 34c is actually considered as my first tx.
And my BTC should be confirmed or returned in some time (3 days?).
Yes. 34c is the original transaction as considered by every other node so c1c is rejected as a double spend of 34c.

Will my Transactions tab synchronize automatically later? because now I have c1c instead of 34c there.
Yes. The blockchain is what determines that a transaction is the "real" one. Once one transaction confirms, then your wallet will automatically update to fit what the blockchain says.

Also, I sent more BTC with c1c than 34c, and my wallet is still showing balance minus the c1c amount.
Since you did zapwallettxes, you removed 34c from your wallet before you sent c1c. Thus your wallet saw c1c first and uses that as the "real" transaction and not 34c which is what all other nodes will think is the "real" one. Once one of those transactions confirm, your wallet will automatically update to fit what the blockchain says.
newbie
Activity: 4
Merit: 0
Thanks for your answer, achow101.

So as I understand, c1c is actually rejected and 34c is actually considered as my first tx.
And my BTC should be confirmed or returned in some time (3 days?).

Will my Transactions tab synchronize automatically later? because now I have c1c instead of 34c there.
Also, I sent more BTC with c1c than 34c, and my wallet is still showing balance minus the c1c amount.

staff
Activity: 3458
Merit: 6793
Just writing some code
Since you used zapwallettxes, your transaction made at p.3 is a double spend. The transaction fee for your other transactions is not so low that they are rejected from many nodes' mempools. Because of that, your p.3 transaction is rejected by nearly all nodes since it is considered a double spend. Thus that transaction did not propagate well so you won't find it on block explorers.

Your Bitcoin is safe. Bitcoin does not just "disappear". It will either go to who you sent it to (i.e. the transaction will confirm) or it will not and you can spend it again (i.e. the transactions are dropped from the network after a while).
newbie
Activity: 4
Merit: 0
Hello,

Please help me understand the following issue:

1. I made 3 transactions yesterday, their IDs are (starting from the last one):
Code:
5567be46f8dccbbe4c775c58768745e87e8cfb5ec2b336436700d389afb737ce
2456fe35add543962d34548442f8f80b36548769d2092d22be514e17fc01f8fb
34c16b9432bff2cb5b46b84024a66eb4a0e1f8d8e179993e3a991ed7054cde28
with a "normal" recommended fee suggested by Bitcoin Core

2. This morning there still were no confirmations on any tx, so I restarted Bitcoin Core with -zapwallettxes,
and after rescanning the unconfirmed transactions were not visible anymore.

3. I made a new tx with the highest recommended fee possible in Bitcoin Core, the ID is
Code:
c1c357cd554b5b288f08c959464c33c458fe1de727c3ad8f5a0421e34565bafa

4. After that the two top transactions from p. 1 returned, so now I have (starting from the last one):
Code:
2456fe35add543962d34548442f8f80b36548769d2092d22be514e17fc01f8fb
5567be46f8dccbbe4c775c58768745e87e8cfb5ec2b336436700d389afb737ce
c1c357cd554b5b288f08c959464c33c458fe1de727c3ad8f5a0421e34565bafa

5. Now I'm unable to find the tx created at p. 3
Code:
c1c357cd554b5b288f08c959464c33c458fe1de727c3ad8f5a0421e34565bafa
neither on blockchain.info nor on https://www.viabtc.com/tools/txaccelerator/

6. Here is how the tx looks in my Bitcoin Core
Code:
Status: 0/unconfirmed, in memory pool, broadcast through 8 nodes
Date: 04.05.2017 13:58
To: 1KMk629wzoZbYe5w2Mb7KavpBjqYnX9bnC
Debit: -0.13900000 BTC
Transaction fee: -0.00049273 BTC
Net amount: -0.13949273 BTC
Transaction ID: c1c357cd554b5b288f08c959464c33c458fe1de727c3ad8f5a0421e34565bafa
Transaction total size: 225 bytes
Output index: 1



Can you advise anything guys? Tell me that I'm not losing my BTC...  Smiley


Jump to: