Example of one contract in four variations of upgradability
The contract is a kind of bank lockers, that can accept/return user ether with help of commit/reveal pattern, and has a reentrancy vulnerability in first version, fix in second
Hardhat tests inlcuded