I am a Subspace miner. Recently, after executing the transfer_all(keep_alive=false) transaction, I’ve encountered some unusual issues:
My account keeps generating extrinsics with the transfer_all method.
The nonce of my account has been reset to 0.
I’m concerned about whether this will impact my mainnet rewards. Has anyone else experienced this or can provide some guidance on what might be happening?
If your balance goes below minimum, account is removed from chain state. It doesn’t affect your farming rewards for mainnet purposes though since for that we’re counting number of rewards you’ve got, it doesn’t matter if/where you have transferred them afterwards.
I have conducted further tests. After executing the transfer_all(keep_alive=false) transaction, I manually transferred tokens to this account via Subwallet. The Subspace chain did not automatically generate new transfer_all transactions. However, every time this account receives block rewards, the Subspace chain automatically generates a new transfer_all message. I am quite perplexed by this behavior. @nazar-pc
I have no idea what generates transfer_all transactions, but it is not the chain itself. Rewards are coming from block or vote do not involve transfer_all since they are new coins minted that do not have a sender.
There must be some app that is monitoring what is happening on chain and doing some transfers. If you send a transaction it will be shown in explorer (unless indexing is buggy) and if you don’t there will not be. What you’re saying seems to be the exact opposite: transaction is shown when there isn’t any and not shown when there is, which doesn’t make much sense to me.
The three accounts I attached above all executed transfer_all using exactly the same operation. However, their behaviors are completely different. The balances in the last two accounts are not transferred away, but the BLOCK REWARDS of the first account are always transferred away by automatically generated transfer_all transactions. I assure you that I do not have any programs automatically sending transactions.
I do see transactions in those accounts (though currently the accounts are gone from chain state due to low balance). As already said, there is no “automatically generated transfer_all transactions”, those are the transactions that you (or someone else with access to private keys) sent to the blockchain. Blockchain itself doesn’t generate such transactions.
Did you notice that the signatures of the automatically generated transactions are all identical?
Even if these transactions were sent by me (which they were not), does this also constitute a replay attack?
I think replay attack is possible, but not necessarily happening. If transactions are literally identical (for example I don’t see mortality there) and account is re-created with nonce reset then yes, the same transaction might become valid later.
Transactions are sent to the network, so by composing a specfic transaction it is technically possible for it to become valid later and re-accepted by another block proposer, which to you would look like transaction is auto-generated, but it is not because there is no such feature in the blockchain.
If you intend to send balances from one account to another I would recommend you to not use keep_alive=false to avoid such issues. That call has a very narrow use case when you don’t care about account anymore and just want to remove all the funds.