Allow transaction payment from proxy target account
For example, I have main account A, which have a proxy with account B. In order to invoke call from account A via B, I need to make sure account B have enough funds for transaction fees.
It will be better to have ability to let account A to pay the transaction fee, so account B does not need to have any funds.
This will make rotate signing account easy. Just add account C and remove B, without worry about transfer funds around.
In order to implement this, we need a SignedExtension to validate the proxy call to prevent it from been included into transaction pool / block if the proxy is invalid.
And customize transaction payment pallet so it is possible to pay transaction fee using a different account.
And adjust nonce / account ref code so that the nonce of account B get wiped when it is not a signing account for any other accounts & have no existential deposit.
This would double the pre-payment storage i/o (which is the one thing that must be kept at an absolute minimum, since it's an open DoS vector), and that's assuming you have a new transaction extension to make it clear which account should be the one to pay and compare/increment nonce.
It would also only work for single-level proxying, which is of limited use. A proxy to a multisig to a proxy (three-levels of indirection deep) is a pretty useful use-case and this would quadruple the storage i/o.
Alternative way is allow account to approve another account to use it as the funding source of tx fee. This can also increase provider count for the spending account. So it will be just one more storage read to fetch funding source. If we bake this into system AccountData, there won't be any additional storage access.
Hey, is anyone still working on this? Due to the inactivity this issue has been automatically marked as stale. It will be closed if no further activity occurs. Thank you for your contributions.
This is a very needed feature. It will improve the UX of the dapps built on top of Substrate when dealing with dapp's session keys (proxy accounts).
This issue has been mentioned on Polkadot Forum. There might be relevant details there:
https://forum.polkadot.network/t/proxy-pallet-on-steriods/292/3