CometProxyAdmin
Deploy on AlchemyContract Information
This is the admin of the Comet and Configurator proxy contracts. It is a ProxyAdmin as recommended/implemented by OpenZeppelin according to their upgradeability pattern.
More Info
// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.15;
import "./vendor/proxy/transparent/ProxyAdmin.sol";
interface Deployable {
function deploy(address cometProxy) external returns (address);
}
contract CometProxyAdmin is ProxyAdmin {
/**
* @dev Deploy a new Comet and upgrade the implementation of the Comet proxy
* Requirements:
* - This contract must be the admin of `CometProxy`
*/
function deployAndUpgradeTo(Deployable configuratorProxy, TransparentUpgradeableProxy cometProxy) public virtual onlyOwner {
address newCometImpl = configuratorProxy.deploy(address(cometProxy));
upgrade(cometProxy, newCometImpl);
}
/**
* @dev Deploy a new Comet and upgrade the implementation of the Comet proxy, then call the function
* Requirements:
* - This contract must be the admin of `CometProxy`
*/
function deployUpgradeToAndCall(Deployable configuratorProxy, TransparentUpgradeableProxy cometProxy, bytes memory data) public virtual onlyOwner {
address newCometImpl = configuratorProxy.deploy(address(cometProxy));
upgradeAndCall(cometProxy, newCometImpl, data);
}
}
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Deployable","name":"configuratorProxy","type":"address"},{"internalType":"contract TransparentUpgradeableProxy","name":"cometProxy","type":"address"}],"name":"deployAndUpgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Deployable","name":"configuratorProxy","type":"address"},{"internalType":"contract TransparentUpgradeableProxy","name":"cometProxy","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"deployUpgradeToAndCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeAndCall","outputs":[],"stateMutability":"payable","type":"function"}]
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Deployable","name":"configuratorProxy","type":"address"},{"internalType":"contract TransparentUpgradeableProxy","name":"cometProxy","type":"address"}],"name":"deployAndUpgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Deployable","name":"configuratorProxy","type":"address"},{"internalType":"contract TransparentUpgradeableProxy","name":"cometProxy","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"deployUpgradeToAndCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeAndCall","outputs":[],"stateMutability":"payable","type":"function"}]
6080806040523461005b5760008054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09084a361086090816100618239f35b600080fdfe6080604081815260048036101561001557600080fd5b600092833560e01c90848263204e1c7a146106925750508063715018a6146106445780637eff275e146105b55780638da5cb5b1461058d5780639623609d146104a25780639627816f146103c157806399a88ec414610348578063c7d20733146101bf578063f2fde38b146101055763f3b7dead1461009357600080fd5b34610101576020366003190112610101576001600160a01b03908035828116908190036100fc57849182918551906303e1469160e61b82525afa926100d66107da565b93156100f957506100f18360208080965183010191016107bb565b169051908152f35b80fd5b600080fd5b8280fd5b5034610101576020366003190112610101576001600160a01b03813581811692908390036100fc5761013b828654163314610770565b821561016d5750600054928260018060a01b031985161760005551921660008051602061080b833981519152600084a3f35b608490602085519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b5090346101015760603660031901126101015781356001600160a01b03818116918290036100fc57602435908082168092036100fc5785946044356001600160401b03811161030b576102159036908301610729565b91610224818854163314610770565b855194634c96a38960e01b865284838701528560248160209b8c945af194851561033e57879561030f575b5061025e338289541614610770565b833b1561030b57855163278f794360e11b81529416908401526024830184905280516044840181905294958695915b8288106102f5575050828092816000606489978689978d116102e9575b601f01601f191681010301925af180156102dc576102c757505051f35b816102d1916106d5565b6102d85751f35b5080fd5b50505051903d90823e3d90fd5b878382840101526102aa565b878101820151858901606401529681019661028d565b8680fd5b610330919550883d8a11610337575b61032881836106d5565b8101906107bb565b933861024f565b503d61031e565b86513d89823e3d90fd5b50346101015781600319360112610101576001600160a01b0390803582811691908290036100fc576024358381168091036100fc5761038c86948554163314610770565b823b156103bd57602484928387519586948593631b2ce7f360e11b85528401525af180156102dc576102c757505051f35b8380fd5b50346101015781600319360112610101576001600160a01b03908035828116908190036100fc57602435928084168094036100fc5785936020859361040a848654163314610770565b6024885180968193634c96a38960e01b8352868a8401525af1928315610498578593610478575b50610440338387541614610770565b803b156104745784928360249288519687958694631b2ce7f360e11b865216908401525af180156102dc576102c757505051f35b8480fd5b61049191935060203d81116103375761032881836106d5565b9138610431565b86513d87823e3d90fd5b5060603660031901126101015780356001600160a01b03818116918290036100fc576024358181168091036100fc576044356001600160401b03811161030b576104f26104fd9136908701610729565b928754163314610770565b823b1561058957845163278f794360e11b815293840152602483018490528051604484018190528593929184905b82821061056e57509183606481848195899711610562575b601f01601f1916810103019134905af180156102dc576102c757505051f35b86838284010152610543565b6020818301810151606487850101528896509091019061052b565b8580fd5b5050346102d857816003193601126102d857905490516001600160a01b039091168152602090f35b508290346102d857826003193601126102d8576001600160a01b03813581811692908390036103bd5760243591808316809303610474576105fa908554163314610770565b823b156103bd57906024849283875195869485936308f2839760e41b85528401525af1801561063a5761062c57509051f35b81610636916106d5565b9051f35b83513d84823e3d90fd5b5050346102d857816003193601126102d85781546001600160a01b038116918391610670338514610770565b6001600160a01b0319168255519160008051602061080b8339815191528284a3f35b915091346102d85760203660031901126102d8576001600160a01b039281358481169291908390036103bd57635c60da1b60e01b815283925afa926100d66107da565b601f909101601f19168101906001600160401b038211908210176106f857604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116106f857601f01601f191660200190565b81601f820112156100fc578035906107408261070e565b9261074e60405194856106d5565b828452602083830101116100fc57816000926020809301838601378301015290565b1561077757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b908160209103126100fc57516001600160a01b03811681036100fc5790565b3d15610805573d906107eb8261070e565b916107f960405193846106d5565b82523d6000602084013e565b60609056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220aa11162a40de426bbeb9882a0b64d10a837069ba0fde6d992c0062e6a002033e64736f6c634300080f0033
6080806040523461005b5760008054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09084a361086090816100618239f35b600080fdfe6080604081815260048036101561001557600080fd5b600092833560e01c90848263204e1c7a146106925750508063715018a6146106445780637eff275e146105b55780638da5cb5b1461058d5780639623609d146104a25780639627816f146103c157806399a88ec414610348578063c7d20733146101bf578063f2fde38b146101055763f3b7dead1461009357600080fd5b34610101576020366003190112610101576001600160a01b03908035828116908190036100fc57849182918551906303e1469160e61b82525afa926100d66107da565b93156100f957506100f18360208080965183010191016107bb565b169051908152f35b80fd5b600080fd5b8280fd5b5034610101576020366003190112610101576001600160a01b03813581811692908390036100fc5761013b828654163314610770565b821561016d5750600054928260018060a01b031985161760005551921660008051602061080b833981519152600084a3f35b608490602085519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b5090346101015760603660031901126101015781356001600160a01b03818116918290036100fc57602435908082168092036100fc5785946044356001600160401b03811161030b576102159036908301610729565b91610224818854163314610770565b855194634c96a38960e01b865284838701528560248160209b8c945af194851561033e57879561030f575b5061025e338289541614610770565b833b1561030b57855163278f794360e11b81529416908401526024830184905280516044840181905294958695915b8288106102f5575050828092816000606489978689978d116102e9575b601f01601f191681010301925af180156102dc576102c757505051f35b816102d1916106d5565b6102d85751f35b5080fd5b50505051903d90823e3d90fd5b878382840101526102aa565b878101820151858901606401529681019661028d565b8680fd5b610330919550883d8a11610337575b61032881836106d5565b8101906107bb565b933861024f565b503d61031e565b86513d89823e3d90fd5b50346101015781600319360112610101576001600160a01b0390803582811691908290036100fc576024358381168091036100fc5761038c86948554163314610770565b823b156103bd57602484928387519586948593631b2ce7f360e11b85528401525af180156102dc576102c757505051f35b8380fd5b50346101015781600319360112610101576001600160a01b03908035828116908190036100fc57602435928084168094036100fc5785936020859361040a848654163314610770565b6024885180968193634c96a38960e01b8352868a8401525af1928315610498578593610478575b50610440338387541614610770565b803b156104745784928360249288519687958694631b2ce7f360e11b865216908401525af180156102dc576102c757505051f35b8480fd5b61049191935060203d81116103375761032881836106d5565b9138610431565b86513d87823e3d90fd5b5060603660031901126101015780356001600160a01b03818116918290036100fc576024358181168091036100fc576044356001600160401b03811161030b576104f26104fd9136908701610729565b928754163314610770565b823b1561058957845163278f794360e11b815293840152602483018490528051604484018190528593929184905b82821061056e57509183606481848195899711610562575b601f01601f1916810103019134905af180156102dc576102c757505051f35b86838284010152610543565b6020818301810151606487850101528896509091019061052b565b8580fd5b5050346102d857816003193601126102d857905490516001600160a01b039091168152602090f35b508290346102d857826003193601126102d8576001600160a01b03813581811692908390036103bd5760243591808316809303610474576105fa908554163314610770565b823b156103bd57906024849283875195869485936308f2839760e41b85528401525af1801561063a5761062c57509051f35b81610636916106d5565b9051f35b83513d84823e3d90fd5b5050346102d857816003193601126102d85781546001600160a01b038116918391610670338514610770565b6001600160a01b0319168255519160008051602061080b8339815191528284a3f35b915091346102d85760203660031901126102d8576001600160a01b039281358481169291908390036103bd57635c60da1b60e01b815283925afa926100d66107da565b601f909101601f19168101906001600160401b038211908210176106f857604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116106f857601f01601f191660200190565b81601f820112156100fc578035906107408261070e565b9261074e60405194856106d5565b828452602083830101116100fc57816000926020809301838601378301015290565b1561077757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b908160209103126100fc57516001600160a01b03811681036100fc5790565b3d15610805573d906107eb8261070e565b916107f960405193846106d5565b82523d6000602084013e565b60609056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220aa11162a40de426bbeb9882a0b64d10a837069ba0fde6d992c0062e6a002033e64736f6c634300080f0033