This is a case study that I'm experiencing in real life. I'm trying to replicate the issue.

Wallet A - Balance 3i Wallet B - Balance 0i Wallet C - Balance 0i

I'm sending 3i from wallet A to wallet B. On wallet A I see the -3i transaction as pending. Balance on wallet A is still 3i and on wallet B is still 0i.

Using the light wallet (computer) I can't do another transaction from wallet A until the first one gets confirmed (key reuse error for preventing address-reuse). From Android wallet I can do another transaction because the Android wallet doesn't have this feature. [This is very dangerous because doing a key-reuse will expose your seed and you can have your money (IOTAs) stolen.]

Using the Android wallet I start another transaction of 1i from wallet A to wallet C. The transaction get confirmed. Balance on wallet A is 2i and on wallet C is 1i.


Wallet A - Balance 2i - one pending transaction of -3i Wallet B - Balance 0i - one pending transaction of 3i Wallet C - Balance 1i

Now, this is the problem: I have a pending transaction on wallet A of -3, but my balance is 2i. I need to get those 2i out ASAP because I already did a double-spending and my seed is already compromised. For this reason, I don't want to use the Android wallet anymore. From the light wallet (computer) I can't do another transaction because I'm getting the error "key-reuse". This is because the transaction of -3i is still in pending. So I have to confirm the transaction doing "reattach". However, in my wallet, there are not 3i but only 2i.

  1. What does reattach will do in this case?
  2. Can I delete the transaction of -3i?
  3. What can I do for transferring out of wallet A the 2i without compromising, even more, the seed?

[this is a case study, please refrain to comment on what I shouldn't have done]

  • 1
    You cannot delete any transaction. I told you like 3 times.
    – Tobi MZ
    Dec 5, 2017 at 8:51
  • @TobiMZ I think I have missed some comments, sorry for that. I thought that this was a better and clearer explanation of what could happen and how to avoid/solve the situation.
    – overkill22
    Dec 5, 2017 at 15:35
  • I improved your article. You need to be carefull with the words: address-reuse and double-spend. these are 2 different things.
    – Tobi MZ
    Dec 5, 2017 at 15:52
  • @TobiMZ I just noticed, I do mean double-spending, not address reuse. even though I have an address reuse issue. could you make this more clear so I can add it to the question? it appears that here now there are 2 problems, one is key reuse, another is double spending. is that right?
    – overkill22
    Dec 6, 2017 at 2:54

2 Answers 2


Reattachments won't help and the transfer can't be deleted. Sending 1i to A will help because after that the pending transfer won't be a doublespending.

  • Looks like a comment rather than a full answer.
    – Helmar
    Dec 5, 2017 at 12:44
  • @come-from-beyond please elaborate your answer.
    – overkill22
    Dec 5, 2017 at 15:34
  • 2
    Err... not sure what to add. Don't accept my answer and let a non-programmer to answer. Dec 5, 2017 at 16:12
  • @Come-from-Beyond I don't understand this sentence: "Sending 1i to A will help because after that the pending transfer won't be a doublespending" do you mean that if I send the missing 1i to wallet A, then I'll be able to reattach the pending transaction and it will get confirmed? but in this case, the bundle is already done, and it contains the address where the 3i were. If I send 1i, it will goes on another address that's not in the bundle and I can't reattach the old pending transaction because doesn't contain the new address. So how?
    – overkill22
    Dec 6, 2017 at 2:58
  • I assumed that you had needed that transfer for 3i to go through successfully. If you don't want that then create another transfer moving 2i to somewhere else. But in this case you will be reusing the address, it's not recommended. Dec 6, 2017 at 10:10

If you have 1i in another wallet (not related to the seed with your 2i address) - for example wallet C -, you can use that wallet to send 1i to the address of wallet A that currently has the 2i. Afterwards (when this transaction is confirmed), your balance of that address will be 3i, so you can reattach the pending 3i transaction again.

However, you should keep in mind, that the private key of address A is already partly compromised, so in this case you have a (smaller) probability that all 3i get stolen before you can reattach your address. If you send the 2i by doing yet another double-spend, you have a (larger, as more of your key is public) probability that a smaller amount (2i) gets stolen before your new transaction confirms.

[For the record, you will not compromise your seed, but "only" the public key of address A (which is derived from your seed). Other addresses from the same seed are safe.]

  • Please see the comment I left here iota.stackexchange.com/questions/540/… I'm not sure this will work. And if yes I'd like to understand how
    – overkill22
    Dec 6, 2017 at 3:03
  • Use the exact same address that you see in your pending transaction as send address, not a new address from the wallet. Then it will work. If you just send to a new address of the wallet, it will not work.
    – mihi
    Dec 6, 2017 at 19:28
  • this is an interesting approach. Is it sure it will work? Could you recreate the event with this method?
    – overkill22
    Dec 7, 2017 at 0:16
  • It should work. Did you try it and it did not? Then please post your transaction hashes.
    – mihi
    Dec 7, 2017 at 22:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.