ZeppelinOS is a development platform used to develop, deploy, and manage upgradable contracts. The platform uses the Truffle framework, which is built especially for managing upgradable contracts.
As we discussed earlier, there is no native way to write an upgradable contract on the Ethereum blockchain, hence developers are left with some patterns with which they can make contracts upgradable. One such design pattern is the proxy design pattern, in which a contract behaves like a proxy to forward function calls to the target contracts. The administrator of the proxy contract can change the target contract; however, one limitation of the proxy design pattern is that the contract API cannot be changed. The function API that was being supported by the proxy contract is only able to forward the call to the target contract because, once it has been deployed...