In order to be able to improve and secure the protocol, the following smart-contracts use UUPS Proxy pattern to make them upgradeable:
The UUPS proxy pattern was first documented in EIP-1822. Unlike Transparent pattern, in UUPS the upgrade logic is handled by the implementation contract itself. The UUPS implementation used by Shprd smart-contracts is the OpenZeppelin UUPSUpgradeable interface.
Vault smart-contracts use Beacon proxy pattern to be able to change the logic of all the vaults created at once. The beacon proxy pattern was first documented in EIP-1967. The Beacon implementation used by Shprd smart-contracts is the OpenZeppelin UpgradeableBeacon interface.