I don’t know what the hell just happened, but I sent 55,700 sys to Binance for a cash out, and somehow the same transaction sent the rest of my change to a completely unknown address! I think I might’ve lost 45,228 syscoins! But I have no idea how the hell this happened, or if this a wallet bug or Binance issue. Anything you can think of?
Where the hell did sys1qn7l9k2lfuar8s0ek2pulaeglzqatlcu5cps09l come from? I didn’t (knowingly) send syscoin there!?
Also, looking back at my wallet, a similar thing also seemed to have happened last year, except the funds were immediately returned. here 2,000 syscoin were sent to binance, and 92,880 went to sys1qyahnl6t3jc24vn5ld7w6kvpc4kwv7ksg2j2k8z (an address apparently not in my wallet), and then from there it went back to my wallet in about two minutes by another transaction which has zero transaction fees.
I don’t understand this intermediate address and how the hell my wallet apparently made change into it, and then how it came back.
What you’ve described is how a cryptocurrency transaction works, when you send coins from one address, the “change” is sent to another address also controlled by your wallet.
I see that, but in this case my wallet doesn’t seem to be in control of the change address?! Or is there some inter-chain activity here, where it maybe sending the change to the 3.0 or 4.0 Syscoin blockchain?
I notice that the address are of a different form, Can you help my wallet locate its own private key for a legacy blockchain?
On the [Send] tab in QT you need to click the [Inputs…] button and specify which inputs you want to send from, you should see all the addresses that your wallet has there.
SSrk7g…5CBVD is the legacy address of your masternode. You had to create it with the special legacy option.
sys1qn7…ps09l is a Bech32 address, the default format now that the wallet uses to create new addresses.
Whenever you send coins from 1 address to another, the change goes to a change address taken from your wallets address pool.
I.e.: You did send 55k coins to Binance from an address that had 100k coins, the remaining 45k coins are send to an change address from your wallets address pool. As long as you are not setting a custom change address, the wallet is choosing one that you haven’t used before as a security measure. Depending how quick your transaction gets propagated, it can take a moment for the change to show up in your wallet. Same can happen if you send coins to yourself (in wallet transfer).
It is a visual thing that a pending transaction already shows the coins as sent; as soon a the transaction is accepted by the network, the change shows up too.
If you are fully synced and on a fast connection with good peers, you have to watch it closely to realize it.
Nothing special to syscoin.
I understand that my wallet is supposed to use a change address when sending transactions, however in this case my wallet somehow selected a change address which was not in my wallet address pool.
And that’s the issue I had. Fortunately, there must’ve been a slightly different wallet.dat file in one of my backups, and the funds appeared after I loaded one of those.
So the question is: Could there be a bug in the QT-wallet where it’s selecting change addresses from a legacy address pool, which is no longer held in the wallet?
By the way, what’s the command for dumping a human readable text file of the addresses and private keys held by the wallet?
in debug console: dumpwallet “filename”
This dumps all keys (masterkey, private and public keys, hdkeypath) into a text file.
BE VERY CAREFUL WITH THIS!
ANYONE WITH ACCESS TO THAT TEXT FILE CAN STEAL YOUR COINS!
A wallet gets generated with 2 address pools, one for nomal receiving addresses and one for change addresses. Both with a size of 1000 keys.
The key pools are generated from the masterkey, but in a stochastic way. This means if you generate the key pools twice from the same masterkey, the keys in the pools will not be identical.
Additional: After you have used a certain amount of keys, the wallet will general additional ones to fill the related pool of unused addresses up again. So after some time of use, even two wallets that started with the same set of first generated keys will have different additional keys generated.
All keys are generated from the masterkey. There is a command line option to generate a bigger keypool. With a big enough increase for the keypool size you have a chance to catch those keys one copy of your wallet has generated and the other copy hasn’t (or you can simply import those from the other wallet). I have heard of cases where it took a really large pool increase to catch the missing keys with coins.
Lesson is: Don’t work with more than one version of a wallet. If you need more than one wallet, create the additional ones new. Actively working with several copies of the same original wallet is begging for trouble.
I guess from now on, every computer with a syscoin wallet will need to be periodically synced, so that they each have the same wallet with the same keys.
Also, to ensure this doesn’t happen, I can use a custom change address known to exist on each of the several computers that I use for syscoin. That way no matter which computer I use, the wallet address database will remain the same.
Please let me know if you see a problem in my procedure.