ETH Price: $3,006.06 (+3.12%)
Gas: 2 Gwei

Contract

0x47Ddb6A433B76117a98FBeAb5320D8b67D468e31
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00
Transaction Hash
Method
Block
From
To
Value
Set Maintenance197247922024-04-24 10:58:3572 days ago1713956315IN
0x47Ddb6A4...67D468e31
0 ETH0.0008516118.60593
Lock197212132024-04-23 22:56:1173 days ago1713912971IN
0x47Ddb6A4...67D468e31
0 ETH0.0017229211.4940067
Lock197208882024-04-23 21:50:4773 days ago1713909047IN
0x47Ddb6A4...67D468e31
0 ETH0.0022474214.80546155
Unlock197206252024-04-23 20:58:1173 days ago1713905891IN
0x47Ddb6A4...67D468e31
0 ETH0.0046069421.17220842
Set Fee For Toke...197204352024-04-23 20:19:4773 days ago1713903587IN
0x47Ddb6A4...67D468e31
0 ETH0.0005123215.05815772
Set Fee Collecto...197203872024-04-23 20:09:5973 days ago1713902999IN
0x47Ddb6A4...67D468e31
0 ETH0.0006534219.12173574
Lock197203032024-04-23 19:52:4773 days ago1713901967IN
0x47Ddb6A4...67D468e31
0 ETH0.0025046216.95983209
Unlock197202722024-04-23 19:46:3573 days ago1713901595IN
0x47Ddb6A4...67D468e31
0 ETH0.0041193818.93570408
Unlock197202522024-04-23 19:42:3573 days ago1713901355IN
0x47Ddb6A4...67D468e31
0 ETH0.0046849919.96314929
List Token197202112024-04-23 19:34:2373 days ago1713900863IN
0x47Ddb6A4...67D468e31
0.15 ETH0.0051135420.54457024
Transfer Ownersh...197201922024-04-23 19:30:3573 days ago1713900635IN
0x47Ddb6A4...67D468e31
0 ETH0.0006574517.82989775
Set Chain Suppor...197201872024-04-23 19:29:3573 days ago1713900575IN
0x47Ddb6A4...67D468e31
0 ETH0.0008617815.5451126
Set Native197201832024-04-23 19:28:4773 days ago1713900527IN
0x47Ddb6A4...67D468e31
0 ETH0.0009387817.50165437
Migrate Data197201712024-04-23 19:26:2373 days ago1713900383IN
0x47Ddb6A4...67D468e31
0 ETH0.0026290816.88548068
Migrate Data197201572024-04-23 19:23:3573 days ago1713900215IN
0x47Ddb6A4...67D468e31
0 ETH0.0040703716.28638884
Migrate Data197201402024-04-23 19:20:1173 days ago1713900011IN
0x47Ddb6A4...67D468e31
0 ETH0.0025313916.25802957
Transfer Ownersh...197200942024-04-23 19:10:5973 days ago1713899459IN
0x47Ddb6A4...67D468e31
0 ETH0.0006863518.61358447
Upgrade To197200662024-04-23 19:05:2373 days ago1713899123IN
0x47Ddb6A4...67D468e31
0 ETH0.0005502918.2696346
Unlock197185702024-04-23 14:04:3573 days ago1713881075IN
0x47Ddb6A4...67D468e31
0 ETH0.0105290529.70355917
Unlock197184232024-04-23 13:34:3573 days ago1713879275IN
0x47Ddb6A4...67D468e31
0 ETH0.0035132713.94025738
Unlock197182122024-04-23 12:52:1173 days ago1713876731IN
0x47Ddb6A4...67D468e31
0 ETH0.0039928415.8423475
Lock197177152024-04-23 11:11:5973 days ago1713870719IN
0x47Ddb6A4...67D468e31
0 ETH0.0019141614.48952354
Unlock197155412024-04-23 3:54:3574 days ago1713844475IN
0x47Ddb6A4...67D468e31
0 ETH0.002371879.41263812
Unlock197148522024-04-23 1:36:3574 days ago1713836195IN
0x47Ddb6A4...67D468e31
0 ETH0.002036437.56656753
Lock197088702024-04-22 5:31:4775 days ago1713763907IN
0x47Ddb6A4...67D468e31
0 ETH0.001195999.05326053
View all transactions

Latest 11 internal transactions

Advanced mode:
Parent Transaction Hash Block From To Value
197239192024-04-24 8:02:3573 days ago1713945755
0x47Ddb6A4...67D468e31
0.15 ETH
197239192024-04-24 8:02:3573 days ago1713945755
0x47Ddb6A4...67D468e31
0.15 ETH
197237972024-04-24 7:37:5973 days ago1713944279
0x47Ddb6A4...67D468e31
0.15 ETH
197237972024-04-24 7:37:5973 days ago1713944279
0x47Ddb6A4...67D468e31
0.15 ETH
197237012024-04-24 7:18:3573 days ago1713943115
0x47Ddb6A4...67D468e31
0.15 ETH
197237012024-04-24 7:18:3573 days ago1713943115
0x47Ddb6A4...67D468e31
0.15 ETH
197202112024-04-23 19:34:2373 days ago1713900863
0x47Ddb6A4...67D468e31
0.15 ETH
186906712023-12-01 9:28:11218 days ago1701422891
0x47Ddb6A4...67D468e31
0.15 ETH
184124902023-10-23 10:52:11256 days ago1698058331
0x47Ddb6A4...67D468e31
0.15 ETH
183925442023-10-20 15:51:59259 days ago1697817119
0x47Ddb6A4...67D468e31
0.1 ETH
183922522023-10-20 14:53:35259 days ago1697813615
0x47Ddb6A4...67D468e31
0.00085 ETH
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x994F2Ef2...5A6902827
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
OwnedUpgradeabilityXBridgeProxy

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : OwnedUpgradeabilityProxyFactory.sol
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.7; 


/**
 * @title OwnedUpgradeabilityProxy
 * @dev This contract combines an upgradeability proxy with basic authorization control functionalities
 */
 
contract OwnedUpgradeabilityXBridgeProxy {
    /**
     * @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);

    /**
     * @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 maintenance boolean
    bytes32 private constant maintenancePosition = keccak256("com.proxy.maintenance");
    // Storage position of the address of the current implementation
    bytes32 private constant implementationPosition = keccak256("com.proxy.implementation");
    // Storage position of the owner of the contract
    bytes32 private constant proxyOwnerPosition = keccak256("com.proxy.owner");

    /**
     * @dev the constructor sets the original owner of the contract to the sender account.
     */
    constructor() {
        setUpgradeabilityOwner(msg.sender);
    }

    /**
     * @dev Tells if contract is on maintenance
     * @return _maintenance if contract is on maintenance
     */
    function maintenance() public view returns (bool _maintenance) {
        bytes32 position = maintenancePosition;
        assembly {
            _maintenance := sload(position)
        }
    }

    /**
     * @dev Sets if contract is on maintenance
     */
    function setMaintenance(bool _maintenance) external onlyProxyOwner {
        bytes32 position = maintenancePosition;
        assembly {
            sstore(position, _maintenance)
        }
    }

    /**
     * @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 setUpgradeabilityOwner(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), 'OwnedUpgradeabilityProxy: INVALID');
        emit ProxyOwnershipTransferred(proxyOwner(), newOwner);
        setUpgradeabilityOwner(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 newImplementation) public onlyProxyOwner {
        _upgradeTo(newImplementation);
    }

    /*
     * @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 newImplementation, bytes memory data) payable public onlyProxyOwner {
        upgradeTo(newImplementation);
        (bool success, ) = address(this).call{ value: msg.value }(data);
        require(success, "OwnedUpgradeabilityProxy: INVALID");
    }

    /**
     * @dev Fallback function allowing to perform a delegatecall to the given implementation.
     * This function will return whatever the implementation call returns
     */
    fallback() external payable {
        _fallback();
    }

    receive () external payable {
        _fallback();
    }

    /**
     * @dev Tells the address of the current implementation
     * @return impl address of the current implementation
     */
    function implementation() public view 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, 'OwnedUpgradeabilityProxy: INVALID');
        setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    function _fallback() internal {
        if (maintenance()) {
            require(msg.sender == proxyOwner(), 'OwnedUpgradeabilityProxy: FORBIDDEN');
        }
        address _impl = implementation();
        require(_impl != address(0), 'OwnedUpgradeabilityProxy: INVALID');
        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) }
        }
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyProxyOwner() {
        require(msg.sender == proxyOwner(), 'OwnedUpgradeabilityProxy: FORBIDDEN');
        _;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "viaIR": true,
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"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":"maintenance","outputs":[{"internalType":"bool","name":"_maintenance","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyOwner","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_maintenance","type":"bool"}],"name":"setMaintenance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"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

0x60806040526004361015610018575b366104e3576104e3565b6000803560e01c908163025313a21461008b575080633659cfe6146100865780634f1ef286146100815780635c60da1b1461007c578063612f2f37146100775780636c376cc5146100725763f1739cae0361000e576103b4565b610375565b610312565b6102dc565b6101c3565b6100dc565b346100be57806003193601126100be57600080516020610577833981519152546001600160a01b03166080908152602090f35b80fd5b600435906001600160a01b03821682036100d757565b600080fd5b346100d75760203660031901126100d7576100f56100c1565b600080516020610577833981519152546001600160a01b03919061011c9083163314610435565b60008051602061059783398151915261013e815484841694859116141561048d565b557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2005b634e487b7160e01b600052604160045260246000fd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176101a257604052565b610166565b67ffffffffffffffff81116101a257601f01601f191660200190565b60403660031901126100d7576101d76100c1565b60243567ffffffffffffffff81116100d757366023820112156100d75780600401359061020b610206836101a7565b61017c565b918083526020830136602483850101116100d7576102d49382602460209501833760009586809581958401015260018060a01b0390610265826000805160206105778339815191525416331461026081610435565b610435565b600080516020610597833981519152610287815484841694859116141561048d565b557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a2519034305af13d156102d7573d6102c5610206826101a7565b9081528360203d92013e61048d565b80f35b61048d565b346100d75760003660031901126100d757600080516020610597833981519152546040516001600160a01b039091168152602090f35b346100d75760203660031901126100d75760043580151581036100d75761035160018060a01b0360008051602061057783398151915254163314610435565b7fce60c5db904241f4fe710c6b7d7c2e6f59bb4f2afc9ad1549ac9b29eb7f522b655005b346100d75760003660031901126100d75760207fce60c5db904241f4fe710c6b7d7c2e6f59bb4f2afc9ad1549ac9b29eb7f522b6546040519015158152f35b346100d75760203660031901126100d7576103cd6100c1565b60008051602061057783398151915280547f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd9906040906001600160a01b039081169061041a338314610435565b851661042781151561048d565b82519182526020820152a155005b1561043c57565b60405162461bcd60e51b815260206004820152602360248201527f4f776e6564557067726164656162696c69747950726f78793a20464f524249446044820152622222a760e91b6064820152608490fd5b1561049457565b60405162461bcd60e51b815260206004820152602160248201527f4f776e6564557067726164656162696c69747950726f78793a20494e56414c496044820152601160fa1b6064820152608490fd5b7fce60c5db904241f4fe710c6b7d7c2e6f59bb4f2afc9ad1549ac9b29eb7f522b65461054f575b6000805160206105978339815191525461052e6001600160a01b038216151561048d565b60008060405192368285378336915af4903d91826000833e1561054d57f35bfd5b61057160018060a01b0360008051602061057783398151915254163314610435565b61050a56fe85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35df968882b178b4a61d620bde63916829c95f3e1b54eb01ef03837ff1b870f4076a26469706673582212207735b9b0851bf83663474dcd9b74af9c4ca61816e871fa71e3926db6847cc13664736f6c63430008120033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.