I am looking for help wrapping my head around how upgrades to the SPL Token Program affect SPL Tokens that have already been deployed, and what the implications are for auditing.
For context, I am coming from the Ethereum ecosystem so auditing token functionality is straightforward - one contract at one address corresponds to one token, and the code for how that token will behave is all right there. SPL tokens, to the best of my understanding, are just chunks of data that can be interacted with based on Token Program logic. But because SPL Token Program logic itself is not immutable, it seems impossible to get the same assurances about token behavior as you would get with an Ethereum-based token. To illustrate:
Let's say I deployed SPL Token X on Jan 1. On Jan 2, the SPL Token Program gets updated so include a new function (I know that this wouldn't happen in practice, but bear with me for illustration purposes). Does Token X have access to that new function, or is its functionality "pinned" to the Jan 1 version of the code? If the former, how can I confirm on-chain what version of the SPL Token Program is currently being used without purely relying on the GitHub repo? If the latter, how can I check which version a given token is pinned to?
Like I said, I am coming from the Ethereum ecosystem so may be thinking about things the totally wrong way; thanks for bearing with me.