transaction_version
should increment if an extrinsic's parameters are modified. Same if an existing index changes for either an extrinsic or module.
That makes sense. If a transaction that used to be valid and has been modified such that it is now invalid, but could be valid.
It also does NOT need to change if we add NEW stuff.
I don't understand why transaction_version
should change (as implied from the docs) if an extrinsic or module is removed.
Docs: https://paritytech.github.io/substrate/master/sp_version/struct.RuntimeVersion.html
This number must change when ...a dispatchable being removed, a module being removed...
Granted something can then construct a previously valid transaction, but will be rejected by the chain, but that doesn't appear to be a security risk.
Any additional details to help understand this requirement or is it old documentation from before #[pallet::call_index(n)]
?