Using the same logic as the previous exercise, we will build the same Score contract but by keeping the data and logic separately.
Implement the data contract which stores uint for score
implement the logic contract which uses the data contract
Deploy the contracts and test that you can update the value of score
Implement LogicV2 contract which as before updates the
setter function such that it adds 1 to the value being set
Perform the upgrade and disable logicV1 contract
Do the above 6 steps but for a simple token contract
Extend the Storage contract with StorageV2 which calls Storage to access the old storage and for any new storage, keeps it within itself
Extends StorageV2 with StorageV3 which either talks to both Storage and StorageV2 or Just talks to Storage.
Use inheritance to support extending the contract and override the functions to call super contract if function not changed in this implementation