- Contract name:
- Proxy
- Optimization enabled
- true
- Compiler version
- v0.8.13+commit.abaa5c0e
- Optimization runs
- 200
- EVM Version
- default
- Verified at
- 2022-09-09T15:25:54.665989Z
Contract source code
// Sources flattened with hardhat v2.10.1 https://hardhat.org // File contracts/Proxy.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.11; contract Proxy { address __delegate; address __owner = msg.sender; function __upgradeDelegate(address newDelegateAddress) public { require(msg.sender == __owner); __delegate = newDelegateAddress; } function __setOwner(address newOwner) public { require(msg.sender == __owner); __owner = newOwner; } function __getOwner() public view returns(address) { return __owner; } function __getDelegate() public view returns(address) { return __delegate; } fallback() external payable { address _impl = __delegate; require(_impl != address(0)); assembly { let ptr := mload(0x40) calldatacopy(ptr, 0, calldatasize()) let result := delegatecall(gas(), _impl, ptr, calldatasize(), 0, 0) let size := returndatasize() returndatacopy(ptr, 0, size) switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } }
Contract ABI
[{"type":"fallback","stateMutability":"payable"},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"__getDelegate","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"__getOwner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"__setOwner","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"__upgradeDelegate","inputs":[{"type":"address","name":"newDelegateAddress","internalType":"address"}]}]
Contract Creation Code
0x6080604052600180546001600160a01b0319163317905534801561002257600080fd5b506101e8806100326000396000f3fe60806040526004361061003f5760003560e01c80631716dcb51461007c5780639f199ce31461009c578063c6dff564146100d2578063fe9c89ba146100f2575b6000546001600160a01b03168061005557600080fd5b60405136600082376000803683855af43d806000843e818015610076578184f35b8184fd5b005b34801561008857600080fd5b5061007a610097366004610182565b610110565b3480156100a857600080fd5b506001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b3480156100de57600080fd5b5061007a6100ed366004610182565b610149565b3480156100fe57600080fd5b506000546001600160a01b03166100b6565b6001546001600160a01b0316331461012757600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316331461016057600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561019457600080fd5b81356001600160a01b03811681146101ab57600080fd5b939250505056fea26469706673582212202fabf5dd5d8909978bed837a6c3727edb83ed537b078c3092329abc459ba7db864736f6c634300080d0033
Deployed ByteCode
0x60806040526004361061003f5760003560e01c80631716dcb51461007c5780639f199ce31461009c578063c6dff564146100d2578063fe9c89ba146100f2575b6000546001600160a01b03168061005557600080fd5b60405136600082376000803683855af43d806000843e818015610076578184f35b8184fd5b005b34801561008857600080fd5b5061007a610097366004610182565b610110565b3480156100a857600080fd5b506001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b3480156100de57600080fd5b5061007a6100ed366004610182565b610149565b3480156100fe57600080fd5b506000546001600160a01b03166100b6565b6001546001600160a01b0316331461012757600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316331461016057600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561019457600080fd5b81356001600160a01b03811681146101ab57600080fd5b939250505056fea26469706673582212202fabf5dd5d8909978bed837a6c3727edb83ed537b078c3092329abc459ba7db864736f6c634300080d0033