Is there a way to make a smart contract NON-upgradeable on Near?
By default I can always overwrite a contract at an account address. This is different from Ethereum where after deployment the contract gets a new address after which it is by default non-upgradeable.
Contract can be locked by removing the full-access key:
https://docs.near.org/develop/deploy#locking-a-contract