iotaledger / legacy-wallet-use-trinity-wallet-instead

IOTA Wallet
GNU General Public License v3.0
2.07k stars 413 forks source link

Surplus balance in desktop client, cannot move funds #586

Closed b-f- closed 6 years ago

b-f- commented 6 years ago

Now, I cannot move funds, because "PRIVATE KEY REUSE DETECTED".

Edit: Android wallet won't let me move funds to another seed's address.

Transactions in time: tr1: incoming [amount1, addr0]: pending (more than a week) tr2: incoming [amount1, addr0]: confirmed (same i/o as transaction tr1) Balance = amount1

tr3: outgoing [-amount1, addr0 -> addr1]: pending (more than a week) tr4: outgoing [-amount1, addr0 -> addr1]: pending (rebroadcast tr3) (more than a week) Balance = amount1

-- about same confirmation time after node change tr5.1 incoming [-amount2, addr0]: confirmed tr5.2 outgoing [-amount1, addr0 -> addr1]: confirmed (rebroadcast tr3) (unknown duration of pending) Balance = amount1 + amount2, but should be amount2

7 outgoing/incoming [-amount2, addr? -> addr3]: pending (new address, source and dest addr belong to same wallet seed) Balance = amount1 + amount2, but should be amount2

What can I do to resolve this?

elvis1965isik commented 6 years ago

wonky tonky, i am still busy to understand the iota wallet, and i think i lost my 2398 iotas, i wanted to send them to bitfinex, can you send a email to albert@mandrilvastgoed.nl i am willing to pay if you can recover my iotas.

b-f- commented 6 years ago

@wonkytonky Thank you for advice. There are pending transactions, indeed. I can only re-broadcast, but no option to re-attach. The point of the issue is, that recipient has balance of amount1, but my balance still shows same amount :) Normally I wouldn't complain about keeping whole iota balance after outgoing transaction is confirmed, but it's still an obvious and potentially serious bug and I can't move my funds :)

hank233 commented 6 years ago

@b-f- I have the exact same issue! Did you figure this out? Do you think we need to use the reclaim tool possibly?

b-f- commented 6 years ago

@hank233 No yet. Tried android wallet and moving funds to another seed. Android wallet rejects the transaction after a while, no useful debug info gained there. I'm still waiting for devs to instruct me what data to post here. I don't want to expose more data than absolutely necessary. Still, the posted debug dump is technically not entirely correct, as addresses are changed internally by wallet when sending (or not?). For now, I'll wait for the stress test to finish and hope we keep our funds or maybe a hand of IOTA god will show mercy and help solve this. Edit1: posted this problem on slack #lightwallet and "never heard of this occuring before" was the only response I got. Edit2: not if sure Reclaim Tool applies here. Wallet version here is 2.5.4. Perhaps it is a valid solution later on. Thanks for pointing it out. https://blog.iota.org/gui-wallet-phase-two-of-the-reclaim-process-f5913109cf46

hank233 commented 6 years ago

@b-f- is your seed key exactly 81 characters? I have a hunch that this might be the case. If yours is 81 then I might be mistaken then.

b-f- commented 6 years ago

@hank233 Interesting. I fail to see any causality between seed length and current situation. Why do you think this could be relevant?

hank233 commented 6 years ago

@b-f- is yours exactly 81?

hank233 commented 6 years ago

@b-f- because the older wallets required newer seeds to be exactly 81 characters. I'm not sure if they removed that necessity in the newer wallets. I really need this issue fixed. Do you think the new wallet will fix this? Or maybe do you think the reason we have extra iota in our wallets is because of a pending transaction that didn't full go through?

b-f- commented 6 years ago

My first install was with 2.5.4. So this issue is probably not bound to client version gap. I estimate there is a bug in IOTA transaction protocol logic and we both managed to trigger it somehow. On top of that bug, the wallet cannot handle that logic exception because wallet does not not expect it to exist at all. Such exceptions will be noticed and have to be solved if IOTA wants the protocol to be robust. Therefore some kind of resolution will have to be provided eventually, the only question is when. I hope this helps. If all else fails, I'll look into the code by myself, but have very little time to do so and little guarantee I'll be able to provide a solution.

hank233 commented 6 years ago

@b-f- do you think when they come out with a new wallet this could fix the issue? I need access to my iota.

b-f- commented 6 years ago

@hank233 A solution has been presented. Please read carefully, as this is not my expertise, but advice from IOTA facebook group, so there is a chance I interpreted it with error. 1 There is a Tangle snapshot update coming in the next days. Why is this important? Snapshot will clear out all transactions with status Pending and all addresses with Amount 0. After that, IOTA will signal when nodes are fully updated. https://forum.helloiota.com/4659/How-do-I-prepare-for-a-snapshot 2 When nodes are updated, find a moment, when network is most responsive with transaction confirmations (todo: how to dermine that?). The updated Tangle should be more responsive with confirmations. It's unknown, how much more, exactly. 3 When such moment in time is determined, move all funds in a single transaction to a new address in your wallet (beforehand, probably click Attach to get a brand new never used receiving address and attach the new one, too) and sit behind the screen until transaction is confirmed. 4 Hope everything goes well and funds are not stolen in the process, since our keys might have been exposed :)

Original advice (in case I misinterpreted something)

What you need to do is wait until after the snapshot. Then go through the reattach loop (I will be posting instructions about that today) Then you need to send all funds in your wallet to a new, unused address in your wallet and stay on top of it until it confirms. Hopefully after the snapshot confirmation will be a matter of minutes again so no hacker can get in between you sending the funds to an unused

b-f- commented 6 years ago

Long term solution proposal: since pvk reuse might occur to many users... is it possible ti implement a tool, which allows the user to securely move funds to a safe address without the risk of someone cracking the reused address during the process? How many full nodes would that require? Would such nodes, connected only to each other with a single Tangle neighbor be able to produce a valid confirmation?

ANDREVANZEGVELD commented 6 years ago

I can help if you like. Contact me in our iota group https://www.facebook.com/groups/iotatangle and send me a PM. I can unlock your wallet.