Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
ProxyAdmin
Compiler Version
v0.8.24+commit.e11b9ed9
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/access/Ownable.sol"; contract ProxyAdmin is Ownable { // Передаём адрес владельца базовому конструктору Ownable constructor() Ownable(msg.sender) {} event ProxyUpgraded(address proxy, address implementation); // Получение адреса реализации через вызов функции implementation() на прокси function getProxyImplementation(address proxy) public view returns (address) { (bool success, bytes memory returndata) = proxy.staticcall( abi.encodeWithSignature("implementation()") ); require(success, "Call failed"); return abi.decode(returndata, (address)); } // Обновление реализации через вызов функции upgradeTo(address) на прокси function upgrade(address proxy, address newImplementation) public onlyOwner { (bool success, ) = proxy.call( abi.encodeWithSignature("upgradeTo(address)", newImplementation) ); require(success, "Upgrade failed"); emit ProxyUpgraded(proxy, newImplementation); } function upgradeAndCall(address proxy, address newImplementation, bytes calldata data) public payable onlyOwner { (bool success, ) = proxy.call( abi.encodeWithSignature("upgradeToAndCall(address,bytes)", newImplementation, data) ); require(success, "Upgrade and call failed"); emit ProxyUpgraded(proxy, newImplementation); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {Context} from "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
{ "evmVersion": "paris", "optimizer": { "enabled": true, "mode": "3" }, "outputSelection": { "*": { "*": [ "abi", "metadata" ], "": [ "ast" ] } }, "detectMissingLibraries": false, "forceEVMLA": false, "enableEraVMExtensions": false, "libraries": {} }
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"proxy","type":"address"},{"indexed":false,"internalType":"address","name":"implementation","type":"address"}],"name":"ProxyUpgraded","type":"event"},{"inputs":[{"internalType":"address","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":"address","name":"proxy","type":"address"},{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"proxy","type":"address"},{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeAndCall","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
9c4d535b0000000000000000000000000000000000000000000000000000000000000000010000ade3ba11e2686ae8d8bbb96e13f8ee17b702af2547b78d2c7abe7c159600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x00010000000000020002000000000002000000800a0000390000004000a0043f00000001002001900000001e0000c13d000000000301034f00000060011002700000008702100197000000040020008c000000ef0000413d000000000123034f000000000403043b000000e0044002700000008d0040009c000000290000213d000000910040009c000000630000613d000000920040009c000000ca0000613d000000930040009c000000ef0000c13d0000000001000416000000000001004b000000ef0000c13d000000000100041a0000008901100197000000800010043f000000a301000041000002170001042e0000000001000416000000000001004b000000ef0000c13d0000000006000411000000000006004b0000004e0000c13d0000009601000041000000800010043f000000840000043f000000950100004100000218000104300000008e0040009c000000780000613d0000008f0040009c000000e20000613d000000900040009c000000ef0000c13d000000240020008c000000ef0000413d0000000001000416000000000001004b000000ef0000c13d0000000401300370000000000601043b000000890060009c000000ef0000213d000000000100041a00000089021001970000000005000411000000000052004b000000f10000c13d000000000006004b000000240000613d0000008801100197000000000161019f000000000010041b0000000001000414000000870010009c0000008701008041000000c0011002100000008a011001c70000800d0200003900000003030000390000008b040000410216020c0000040f0000000100200190000000e00000c13d000000ef0000013d000000000100041a0000008802100197000000000262019f000000000020041b00000000020004140000008905100197000000870020009c0000008702008041000000c0012002100000008a011001c70000800d0200003900000003030000390000008b040000410216020c0000040f0000000100200190000000ef0000613d0000002001000039000001000010044300000120000004430000008c01000041000002170001042e000000240020008c000000ef0000413d0000000002000416000000000002004b000000ef0000c13d0000000402300370000000000202043b000000890020009c000000ef0000213d000000a403000041000000a00030043f0000000403000039000000800030043f000000c003000039000000400030043f0000000003000414000000040020008c000000f60000c13d00000000040000310000000002000019000001000000013d000000640020008c000000ef0000413d0000000404300370000000000a04043b0000008900a0009c000000ef0000213d0000002404300370000000000b04043b0000008900b0009c000000ef0000213d0000004404300370000000000604043b000000990060009c000000ef0000213d0000002304600039000000000024004b000000ef0000813d0000000405600039000000000453034f000000000404043b000000990040009c000000ef0000213d00000000064600190000002406600039000000000026004b000000ef0000213d000000000200041a00000089062001970000000002000411000000000026004b0000015e0000c13d0000009f02000041000000a00020043f000000a400b0043f0000004002000039000000c40020043f0000002002500039000000000323034f000000e40040043f000000ab054001980000001f0640018f0000010402500039000000a90000613d0000010407000039000000000803034f000000008908043c0000000007970436000000000027004b000000a50000c13d000000000006004b000000b60000613d000000000353034f0000000305600210000000000602043300000000065601cf000000000656022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f0000000000320435000001040240003900000000000204350000001f02400039000000ab02200197000000a303200039000000ab033001970000006402200039000000800020043f000000a00030009c000001fc0000213d00010000000b001d0000008003300039000000400030043f00000000040004140000000400a0008c00020000000a001d000001be0000c13d00000001020000390000000004000031000001cd0000013d0000000001000416000000000001004b000000ef0000c13d000000000100041a00000089021001970000000005000411000000000052004b000000f10000c13d0000008801100197000000000010041b0000000001000414000000870010009c0000008701008041000000c0011002100000008a011001c70000800d0200003900000003030000390000008b0400004100000000060000190216020c0000040f0000000100200190000000ef0000613d0000000001000019000002170001042e000000440020008c000000ef0000413d0000000002000416000000000002004b000000ef0000c13d0000000402300370000000000902043b000000890090009c000000ef0000213d0000002402300370000000000a02043b0000008900a0009c0000013d0000a13d000000000100001900000218000104300000009401000041000000800010043f000000840050043f00000095010000410000021800010430000000870030009c0000008703008041000000c001300210000000a5011001c7021602110000040f000000800a000039000000010220015f0000006003100270000000870030019d0000008704300197000000000004004b000001160000c13d000000600300003900000001002001900000014f0000613d000000400100043d0000004402100039000000aa03000041000000000032043500000024021000390000000b0300003900000000003204350000009d020000410000000000210435000000040210003900000020030000390000000000320435000000870010009c000000870100804100000040011002100000009e011001c700000218000104300000001f03400039000000ab033001970000003f03300039000000ab06300197000000400300043d0000000006630019000000000036004b00000000070000390000000107004039000000990060009c000001fc0000213d0000000100700190000001fc0000c13d000000400060043f000000000a430436000000ab054001980000001f0640018f00000000045a00190000012f0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b0000012b0000c13d000000000006004b000001030000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000001030000013d000000000200041a00000089032001970000000002000411000000000023004b0000015e0000c13d0000009702000041000000a00020043f000000a400a0043f0000002402000039000000800020043f000000e003000039000000400030043f0000000002000414000000040090008c000001630000c13d00000001020000390000000004000031000001720000013d0000000001030433000000a80010009c000000ef0000213d000000200010008c000000ef0000413d00000000010a0433000000890010009c000000ef0000213d000000400200043d0000000000120435000000870020009c00000087020080410000004001200210000000a9011001c7000002170001042e0000009401000041000000800010043f000000840020043f00000095010000410000021800010430000000870020009c0000008702008041000000c00120021000000098011001c70000000002090019000200000009001d00010000000a001d0216020c0000040f000000010a0000290000000209000029000000010220018f0000006003100270000000870030019d0000008704300197000000400300043d000000000004004b000001990000613d0000001f06400039000000ab066001970000003f06600039000000ab066001970000000006630019000000000036004b00000000070000390000000107004039000000990060009c000001fc0000213d0000000100700190000001fc0000c13d000000400060043f0000000006430436000000ab054001980000001f0440018f00000000035600190000018b0000613d000000000701034f000000007807043c0000000006860436000000000036004b000001870000c13d000000000004004b000001980000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000000400300043d000000000002004b000001ab0000c13d00000044013000390000009c02000041000000000021043500000024013000390000000e0200003900000000002104350000009d010000410000000000130435000000040130003900000020020000390000000000210435000000870030009c000000870300804100000040013002100000009e011001c7000002180001043000000020013000390000000000a104350000000000930435000000870030009c000000870300804100000040013002100000000002000414000000870020009c0000008702008041000000c002200210000000000112019f0000009a011001c70000800d0200003900000001030000390000009b040000410216020c0000040f0000000100200190000000e00000c13d000000ef0000013d000000870020009c00000087020080410000006001200210000000870040009c0000008704008041000000c002400210000000000112019f000000a1011001c700000000020a00190216020c0000040f000000010220018f0000006003100270000000870030019d0000008704300197000000400300043d000000000004004b000001f40000613d0000001f05400039000000ab055001970000003f05500039000000ab055001970000000005530019000000000035004b00000000060000390000000106004039000000990050009c000001fc0000213d0000000100600190000001fc0000c13d000000400050043f0000000006430436000000ab054001980000001f0440018f0000000003560019000001e60000613d000000000701034f000000007807043c0000000006860436000000000036004b000001e20000c13d000000000004004b000001f30000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000000400300043d000000000002004b000002020000c13d0000004401300039000000a202000041000000000021043500000024013000390000001702000039000001a00000013d000000a601000041000000000010043f0000004101000039000000040010043f000000a701000041000002180001043000000020013000390000000102000029000000000021043500000002010000290000000000130435000000870030009c000000870300804100000040013002100000000002000414000001b20000013d0000020f002104210000000102000039000000000001042d0000000002000019000000000001042d00000214002104230000000102000039000000000001042d0000000002000019000000000001042d0000021600000432000002170001042e000002180001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000009623609c000000000000000000000000000000000000000000000000000000009623609d0000000000000000000000000000000000000000000000000000000099a88ec400000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000204e1c7a00000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000008da5cb5b118cdaa70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000008000000000000000001e4fbdf7000000000000000000000000000000000000000000000000000000003659cfe6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000a00000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff02000000000000000000000000000000000000400000000000000000000000003684250ce1e33b790ed973c23080f312db0adb21a6d98c61a5c9ff99e4babc1755706772616465206661696c656400000000000000000000000000000000000008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000004f1ef28600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f0000000000000000000000000000000000000000000000a000000000000000005570677261646520616e642063616c6c206661696c656400000000000000000000000000000000000000000000000000000000200000008000000000000000005c60da1b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000a000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000002000000000000000000000000043616c6c206661696c6564000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe04d16fff802f6340f71cb175bbe6d5d5b92a657b81f274acfef8aa3687795f426
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.