What's the pros and cons of having upgradable proxy contracts rather than having non- upgradable contracts or token.
Upgradeable contracts allow you to modify the impl of the contract, whether or not you need this depends on your project. Another point not really talked about much is that upgradeability allows you to fix bugs on your contract.
The downside to upgradeable contracts is that there is a privileged role that is in charge of handling this upgrade (could be a multisig, or some governance smart contract) but if you already have a privileged role in your project e.g. owner / admin, this doesn't make much of a difference.
Only some maximalists will call you out for it for being centralised but hey, to each their own.
Can we make a upgradable contract (proxy contract) a normal or non-upgradable contract again if we wish to?
You can "burn" the private keys that control the upgrade proxy, making the upgrade never again possible in the future.
the pros and cons of upgradable vs non-upgradable can depend on your intentions and guarantees to the contract users.
with an upgradable contract you can fix bugs, but if the admin can change the implementation, and this is a risk. the admin key may be hacked. the admin can change the implementation and steal funds.
any funds in upgradable proxy contracts can be stolen by the holder of the admin key.
Thank you so much for this information.