Overview
ETH Balance
ETH Value
$0.00Latest 6 from a total of 6 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Claim Ownership | 1191956 | 234 days ago | IN | 0 ETH | 0.00000368 | ||||
| Transfer Ownersh... | 1191953 | 234 days ago | IN | 0 ETH | 0.00000563 | ||||
| Transfer Proxy O... | 1191951 | 234 days ago | IN | 0 ETH | 0.00000311 | ||||
| Transact | 25880 | 602 days ago | IN | 0 ETH | 0.00000184 | ||||
| Add Manager | 2344 | 608 days ago | IN | 0 ETH | 0.00000119 | ||||
| Upgrade To And C... | 2343 | 608 days ago | IN | 0 ETH | 0.00000074 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 7 internal transactions
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
OwnedUpgradabilityProxy
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED
// This code is taken from https://github.com/OpenZeppelin/openzeppelin-labs
// with minor modifications.
pragma solidity ^0.7.0;
import './UpgradabilityProxy.sol';
/**
* @title OwnedUpgradabilityProxy
* @dev This contract combines an upgradeability proxy with basic authorization control functionalities
*/
contract OwnedUpgradabilityProxy is UpgradeabilityProxy {
/**
* @dev Event to show ownership has been transferred
* @param previousOwner representing the address of the previous owner
* @param newOwner representing the address of the new owner
*/
event ProxyOwnershipTransferred(address previousOwner, address newOwner);
// Storage position of the owner of the contract
bytes32 private constant proxyOwnerPosition = keccak256("org.zeppelinos.proxy.owner");
/**
* @dev the constructor sets the original owner of the contract to the sender account.
*/
constructor() {
setUpgradabilityOwner(msg.sender);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyProxyOwner() {
require(msg.sender == proxyOwner());
_;
}
/**
* @dev Tells the address of the owner
* @return owner the address of the owner
*/
function proxyOwner() public view returns (address owner) {
bytes32 position = proxyOwnerPosition;
assembly {
owner := sload(position)
}
}
/**
* @dev Sets the address of the owner
*/
function setUpgradabilityOwner(address newProxyOwner) internal {
bytes32 position = proxyOwnerPosition;
assembly {
sstore(position, newProxyOwner)
}
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferProxyOwnership(address newOwner) public onlyProxyOwner {
require(newOwner != address(0));
emit ProxyOwnershipTransferred(proxyOwner(), newOwner);
setUpgradabilityOwner(newOwner);
}
/**
* @dev Allows the proxy owner to upgrade the current version of the proxy.
* @param implementation representing the address of the new implementation to be set.
*/
function upgradeTo(address implementation) public onlyProxyOwner {
_upgradeTo(implementation);
}
/**
* @dev Allows the proxy owner to upgrade the current version of the proxy and call the new implementation
* to initialize whatever is needed through a low level call.
* @param implementation representing the address of the new implementation to be set.
* @param data represents the msg.data to bet sent in the low level call. This parameter may include the function
* signature of the implementation to be called with the needed payload
*/
function upgradeToAndCall(address implementation, bytes memory data) payable public onlyProxyOwner {
upgradeTo(implementation);
(bool success, ) = address(this).call{value: msg.value}(data);
require(success);
}
}// SPDX-License-Identifier: UNLICENSED
// This code is taken from https://github.com/OpenZeppelin/openzeppelin-labs
// with minor modifications.
pragma solidity ^0.7.0;
/**
* @title Proxy
* @dev Gives the possibility to delegate any call to a foreign implementation.
*/
abstract contract Proxy {
/**
* @dev Tells the address of the implementation where every call will be delegated.
* @return impl address of the implementation to which it will be delegated
*/
function implementation() public view virtual returns (address impl);
receive() payable external {
_fallback();
}
fallback() payable external {
_fallback();
}
function _fallback() private {
address _impl = implementation();
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) }
}
}
}// SPDX-License-Identifier: UNLICENSED
// This code is taken from https://github.com/OpenZeppelin/openzeppelin-labs
// with minor modifications.
pragma solidity ^0.7.0;
import './Proxy.sol';
/**
* @title UpgradeabilityProxy
* @dev This contract represents a proxy where the implementation address to which it will delegate can be upgraded
*/
contract UpgradeabilityProxy is Proxy {
/**
* @dev This event will be emitted every time the implementation gets upgraded
* @param implementation representing the address of the upgraded implementation
*/
event Upgraded(address indexed implementation);
// Storage position of the address of the current implementation
bytes32 private constant implementationPosition = keccak256("org.zeppelinos.proxy.implementation");
/**
* @dev Constructor function
*/
constructor() {}
/**
* @dev Tells the address of the current implementation
* @return impl address of the current implementation
*/
function implementation() public view override returns (address impl) {
bytes32 position = implementationPosition;
assembly {
impl := sload(position)
}
}
/**
* @dev Sets the address of the current implementation
* @param newImplementation address representing the new implementation to be set
*/
function setImplementation(address newImplementation) internal {
bytes32 position = implementationPosition;
assembly {
sstore(position, newImplementation)
}
}
/**
* @dev Upgrades the implementation address
* @param newImplementation representing the address of the new implementation to be set
*/
function _upgradeTo(address newImplementation) internal {
address currentImplementation = implementation();
require(currentImplementation != newImplementation);
setImplementation(newImplementation);
emit Upgraded(newImplementation);
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"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":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"impl","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyOwner","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405234801561001057600080fd5b5061001a3361001f565b610043565b7f337c729c04082e3bdd94ba7d2b5a8a642f3a138702366a91707825373a2029ba55565b6104e1806100526000396000f3fe60806040526004361061004e5760003560e01c8063025313a2146100655780633659cfe6146100965780634f1ef286146100c95780635c60da1b1461017f578063f1739cae146101945761005d565b3661005d5761005b6101c7565b005b61005b6101c7565b34801561007157600080fd5b5061007a61020b565b604080516001600160a01b039092168252519081900360200190f35b3480156100a257600080fd5b5061005b600480360360208110156100b957600080fd5b50356001600160a01b0316610230565b61005b600480360360408110156100df57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561010a57600080fd5b82018360208201111561011c57600080fd5b8035906020019184600183028401116401000000008311171561013e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610261945050505050565b34801561018b57600080fd5b5061007a610346565b3480156101a057600080fd5b5061005b600480360360208110156101b757600080fd5b50356001600160a01b031661036b565b60006101d1610346565b90506001600160a01b0381166101e657600080fd5b60405136600082376000803683855af43d806000843e818015610207578184f35b8184fd5b7f337c729c04082e3bdd94ba7d2b5a8a642f3a138702366a91707825373a2029ba5490565b61023861020b565b6001600160a01b0316336001600160a01b03161461025557600080fd5b61025e816103f7565b50565b61026961020b565b6001600160a01b0316336001600160a01b03161461028657600080fd5b61028f82610230565b6000306001600160a01b031634836040518082805190602001908083835b602083106102cc5780518252601f1990920191602091820191016102ad565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461032e576040519150601f19603f3d011682016040523d82523d6000602084013e610333565b606091505b505090508061034157600080fd5b505050565b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c35490565b61037361020b565b6001600160a01b0316336001600160a01b03161461039057600080fd5b6001600160a01b0381166103a357600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96103cc61020b565b604080516001600160a01b03928316815291841660208301528051918290030190a161025e81610463565b6000610401610346565b9050816001600160a01b0316816001600160a01b0316141561042257600080fd5b61042b82610487565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b7f337c729c04082e3bdd94ba7d2b5a8a642f3a138702366a91707825373a2029ba55565b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c35556fea2646970667358221220518b85a1b45c1927fe1171ca0ee51f03bf661ca41ff6822c5cfcff2a69d2867b64736f6c63430007060033
Deployed Bytecode
0x60806040526004361061004e5760003560e01c8063025313a2146100655780633659cfe6146100965780634f1ef286146100c95780635c60da1b1461017f578063f1739cae146101945761005d565b3661005d5761005b6101c7565b005b61005b6101c7565b34801561007157600080fd5b5061007a61020b565b604080516001600160a01b039092168252519081900360200190f35b3480156100a257600080fd5b5061005b600480360360208110156100b957600080fd5b50356001600160a01b0316610230565b61005b600480360360408110156100df57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561010a57600080fd5b82018360208201111561011c57600080fd5b8035906020019184600183028401116401000000008311171561013e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610261945050505050565b34801561018b57600080fd5b5061007a610346565b3480156101a057600080fd5b5061005b600480360360208110156101b757600080fd5b50356001600160a01b031661036b565b60006101d1610346565b90506001600160a01b0381166101e657600080fd5b60405136600082376000803683855af43d806000843e818015610207578184f35b8184fd5b7f337c729c04082e3bdd94ba7d2b5a8a642f3a138702366a91707825373a2029ba5490565b61023861020b565b6001600160a01b0316336001600160a01b03161461025557600080fd5b61025e816103f7565b50565b61026961020b565b6001600160a01b0316336001600160a01b03161461028657600080fd5b61028f82610230565b6000306001600160a01b031634836040518082805190602001908083835b602083106102cc5780518252601f1990920191602091820191016102ad565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461032e576040519150601f19603f3d011682016040523d82523d6000602084013e610333565b606091505b505090508061034157600080fd5b505050565b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c35490565b61037361020b565b6001600160a01b0316336001600160a01b03161461039057600080fd5b6001600160a01b0381166103a357600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96103cc61020b565b604080516001600160a01b03928316815291841660208301528051918290030190a161025e81610463565b6000610401610346565b9050816001600160a01b0316816001600160a01b0316141561042257600080fd5b61042b82610487565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b7f337c729c04082e3bdd94ba7d2b5a8a642f3a138702366a91707825373a2029ba55565b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c35556fea2646970667358221220518b85a1b45c1927fe1171ca0ee51f03bf661ca41ff6822c5cfcff2a69d2867b64736f6c63430007060033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.