As of Thursday, EIP 1167: Minimal Proxy Contract, created by Peter Murray, Nate Welch, and Joe Messerman, entered “last call.” The EthereumImprovement Proposal is open for comment for the next two weeks, after which time, assuming everything goes well, the code will be considered finalized. If it is rejected by the community, the EIP will re-enter draft status.
The proposed standard applies to the functionality of cloned contracts and is intended to reduce gas prices in cloned contracts. Specifically, EIP 1167 allows any number of cloned contracts to redirect calls to one known address (known as the master contract), and for users to trust that the master contract will behave in the same manner as the redirecting contracts. The trustworthiness of the code hinges on its immutability: Once deployed on a master contract, the code cannot be changed and the master contract is irreplaceable. If the master contract self-destructs, all cloned contracts will cease working.
The reliance of the cloned contracts on the master contract and the master contract’s immutability may foster user trust, but it’s also a central weakness. You may remember the Parity multisig fiasco. Though this was not a case of cloned contracts, it does illustrate the vulnerability inherent to reliance on a central contract. All of Parity’s multisig wallets linked back to one library contract, but there was a vulnerability that led to the contract’s self-destruction. All 587 wallets connected to the library, which together contained a total of 513,774.16 Ether, were frozen.
Social coder and writer for Giveth Bowen Sanders explained to ETHNews that, through this EIP, the cloned contracts are not replications of the entire master contract, but are “minimal proxies” (hence the EIP’s name) that allow a coder to slim down a bulky contract to its essential parts. The minimal proxies then rely on the master contract for full functionality. Sanders explained:
“[As it is,] thousands and thousands of contracts are routinely cloned, taking up unnecessary space and bloating the data segment of the blockchain. This data space could be used for things other than multiple clones of the same contract. There are certain contracts which need to be cloned for usage and security, such as with the ConsenSys or Gnosis multi-signature wallets, but many cases of these clones could re-use the original contract with a proxy contract routing the calls in and out of the original. This would save huge amounts of space.”
The other major function of this standard is that it specifies the creation of a contract that will allow third parties, such as Etherscan, to interrogate the bytecode of the redirecting (cloned) contracts and determine the location of the master contract.
On a technical level, EIP 1167 would standardize “on a known minimal bytecode redirect implementation.” If finalized, this guideline will affect all developers attempting to build a system of cloned minimal proxy contracts that redirect calls to the original, master contract.