Latest 25 from a total of 2,482 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Execute | 29863736 | 12 days ago | IN | 0 ETH | 0.00000033 | ||||
| Execute | 29863696 | 12 days ago | IN | 0 ETH | 0.00000028 | ||||
| Execute | 28954603 | 33 days ago | IN | 0 ETH | 0.00000023 | ||||
| Execute | 27533103 | 66 days ago | IN | 0 ETH | 0 | ||||
| Execute | 27533062 | 66 days ago | IN | 0 ETH | 0.00000001 | ||||
| Execute | 27533049 | 66 days ago | IN | 0 ETH | 0 | ||||
| Execute | 27533009 | 66 days ago | IN | 0 ETH | 0 | ||||
| Execute | 26924907 | 80 days ago | IN | 0.1 ETH | 0.00000036 | ||||
| Execute | 26924894 | 80 days ago | IN | 0.1 ETH | 0.00000035 | ||||
| Execute | 26924879 | 80 days ago | IN | 0.1 ETH | 0.00000013 | ||||
| Execute | 26889419 | 80 days ago | IN | 0 ETH | 0.00000031 | ||||
| Execute | 26889409 | 80 days ago | IN | 0 ETH | 0.00000003 | ||||
| Execute | 26889400 | 80 days ago | IN | 0 ETH | 0.00000019 | ||||
| Execute | 26889393 | 80 days ago | IN | 0 ETH | 0 | ||||
| Execute | 26888765 | 80 days ago | IN | 0 ETH | 0.00000003 | ||||
| Execute | 26886584 | 81 days ago | IN | 0 ETH | 0.00000005 | ||||
| Execute | 26883898 | 81 days ago | IN | 0 ETH | 0.00000003 | ||||
| Execute | 26883623 | 81 days ago | IN | 0 ETH | 0 | ||||
| Execute | 26883591 | 81 days ago | IN | 0 ETH | 0.00000069 | ||||
| Execute | 26883458 | 81 days ago | IN | 0 ETH | 0 | ||||
| Execute | 26883144 | 81 days ago | IN | 0 ETH | 0.00000007 | ||||
| Execute | 26882983 | 81 days ago | IN | 0 ETH | 0.00000001 | ||||
| Execute | 26882449 | 81 days ago | IN | 0 ETH | 0.00000007 | ||||
| Execute | 26882205 | 81 days ago | IN | 0 ETH | 0.00000007 | ||||
| Execute | 26882129 | 81 days ago | IN | 0 ETH | 0.00000004 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 28954603 | 33 days ago | 0.00639392 ETH | ||||
| 28954603 | 33 days ago | 0.00639392 ETH | ||||
| 26924907 | 80 days ago | 0.1 ETH | ||||
| 26924894 | 80 days ago | 0.1 ETH | ||||
| 26924879 | 80 days ago | 0.1 ETH | ||||
| 26889419 | 80 days ago | 0.10001105 ETH | ||||
| 26889419 | 80 days ago | 0.10001105 ETH | ||||
| 26889409 | 80 days ago | 0.10004625 ETH | ||||
| 26889409 | 80 days ago | 0.10004625 ETH | ||||
| 26889400 | 80 days ago | 0.10007492 ETH | ||||
| 26889400 | 80 days ago | 0.10007492 ETH | ||||
| 26889393 | 80 days ago | 0.10016206 ETH | ||||
| 26889393 | 80 days ago | 0.10016206 ETH | ||||
| 26888765 | 80 days ago | 0.1000686 ETH | ||||
| 26888765 | 80 days ago | 0.1000686 ETH | ||||
| 26886584 | 81 days ago | 0.20010992 ETH | ||||
| 26886584 | 81 days ago | 0.20010992 ETH | ||||
| 26883898 | 81 days ago | 0.30017387 ETH | ||||
| 26883898 | 81 days ago | 0.30017387 ETH | ||||
| 26883623 | 81 days ago | 0.30029867 ETH | ||||
| 26883623 | 81 days ago | 0.30029867 ETH | ||||
| 26883591 | 81 days ago | 0.29997921 ETH | ||||
| 26883591 | 81 days ago | 0.29997921 ETH | ||||
| 26883458 | 81 days ago | 0.30002563 ETH | ||||
| 26883458 | 81 days ago | 0.30002563 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
AdminUpgradeabilityProxy
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
import {UpgradeabilityProxy} from './UpgradeabilityProxy.sol';
/**
* @title AdminUpgradeabilityProxy
* @dev This contract combines an upgradeability proxy with an authorization
* mechanism for administrative tasks.
* All external functions in this contract must be guarded by the
* `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity
* feature proposal that would enable this to be done automatically.
*/
contract AdminUpgradeabilityProxy is UpgradeabilityProxy {
/**
* @dev Emitted when the administration has been transferred.
* @param previousAdmin Address of the previous admin.
* @param newAdmin Address of the new admin.
*/
event AdminChanged(address previousAdmin, address newAdmin);
/**
* @dev Storage slot with the admin of the contract.
* This is the keccak-256 hash of "org.zeppelinos.proxy.admin", and is
* validated in the constructor.
*/
bytes32 private constant ADMIN_SLOT = 0x10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b;
/**
* @dev Modifier to check whether the `msg.sender` is the admin.
* If it is, it will run the function. Otherwise, it will delegate the call
* to the implementation.
*/
modifier ifAdmin() {
if (msg.sender == _admin()) {
_;
} else {
_fallback();
}
}
/**
* Contract constructor.
* It sets the `msg.sender` as the proxy administrator.
* @param _implementation address of the initial implementation.
*/
constructor(address _implementation) UpgradeabilityProxy(_implementation) {
assert(ADMIN_SLOT == keccak256("org.zeppelinos.proxy.admin"));
_setAdmin(msg.sender);
}
/**
* @return The address of the proxy admin.
*/
function admin() external ifAdmin returns (address) {
return _admin();
}
/**
* @return The address of the implementation.
*/
function implementation() external ifAdmin returns (address) {
return _implementation();
}
/**
* @dev Changes the admin of the proxy.
* Only the current admin can call this function.
* @param newAdmin Address to transfer proxy administration to.
*/
function changeAdmin(address newAdmin) external ifAdmin {
require(newAdmin != address(0), "Cannot change the admin of a proxy to the zero address");
emit AdminChanged(_admin(), newAdmin);
_setAdmin(newAdmin);
}
/**
* @dev Upgrade the backing implementation of the proxy.
* Only the admin can call this function.
* @param newImplementation Address of the new implementation.
*/
function upgradeTo(address newImplementation) external ifAdmin {
_upgradeTo(newImplementation);
}
/**
* @dev Upgrade the backing implementation of the proxy and call a function
* on the new implementation.
* This is useful to initialize the proxied contract.
* @param newImplementation Address of the new implementation.
* @param data Data to send as msg.data in the low level call.
* It should include the signature and the parameters of the function to be
* called, as described in
* https://solidity.readthedocs.io/en/develop/abi-spec.html#function-selector-and-argument-encoding.
*/
function upgradeToAndCall(address newImplementation, bytes calldata data) payable external ifAdmin {
_upgradeTo(newImplementation);
(bool succeeded, ) = address(this).call{value: msg.value}(data);
require(succeeded == true);
}
/**
* @return adm The admin slot.
*/
function _admin() internal view returns (address adm) {
bytes32 slot = ADMIN_SLOT;
assembly {
adm := sload(slot)
}
}
/**
* @dev Sets the address of the proxy admin.
* @param newAdmin Address of the new proxy admin.
*/
function _setAdmin(address newAdmin) internal {
bytes32 slot = ADMIN_SLOT;
assembly {
sstore(slot, newAdmin)
}
}
/**
* @dev Only fall back when the sender is not the admin.
*/
function _willFallback() internal override {
require(msg.sender != _admin(), "Cannot call fallback function from the proxy admin");
super._willFallback();
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
/**
* Utility library of inline functions on addresses
*/
library AddressUtils {
/**
* Returns whether the target address is a contract
* @dev This function will return false if invoked during the constructor of a contract,
* as the code is not actually created until after the constructor finishes.
* @param addr address to check
* @return whether the target address is a contract
*/
function isContract(address addr) internal view returns (bool) {
uint256 size;
// XXX Currently there is no better way to check if there is a contract in an address
// than to check the size of the code at that address.
// See https://ethereum.stackexchange.com/a/14016/36603
// for more details about how this works.
// TODO Check this again before the Serenity release, because all addresses will be
// contracts then.
// solium-disable-next-line security/no-inline-assembly
assembly { size := extcodesize(addr) }
return size > 0;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
/**
* @title Proxy
* @dev Implements delegation of calls to other contracts, with proper
* forwarding of return values and bubbling of failures.
* It defines a fallback function that delegates all calls to the address
* returned by the abstract _implementation() internal function.
*/
abstract contract Proxy {
/**
* @dev Fallback function.
* Implemented entirely in `_fallback`.
*/
fallback() payable external {
_fallback();
}
receive() external payable {}
/**
* @return The Address of the implementation.
*/
function _implementation() virtual internal view returns (address);
/**
* @dev Delegates execution to an implementation contract.
* This is a low level function that doesn't return to its internal call site.
* It will return to the external caller whatever the implementation returns.
* @param implementation Address to delegate.
*/
function _delegate(address implementation) internal {
assembly {
// Copy msg.data. We take full control of memory in this inline assembly
// block because it will not return to Solidity code. We overwrite the
// Solidity scratch pad at memory position 0.
calldatacopy(0, 0, calldatasize())
// Call the implementation.
// out and outsize are 0 because we don't know the size yet.
let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)
// Copy the returned data.
returndatacopy(0, 0, returndatasize())
switch result
// delegatecall returns 0 on error.
case 0 { revert(0, returndatasize()) }
default { return(0, returndatasize()) }
}
}
/**
* @dev Function that is run as the first thing in the fallback function.
* Can be redefined in derived contracts to add functionality.
* Redefinitions must call super._willFallback().
*/
function _willFallback() internal virtual {
}
/**
* @dev fallback implementation.
* Extracted to enable manual triggering.
*/
function _fallback() internal {
_willFallback();
_delegate(_implementation());
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
import {Proxy} from './Proxy.sol';
import {AddressUtils} from './AddressUtils.sol';
/**
* @title UpgradeabilityProxy
* @dev This contract implements a proxy that allows to change the
* implementation address to which it will delegate.
* Such a change is called an implementation upgrade.
*/
contract UpgradeabilityProxy is Proxy {
/**
* @dev Emitted when the implementation is upgraded.
* @param implementation Address of the new implementation.
*/
event Upgraded(address implementation);
/**
* @dev Storage slot with the address of the current implementation.
* This is the keccak-256 hash of "org.zeppelinos.proxy.implementation", and is
* validated in the constructor.
*/
bytes32 private constant IMPLEMENTATION_SLOT = 0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3;
/**
* @dev Contract constructor.
* @param impl Address of the initial implementation.
*/
constructor(address impl) {
assert(IMPLEMENTATION_SLOT == keccak256("org.zeppelinos.proxy.implementation"));
_setImplementation(impl);
}
/**
* @dev Returns the current implementation.
* @return impl of the current implementation
*/
function _implementation() override internal view returns (address impl) {
bytes32 slot = IMPLEMENTATION_SLOT;
assembly {
impl := sload(slot)
}
}
/**
* @dev Upgrades the proxy to a new implementation.
* @param newImplementation Address of the new implementation.
*/
function _upgradeTo(address newImplementation) internal {
_setImplementation(newImplementation);
emit Upgraded(newImplementation);
}
/**
* @dev Sets the implementation address of the proxy.
* @param newImplementation Address of the new implementation.
*/
function _setImplementation(address newImplementation) private {
require(AddressUtils.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address");
bytes32 slot = IMPLEMENTATION_SLOT;
assembly {
sstore(slot, newImplementation)
}
}
}{
"optimizer": {
"enabled": true,
"runs": 1000
},
"viaIR": true,
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"stateMutability":"nonpayable","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":false,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","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":"","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"}]Contract Creation Code
60803461011557601f61077e38819003918201601f19168301916001600160401b0383118484101761011a5780849260209460405283398101031261011557516001600160a01b038116810361011557803b156100aa577f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c355337f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b5560405161064d90816101318239f35b60405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e7472616374206164647265737300000000006064820152608490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001e575b361561001c5761001c610470565b005b6000803560e01c9081633659cfe614610085575080634f1ef2861461007c5780635c60da1b146100735780638f2839701461006a5763f851a4400361000e576100656103d5565b61000e565b506100656102aa565b50610065610222565b50610065610105565b346100e75760203660031901126100e75761009e6100ea565b6001600160a01b037f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b541633146000146100de576100db9061054d565b80f35b506100db610470565b80fd5b600435906001600160a01b038216820361010057565b600080fd5b5060403660031901126101005761011a6100ea565b6024359067ffffffffffffffff808311610100573660238401121561010057826004013592818411610100573660248583010111610100576001600160a01b037f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b541633146000146102165760006024819261001c9661019b60019761054d565b806040519384930183378101838152039034305af1903d15610210573d818111610203575b60405191601f8201601f19908116603f01168301908111838210176101f6575b6040528152600060203d92013e5b151514610469565b6101fe610439565b6101e0565b61020b610439565b6101c0565b506101ee565b5050505061001c610470565b503461010057600036600319011261010057602060006001600160a01b0390817f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b5416331460001461029c57507f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c354905b60405191168152f35b906102a5610470565b610293565b5034610100576020366003190112610100576102c46100ea565b6001600160a01b03907f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b8281541633146000146103ca578282169081156103605761001c937f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9260409254918351921682526020820152a17f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b55565b608460405162461bcd60e51b815260206004820152603660248201527f43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f60448201527f787920746f20746865207a65726f2061646472657373000000000000000000006064820152fd5b50505061001c610470565b503461010057600036600319011261010057602060006001600160a01b03907f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b9082825416331460001461042e57505460405191168152f35b9190506102a5610470565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b1561010057565b506001600160a01b037f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b541633146104e3577f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3546000808092368280378136915af43d82803e156104df573d90f35b3d90fd5b608460405162461bcd60e51b815260206004820152603260248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260448201527f6f6d207468652070726f78792061646d696e00000000000000000000000000006064820152fd5b803b156105ad576020817fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b927f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3556001600160a01b0360405191168152a1565b608460405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e7472616374206164647265737300000000006064820152fdfea264697066735822122011cdc8d96305156e20bbdd5a1e5b055c2184e67da853c2639d5433f5d93ca5d864736f6c6343000811003300000000000000000000000066ae22ade9cc7780a22f842eafb55ff7dc261d98
Deployed Bytecode
0x6080604052600436101561001e575b361561001c5761001c610470565b005b6000803560e01c9081633659cfe614610085575080634f1ef2861461007c5780635c60da1b146100735780638f2839701461006a5763f851a4400361000e576100656103d5565b61000e565b506100656102aa565b50610065610222565b50610065610105565b346100e75760203660031901126100e75761009e6100ea565b6001600160a01b037f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b541633146000146100de576100db9061054d565b80f35b506100db610470565b80fd5b600435906001600160a01b038216820361010057565b600080fd5b5060403660031901126101005761011a6100ea565b6024359067ffffffffffffffff808311610100573660238401121561010057826004013592818411610100573660248583010111610100576001600160a01b037f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b541633146000146102165760006024819261001c9661019b60019761054d565b806040519384930183378101838152039034305af1903d15610210573d818111610203575b60405191601f8201601f19908116603f01168301908111838210176101f6575b6040528152600060203d92013e5b151514610469565b6101fe610439565b6101e0565b61020b610439565b6101c0565b506101ee565b5050505061001c610470565b503461010057600036600319011261010057602060006001600160a01b0390817f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b5416331460001461029c57507f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c354905b60405191168152f35b906102a5610470565b610293565b5034610100576020366003190112610100576102c46100ea565b6001600160a01b03907f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b8281541633146000146103ca578282169081156103605761001c937f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9260409254918351921682526020820152a17f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b55565b608460405162461bcd60e51b815260206004820152603660248201527f43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f60448201527f787920746f20746865207a65726f2061646472657373000000000000000000006064820152fd5b50505061001c610470565b503461010057600036600319011261010057602060006001600160a01b03907f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b9082825416331460001461042e57505460405191168152f35b9190506102a5610470565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b1561010057565b506001600160a01b037f10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b541633146104e3577f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3546000808092368280378136915af43d82803e156104df573d90f35b3d90fd5b608460405162461bcd60e51b815260206004820152603260248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260448201527f6f6d207468652070726f78792061646d696e00000000000000000000000000006064820152fd5b803b156105ad576020817fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b927f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3556001600160a01b0360405191168152a1565b608460405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e7472616374206164647265737300000000006064820152fdfea264697066735822122011cdc8d96305156e20bbdd5a1e5b055c2184e67da853c2639d5433f5d93ca5d864736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000066ae22ade9cc7780a22f842eafb55ff7dc261d98
-----Decoded View---------------
Arg [0] : _implementation (address): 0x66AE22ADE9cC7780a22F842EAfB55fF7Dc261d98
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000066ae22ade9cc7780a22f842eafb55ff7dc261d98
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$3.01
Net Worth in ETH
0.001
Token Allocations
ETH
100.00%
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $3,008.32 | 0.001 | $3.01 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.