Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 26 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 5241005 | 462 days ago | IN | 0 ETH | 0.00012384 | ||||
Update | 5091328 | 485 days ago | IN | 0 ETH | 0.02926551 | ||||
Update | 4911568 | 513 days ago | IN | 0 ETH | 0.00114048 | ||||
Update | 4908774 | 514 days ago | IN | 0 ETH | 0.00151642 | ||||
Update | 4908768 | 514 days ago | IN | 0 ETH | 0.00159604 | ||||
Update | 4730184 | 542 days ago | IN | 0 ETH | 0.00004065 | ||||
Update | 4730183 | 542 days ago | IN | 0 ETH | 0.00051995 | ||||
Update | 4730182 | 542 days ago | IN | 0 ETH | 0.00051972 | ||||
Update | 4730181 | 542 days ago | IN | 0 ETH | 0.00051993 | ||||
Update | 4730144 | 542 days ago | IN | 0 ETH | 0.00006055 | ||||
Update | 4730143 | 542 days ago | IN | 0 ETH | 0.00059675 | ||||
Update | 4730142 | 542 days ago | IN | 0 ETH | 0.00051972 | ||||
Update | 4730141 | 542 days ago | IN | 0 ETH | 0.00051993 | ||||
Update | 4730136 | 542 days ago | IN | 0 ETH | 0.00057662 | ||||
Update | 4730135 | 542 days ago | IN | 0 ETH | 0.00057683 | ||||
Update | 4692532 | 548 days ago | IN | 0 ETH | 0.00008197 | ||||
Update | 4692531 | 548 days ago | IN | 0 ETH | 0.00008197 | ||||
Update | 4692530 | 548 days ago | IN | 0 ETH | 0.00006057 | ||||
Update | 4692529 | 548 days ago | IN | 0 ETH | 0.00006055 | ||||
Update | 4692528 | 548 days ago | IN | 0 ETH | 0.00006057 | ||||
Update | 4692527 | 548 days ago | IN | 0 ETH | 0.00006057 | ||||
Update | 4692526 | 548 days ago | IN | 0 ETH | 0.00006057 | ||||
Update | 4692525 | 548 days ago | IN | 0 ETH | 0.00006057 | ||||
Update | 4692524 | 548 days ago | IN | 0 ETH | 0.00006057 | ||||
Update | 4692523 | 548 days ago | IN | 0 ETH | 0.00006057 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
GovernanceProxy
Compiler Version
v0.5.17+commit.d19bba13
Optimization Enabled:
Yes with 200 runs
Other Settings:
constantinople EvmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-12-16 */ /** Matic network contracts */ pragma solidity ^0.5.2; interface ERCProxy { function proxyType() external pure returns (uint256 proxyTypeId); function implementation() external view returns (address codeAddr); } contract DelegateProxyForwarder { function delegatedFwd(address _dst, bytes memory _calldata) internal { // solium-disable-next-line security/no-inline-assembly assembly { let result := delegatecall( sub(gas, 10000), _dst, add(_calldata, 0x20), mload(_calldata), 0, 0 ) let size := returndatasize let ptr := mload(0x40) returndatacopy(ptr, 0, size) // revert instead of invalid() bc if the underlying call failed with invalid() it already wasted gas. // if the call returned error data, forward it switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } function isContract(address _target) internal view returns (bool) { if (_target == address(0)) { return false; } uint256 size; assembly { size := extcodesize(_target) } return size > 0; } } contract DelegateProxy is ERCProxy, DelegateProxyForwarder { function proxyType() external pure returns (uint256 proxyTypeId) { // Upgradeable proxy proxyTypeId = 2; } function implementation() external view returns (address); } contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor () internal { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @return the address of the owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner()); _; } /** * @return true if `msg.sender` is the owner of the contract. */ function isOwner() public view returns (bool) { return msg.sender == _owner; } /** * @dev Allows the current owner to relinquish control of the contract. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. * @notice Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract ProxyStorage is Ownable { address internal proxyTo; } contract Proxy is ProxyStorage, DelegateProxy { event ProxyUpdated(address indexed _new, address indexed _old); event OwnerUpdate(address _prevOwner, address _newOwner); constructor(address _proxyTo) public { updateImplementation(_proxyTo); } function() external payable { // require(currentContract != 0, "If app code has not been set yet, do not call"); // Todo: filter out some calls or handle in the end fallback delegatedFwd(proxyTo, msg.data); } function implementation() external view returns (address) { return proxyTo; } function updateImplementation(address _newProxyTo) public onlyOwner { require(_newProxyTo != address(0x0), "INVALID_PROXY_ADDRESS"); require(isContract(_newProxyTo), "DESTINATION_ADDRESS_IS_NOT_A_CONTRACT"); emit ProxyUpdated(_newProxyTo, proxyTo); proxyTo = _newProxyTo; } function isContract(address _target) internal view returns (bool) { if (_target == address(0)) { return false; } uint256 size; assembly { size := extcodesize(_target) } return size > 0; } } contract GovernanceProxy is Proxy { constructor(address _proxyTo) public Proxy(_proxyTo) {} }
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_proxyTo","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_prevOwner","type":"address"},{"indexed":false,"internalType":"address","name":"_newOwner","type":"address"}],"name":"OwnerUpdate","type":"event"},{"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":true,"internalType":"address","name":"_new","type":"address"},{"indexed":true,"internalType":"address","name":"_old","type":"address"}],"name":"ProxyUpdated","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proxyType","outputs":[{"internalType":"uint256","name":"proxyTypeId","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newProxyTo","type":"address"}],"name":"updateImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516106e53803806106e58339818101604052602081101561003357600080fd5b5051600080546001600160a01b031916331780825560405183926001600160a01b039290921691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3610092816001600160e01b0361009916565b5050610220565b6100aa6001600160e01b036101ec16565b6100b357600080fd5b6001600160a01b03811661012857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f50524f58595f414444524553530000000000000000000000604482015290519081900360640190fd5b61013a816001600160e01b036101fd16565b61018f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806106c06025913960400191505060405180910390fd5b6001546040516001600160a01b03918216918316907fd32d24edea94f55e932d9a008afc425a8561462d1b1f57bc6e508e9a6b9509e190600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331490565b60006001600160a01b0382166102155750600061021b565b50803b15155b919050565b6104918061022f6000396000f3fe6080604052600436106100705760003560e01c8063715018a61161004e578063715018a6146101475780638da5cb5b1461015c5780638f32d59b14610171578063f2fde38b1461019a57610070565b8063025b22bc146100bc5780634555d5c9146100ef5780635c60da1b14610116575b60015460408051602036601f81018290048202830182019093528282526100ba936001600160a01b031692600091819084018382808284376000920191909152506101cd92505050565b005b3480156100c857600080fd5b506100ba600480360360208110156100df57600080fd5b50356001600160a01b03166101f5565b3480156100fb57600080fd5b506101046102fa565b60408051918252519081900360200190f35b34801561012257600080fd5b5061012b6102ff565b604080516001600160a01b039092168252519081900360200190f35b34801561015357600080fd5b506100ba61030e565b34801561016857600080fd5b5061012b610369565b34801561017d57600080fd5b50610186610378565b604080519115158252519081900360200190f35b3480156101a657600080fd5b506100ba600480360360208110156101bd57600080fd5b50356001600160a01b0316610389565b600080825160208401856127105a03f43d604051816000823e8280156101f1578282f35b8282fd5b6101fd610378565b61020657600080fd5b6001600160a01b038116610259576040805162461bcd60e51b8152602060048201526015602482015274494e56414c49445f50524f58595f4144445245535360581b604482015290519081900360640190fd5b610262816103a6565b61029d5760405162461bcd60e51b81526004018080602001828103825260258152602001806104386025913960400191505060405180910390fd5b6001546040516001600160a01b03918216918316907fd32d24edea94f55e932d9a008afc425a8561462d1b1f57bc6e508e9a6b9509e190600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600290565b6001546001600160a01b031690565b610316610378565b61031f57600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b610391610378565b61039a57600080fd5b6103a3816103c9565b50565b60006001600160a01b0382166103be575060006103c4565b50803b15155b919050565b6001600160a01b0381166103dc57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe44455354494e4154494f4e5f414444524553535f49535f4e4f545f415f434f4e5452414354a265627a7a72315820e58ad9698b1d49b9f44e01e7ba2b5f8224868278d845bbb4fd1ffeb62e03421c64736f6c6343000511003244455354494e4154494f4e5f414444524553535f49535f4e4f545f415f434f4e54524143540000000000000000000000007ebdec03873994a02aca5dbfac665e5e39287d77
Deployed Bytecode
0x6080604052600436106100705760003560e01c8063715018a61161004e578063715018a6146101475780638da5cb5b1461015c5780638f32d59b14610171578063f2fde38b1461019a57610070565b8063025b22bc146100bc5780634555d5c9146100ef5780635c60da1b14610116575b60015460408051602036601f81018290048202830182019093528282526100ba936001600160a01b031692600091819084018382808284376000920191909152506101cd92505050565b005b3480156100c857600080fd5b506100ba600480360360208110156100df57600080fd5b50356001600160a01b03166101f5565b3480156100fb57600080fd5b506101046102fa565b60408051918252519081900360200190f35b34801561012257600080fd5b5061012b6102ff565b604080516001600160a01b039092168252519081900360200190f35b34801561015357600080fd5b506100ba61030e565b34801561016857600080fd5b5061012b610369565b34801561017d57600080fd5b50610186610378565b604080519115158252519081900360200190f35b3480156101a657600080fd5b506100ba600480360360208110156101bd57600080fd5b50356001600160a01b0316610389565b600080825160208401856127105a03f43d604051816000823e8280156101f1578282f35b8282fd5b6101fd610378565b61020657600080fd5b6001600160a01b038116610259576040805162461bcd60e51b8152602060048201526015602482015274494e56414c49445f50524f58595f4144445245535360581b604482015290519081900360640190fd5b610262816103a6565b61029d5760405162461bcd60e51b81526004018080602001828103825260258152602001806104386025913960400191505060405180910390fd5b6001546040516001600160a01b03918216918316907fd32d24edea94f55e932d9a008afc425a8561462d1b1f57bc6e508e9a6b9509e190600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600290565b6001546001600160a01b031690565b610316610378565b61031f57600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b610391610378565b61039a57600080fd5b6103a3816103c9565b50565b60006001600160a01b0382166103be575060006103c4565b50803b15155b919050565b6001600160a01b0381166103dc57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe44455354494e4154494f4e5f414444524553535f49535f4e4f545f415f434f4e5452414354a265627a7a72315820e58ad9698b1d49b9f44e01e7ba2b5f8224868278d845bbb4fd1ffeb62e03421c64736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007ebdec03873994a02aca5dbfac665e5e39287d77
-----Decoded View---------------
Arg [0] : _proxyTo (address): 0x7ebDeC03873994A02acA5dbfac665e5e39287D77
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007ebdec03873994a02aca5dbfac665e5e39287d77
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.