Improve MASP fee payment UX
Some suggestions coming from https://github.com/anoma/namada/issues/3961#issuecomment-2447810438 (thanks @Rigorously).
The implementation of masp fee payment in the client (as of #3959) has some flaws:
- The client always require to pass in a
gas-spending-keywhen usingdisposable-gas-payer. We could actually imply the usage of the--sourceand allow the second arg to be optionally used when we want to use a different key for the fees - Using
--gas-payer(or--signing-keys) when the source of a transfer is the MASP is still allowed but it's unsafe because it leaks information. In this case we should always use a new disposable address and unshield the funds from the pool. We should prevent the usage of that argument in these cases or at least limit it to dev/testing scenarios - Because of the previous two points we might be able to just remove the
disposable-gas-payerargument altogether
Another thing to consider: we currently return "insufficient funds" errors from some sdk calls, which are inaccurate. The underlying errors are due to the MASP fee payment gas limit protocol parameter being exceeded. This is likely related to https://github.com/anoma/namada/issues/3961#issuecomment-2457144586.
Regarding the second point we might still allow paying fees transparently but we'll put the option behind some unsafe flag and display a message to the user explaining the information leakage.
cc @brentstone