I found the as_derivative()
function call in the FRAME Utility pallet which suggests that I can use it to call a function from address_A on behalf of address_B, provided that address_B was made as a derivative account from address_A.
Using the polkadot.js extension I created a derivative account from address_A and funded it with some test tokens. Then using the polkadot.js/apps extrinsics tab I wrapped a basic transfer_keep_alive()
in a call to as_derivative()
so that I would be able to submit and pay for transaction fees using address_A, but the transfer amount would be sent from address_B.
However, when I submit the transaction I receive a Balance.InsufficientBalance error. I have double-checked that the derivative address I made with the polkadot.js extension does in fact have a sufficient amount of tokens, so I am not sure what I am missing.