Once a smart contract is deployed in the Ethereum network, its code cannot be changed at any point. State values can be modified if this was allowed in the original code. This brings the great advantage of immutability and trust, but with a cost. The addition of a new feature, or even a bug fix, cannot be performed due to the design of Ethereum.
In this recipe, we will focus on designing and creating upgradable smart contracts that can help maintain the application better.