Implementing advanced solutions using proxy contracts
The word proxy means on behalf of. Proxy is one of the established patterns in the design pattern world. Generally, functions are directly invoked in a smart contract. This induces tight coupling between the caller and the contract called. To induce upgradability and manageability, this direct link between contracts should be removed and an additional abstraction called proxy contracts introduced instead. The proxy contract stays in between the caller and called contract and ensures that a two-way request-response operation can be handled between them.
In a proxy contract implementation, the caller does not invoke functions directly on the target contract. Instead, the caller knows about the proxy contract and invokes functions on the proxy contract. It is the job of the proxy contract to take the request from the caller contract, optionally modify the request, and invoke the actual function from the main contract implementing...