NOTE: The Diamond Standard has been released. Make a user interface for that instead. See here: https://github.com/ethereum/EIPs/issues/2535

The transparent contract standard, ERC1538, is an upgradeable contract architecture that provides the following functionality:

A way to add, replace and remove multiple functions of a contract atomically (at the same time). Standard events to show what functions are added, replaced and removed from a contract, and why the changes are made. A standard way to query a contract to discover and retrieve information about all functions exposed by it. Solves the 24KB maximum contract size limitation, making the maximum contract size of a transparent contract practically unlimited. This standard makes the worry about contract size a thing of the past. Enables an upgradeable contract to become immutable in the future if desired.

Point number 2 above means that a user interface can show all the upgrades a contract has had, which includes function changes and written descriptions of the changes.

Point number 3 above means that a transparent contract stores within itself its own ABI — (the list of function names and arguments provided by the contract.). In the past user interfaces for contracts would ask the user to provide the ABI. With this standard this is no longer needed since transparent contracts provide their ABI.

A transparent contract works by forwarding all (or most) function calls to other (delegate) contracts. So looking purely at the ABI or source code of a transparent contract doesn’t tell you what it does. You have to look at the delegate contracts that it forwards function calls to. It would be great if a user interface was created to bring together all the delegate contract functions and source code so the the full functionality of a transparent contract can be viewed.

Here are things I would like to see in a user interface for transparent contracts: