Introduction
Proxies are essential in smart contract development for Ethereum and other blockchains, allowing contract upgrades without redeployment. Understanding the differences between Transparent and UUPS (Universal Upgradeable Proxy Standard) proxies is crucial for selecting the right approach.
Transparent Proxies
How They Work
Storage of Implementation Address: Transparent proxies store the address of the implementation contract in their storage.
Call Forwarding: They forward calls to the implementation contract.
Upgrade Process
Admin Involvement: The admin updates the implementation contract address using the
upgrade()
function.Storage Update: The proxy updates its storage to point to the new implementation.
Characteristics
Simplicity: They are easier to understand and implement.
Admin-Centric Upgrades: Upgrades are centrally managed by an admin.
UUPS Proxies
How They Work
Use of Logic Contract: Utilizes a logic contract containing all the code.
Call Forwarding: All calls are forwarded to the logic contract.
Upgrade Process
Deploying New Logic Contract: Deploy a new logic contract first.
Proxy Upgrade Function: Call
upgrade()
on the proxy, passing the new logic contract address.Indirect Storage Update: The logic contract dictates the upgrade logic, indirectly influencing the proxy storage.
Characteristics
Flexibility: Offers more flexibility in upgrades.
Complexity: More complex than transparent proxies.
Enhanced Security: Generally offers better security features.
Comparison Table: Transparent vs UUPS Proxies
Feature | Transparent Proxy | UUPS Proxy |
Upgrade Process | Admin calls upgrade() with new implementation contract address. | Proxy forwards calls to a logic contract with self-contained upgrade logic. |
Gas Overhead | Higher due to extra storage and admin management steps. | Lower as the logic is embedded within the contract itself. |
Flexibility | Less flexible as upgrades are admin-driven and depend on external contract changes. | More flexible, allowing for a variety of upgrade patterns and logic contained within the contract itself. |
Conclusion
Choosing between Transparent and UUPS proxies depends on your project's needs. While Transparent proxies are simpler, UUPS proxies offer more flexibility and security. Generally, UUPS proxies are recommended unless there's a specific reason to choose Transparent proxies. Proxies, overall, provide a powerful means to make smart contracts upgradeable and adaptable over time.