Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
The Unlock smart contract needs to be upgradable, without changing its address and its data (balances of Unlock points or deployed Locks).
The [Unlock.sol smart contract](https://github.com/unlock-protocol/unlock/blob/master/smart-contracts/contracts/Unlock.sol) has 3 main purposes:
* Deploy locks and keep track of them
* Keep track of the the Discount Token supply: grant them upon referrals.
* Grant corresponding discounts on key purchases
A lot of the logic will be implemented later and will be adjusted as we make progress in understanding how the Unlock network is functioning. For that reason, it is important that we use an `Upgradeable` approach so that we can incrementally add and update the functionality of that smart contract.
For this we want to use the "Unstructured Storage Proxy" described by @leanthebean in [this article ](https://blog.zeppelinos.org/proxy-patterns/)