Bug: a non existing account can execute extrinsics
If a non existing account submit an extrinsic, the extrinsic will be writen in a bloc, then this will increment the account nonce, even if the account not exist.
This behavior is a bug, and it causes 2 problems:
- it allows to pollute the storage for free, by creating a new account in the pallet system (it is the increment of the nonce that creates the account).
- The account created in this way will not pay the account creation tax, will not be deleted either, and no random id will be assigned to it, thus creating an inconsistency in the storage.
Scenario to reproduce:
- Submit any extrinsic form a non-existing account.
- Read the account data in pallet system storage, you will see that the account exists with nonce 1.
- Transfer some founds to this "new" account.
- One block after, nothing happened. The account creation tax it not collected, the account will not be deleted either, and no random id will be assigned to it.