Contract 0x784819cba91ed87c296565274fc150eaa11ebc04 2
Contract Overview
Balance:
0 ETH
ETH Value:
$0.00
My Name Tag:
Not Available
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
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.
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xA017B813652b93a0aF2887913EFCBB4ab250CE65 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
TransparentUpgradeableProxy
Compiler Version
v0.7.4+commit.3f05b770
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan.io on 2021-08-31 */ pragma solidity >=0.6.0 <0.8.0; abstract contract Proxy { function _delegate(address implementation) internal virtual { assembly { calldatacopy(0, 0, calldatasize()) let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) returndatacopy(0, 0, returndatasize()) switch result case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } function _implementation() internal view virtual returns (address); function _fallback() internal virtual { _beforeFallback(); _delegate(_implementation()); } fallback () external payable virtual { _fallback(); } receive () external payable virtual { _fallback(); } function _beforeFallback() internal virtual { } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract UpgradeableProxy is Proxy { constructor(address _logic, bytes memory _data) public payable { assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1)); _setImplementation(_logic); if(_data.length > 0) { Address.functionDelegateCall(_logic, _data); } } event Upgraded(address indexed implementation); bytes32 private constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _implementation() internal view virtual override returns (address impl) { bytes32 slot = _IMPLEMENTATION_SLOT; assembly { impl := sload(slot) } } function _upgradeTo(address newImplementation) internal virtual { _setImplementation(newImplementation); emit Upgraded(newImplementation); } function _setImplementation(address newImplementation) private { require(Address.isContract(newImplementation), "UpgradeableProxy: new implementation is not a contract"); bytes32 slot = _IMPLEMENTATION_SLOT; assembly { sstore(slot, newImplementation) } } } contract TransparentUpgradeableProxy is UpgradeableProxy { constructor(address _logic, address admin_, bytes memory _data) public payable UpgradeableProxy(_logic, _data) { assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1)); _setAdmin(admin_); } event AdminChanged(address previousAdmin, address newAdmin); bytes32 private constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; modifier ifAdmin() { if (msg.sender == _admin()) { _; } else { _fallback(); } } function admin() external ifAdmin returns (address admin_) { admin_ = _admin(); } function implementation() external ifAdmin returns (address implementation_) { implementation_ = _implementation(); } function changeAdmin(address newAdmin) external virtual ifAdmin { require(newAdmin != address(0), "TransparentUpgradeableProxy: new admin is the zero address"); emit AdminChanged(_admin(), newAdmin); _setAdmin(newAdmin); } function upgradeTo(address newImplementation) external virtual ifAdmin { _upgradeTo(newImplementation); } function upgradeToAndCall(address newImplementation, bytes calldata data) external payable virtual ifAdmin { _upgradeTo(newImplementation); Address.functionDelegateCall(newImplementation, data); } function _admin() internal view virtual returns (address adm) { bytes32 slot = _ADMIN_SLOT; assembly { adm := sload(slot) } } function _setAdmin(address newAdmin) private { bytes32 slot = _ADMIN_SLOT; assembly { sstore(slot, newAdmin) } } function _beforeFallback() internal virtual override { require(msg.sender != _admin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target"); super._beforeFallback(); } }
[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Deployed Bytecode
0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146101285780638f28397014610159578063f851a4401461018c5761006d565b80633659cfe6146100755780634f1ef286146100a85761006d565b3661006d5761006b6101a1565b005b61006b6101a1565b34801561008157600080fd5b5061006b6004803603602081101561009857600080fd5b50356001600160a01b03166101bb565b61006b600480360360408110156100be57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100e957600080fd5b8201836020820111156100fb57600080fd5b8035906020019184600183028401116401000000008311171561011d57600080fd5b5090925090506101f5565b34801561013457600080fd5b5061013d610272565b604080516001600160a01b039092168252519081900360200190f35b34801561016557600080fd5b5061006b6004803603602081101561017c57600080fd5b50356001600160a01b03166102af565b34801561019857600080fd5b5061013d610369565b6101a96103c6565b6101b96101b4610426565b61044b565b565b6101c361046f565b6001600160a01b0316336001600160a01b031614156101ea576101e581610494565b6101f2565b6101f26101a1565b50565b6101fd61046f565b6001600160a01b0316336001600160a01b031614156102655761021f83610494565b61025f8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061039492505050565b5061026d565b61026d6101a1565b505050565b600061027c61046f565b6001600160a01b0316336001600160a01b031614156102a45761029d610426565b90506102ac565b6102ac6101a1565b90565b6102b761046f565b6001600160a01b0316336001600160a01b031614156101ea576001600160a01b0381166103155760405162461bcd60e51b815260040180806020018281038252603a815260200180610708603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61033e61046f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101e5816104d4565b600061037361046f565b6001600160a01b0316336001600160a01b031614156102a45761029d61046f565b60606103b98383604051806060016040528060278152602001610742602791396104f8565b9392505050565b3b151590565b6103ce61046f565b6001600160a01b0316336001600160a01b0316141561041e5760405162461bcd60e51b81526004018080602001828103825260428152602001806107c56042913960600191505060405180910390fd5b6101b96101b9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561046a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61049d816105fb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6060610503846103c0565b61053e5760405162461bcd60e51b815260040180806020018281038252602681526020018061079f6026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b6020831061057c5780518252601f19909201916020918201910161055d565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146105dc576040519150601f19603f3d011682016040523d82523d6000602084013e6105e1565b606091505b50915091506105f1828286610663565b9695505050505050565b610604816103c0565b61063f5760405162461bcd60e51b81526004018080602001828103825260368152602001806107696036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b606083156106725750816103b9565b8251156106825782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106cc5781810151838201526020016106b4565b50505050905090810190601f1680156106f95780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f2061646472657373416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a26469706673582212208abef82df4ccbbe5116d43e18645757954680a0f3e3b17a5ca661b652c75599664736f6c63430007040033
Deployed ByteCode Sourcemap
5845:2139:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;957:11;:9;:11::i;:::-;5845:2139;;877:11;:9;:11::i;7031:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7031:119:0;-1:-1:-1;;;;;7031:119:0;;:::i;7164:219::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7164:219:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7164:219:0;;-1:-1:-1;7164:219:0;-1:-1:-1;7164:219:0;:::i;6618:131::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;6618:131:0;;;;;;;;;;;;;;6763:254;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6763:254:0;-1:-1:-1;;;;;6763:254:0;;:::i;6509:95::-;;;;;;;;;;;;;:::i;702:113::-;751:17;:15;:17::i;:::-;779:28;789:17;:15;:17::i;:::-;779:9;:28::i;:::-;702:113::o;7031:119::-;6406:8;:6;:8::i;:::-;-1:-1:-1;;;;;6392:22:0;:10;-1:-1:-1;;;;;6392:22:0;;6388:100;;;7113:29:::1;7124:17;7113:10;:29::i;:::-;6388:100:::0;;;6465:11;:9;:11::i;:::-;7031:119;:::o;7164:219::-;6406:8;:6;:8::i;:::-;-1:-1:-1;;;;;6392:22:0;:10;-1:-1:-1;;;;;6392:22:0;;6388:100;;;7282:29:::1;7293:17;7282:10;:29::i;:::-;7322:53;7351:17;7370:4;;7322:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;7322:28:0::1;::::0;-1:-1:-1;;;7322:53:0:i:1;:::-;;6388:100:::0;;;6465:11;:9;:11::i;:::-;7164:219;;;:::o;6618:131::-;6670:23;6406:8;:6;:8::i;:::-;-1:-1:-1;;;;;6392:22:0;:10;-1:-1:-1;;;;;6392:22:0;;6388:100;;;6724:17:::1;:15;:17::i;:::-;6706:35;;6388:100:::0;;;6465:11;:9;:11::i;:::-;6618:131;:::o;6763:254::-;6406:8;:6;:8::i;:::-;-1:-1:-1;;;;;6392:22:0;:10;-1:-1:-1;;;;;6392:22:0;;6388:100;;;-1:-1:-1;;;;;6846:22:0;::::1;6838:93;;;;-1:-1:-1::0;;;6838:93:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6947:32;6960:8;:6;:8::i;:::-;6947:32;::::0;;-1:-1:-1;;;;;6947:32:0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;6990:19;7000:8;6990:9;:19::i;6509:95::-:0;6552:14;6406:8;:6;:8::i;:::-;-1:-1:-1;;;;;6392:22:0;:10;-1:-1:-1;;;;;6392:22:0;;6388:100;;;6588:8:::1;:6;:8::i;3380:200::-:0;3463:12;3495:77;3516:6;3524:4;3495:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;3488:84;3380:200;-1:-1:-1;;;3380:200:0:o;1078:216::-;1239:20;1278:8;;;1078:216::o;7774:207::-;7860:8;:6;:8::i;:::-;-1:-1:-1;;;;;7846:22:0;:10;-1:-1:-1;;;;;7846:22:0;;;7838:101;;;;-1:-1:-1;;;7838:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7950:23;:21;:23::i;5116:209::-;5035:66;5296:11;;5273:45::o;74:533::-;240:14;237:1;234;221:34;371:1;368;352:14;349:1;333:14;326:5;313:60;424:16;421:1;418;403:38;464:6;498:38;;;;570:16;567:1;560:27;498:38;517:16;514:1;507:27;7397:180;6277:66;7548:11;;7526:44::o;5339:163::-;5414:37;5433:17;5414:18;:37::i;:::-;5467:27;;-1:-1:-1;;;;;5467:27:0;;;;;;;;5339:163;:::o;7591:169::-;6277:66;7720:22;7705:48::o;3594:373::-;3705:12;3738:18;3749:6;3738:10;:18::i;:::-;3730:69;;;;-1:-1:-1;;;3730:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:12;3837:23;3864:6;-1:-1:-1;;;;;3864:19:0;3884:4;3864:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3864:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3822:67;;;;3907:52;3925:7;3934:10;3946:12;3907:17;:52::i;:::-;3900:59;3594:373;-1:-1:-1;;;;;;3594:373:0:o;5516:322::-;5598:37;5617:17;5598:18;:37::i;:::-;5590:104;;;;-1:-1:-1;;;5590:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5035:66;5789:31;5774:57::o;3975:567::-;4090:12;4119:7;4115:420;;;-1:-1:-1;4150:10:0;4143:17;;4115:420;4211:17;;:21;4207:317;;4352:10;4346:17;4413:15;4400:10;4396:2;4392:19;4385:44;4300:148;4495:12;4488:20;;-1:-1:-1;;;4488:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Metadata Hash
8abef82df4ccbbe5116d43e18645757954680a0f3e3b17a5ca661b652c755996
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.