ETH Price: $3,348.00 (-0.81%)

Contract

0x3AcF163B9E6a384D539e10dAc7e11213c638b2f5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Migrate212454032024-11-22 19:37:3512 hrs ago1732304255IN
0x3AcF163B...3c638b2f5
0 ETH0.0421896213.31241414
Convert USD212442762024-11-22 15:50:1116 hrs ago1732290611IN
0x3AcF163B...3c638b2f5
0 ETH0.0119970616.34488017
Convert USD212434392024-11-22 13:01:5918 hrs ago1732280519IN
0x3AcF163B...3c638b2f5
0 ETH0.0113419115.43264925
Migrate212434152024-11-22 12:57:1118 hrs ago1732280231IN
0x3AcF163B...3c638b2f5
0 ETH0.0250347214.81713579
Convert USD212405132024-11-22 3:13:4728 hrs ago1732245227IN
0x3AcF163B...3c638b2f5
0 ETH0.0075232410.23690219
Convert USD212396892024-11-22 0:28:2331 hrs ago1732235303IN
0x3AcF163B...3c638b2f5
0 ETH0.0082834111.27102187
Convert USD212389262024-11-21 21:54:3534 hrs ago1732226075IN
0x3AcF163B...3c638b2f5
0 ETH0.0098730413.38312109
Migrate212389192024-11-21 21:53:1134 hrs ago1732225991IN
0x3AcF163B...3c638b2f5
0 ETH0.0245264313.72397977
Convert USD212288422024-11-20 12:06:352 days ago1732104395IN
0x3AcF163B...3c638b2f5
0 ETH0.0078378410.62467661
Migrate212288342024-11-20 12:04:592 days ago1732104299IN
0x3AcF163B...3c638b2f5
0 ETH0.0155614211.1614258
Convert USD212204622024-11-19 8:04:233 days ago1732003463IN
0x3AcF163B...3c638b2f5
0 ETH0.006803119.26828324
Convert USD212180272024-11-18 23:55:354 days ago1731974135IN
0x3AcF163B...3c638b2f5
0 ETH0.0084577511.47849418
Migrate212180182024-11-18 23:53:474 days ago1731974027IN
0x3AcF163B...3c638b2f5
0 ETH0.021507410.004194
Convert USD212097872024-11-17 20:22:235 days ago1731874943IN
0x3AcF163B...3c638b2f5
0 ETH0.006501758.81387758
Migrate212088772024-11-17 17:19:355 days ago1731863975IN
0x3AcF163B...3c638b2f5
0 ETH0.0352594719.96455416
Convert USD212054342024-11-17 5:47:476 days ago1731822467IN
0x3AcF163B...3c638b2f5
0 ETH0.007008419.57268762
Migrate212054242024-11-17 5:45:356 days ago1731822335IN
0x3AcF163B...3c638b2f5
0 ETH0.016959489.93869166
Convert USD212053432024-11-17 5:29:236 days ago1731821363IN
0x3AcF163B...3c638b2f5
0 ETH0.006561349.14072954
Convert USD212030932024-11-16 21:57:236 days ago1731794243IN
0x3AcF163B...3c638b2f5
0 ETH0.0082603611.19703783
Convert USD212004362024-11-16 13:03:596 days ago1731762239IN
0x3AcF163B...3c638b2f5
0 ETH0.0079877710.84150341
Migrate211927902024-11-15 11:26:237 days ago1731669983IN
0x3AcF163B...3c638b2f5
0 ETH0.0248628913.30049679
Convert USD211916312024-11-15 7:34:118 days ago1731656051IN
0x3AcF163B...3c638b2f5
0 ETH0.0094748413.14829699
Convert USD211843942024-11-14 7:18:479 days ago1731568727IN
0x3AcF163B...3c638b2f5
0 ETH0.024115331.73291479
Convert USD211740272024-11-12 20:35:3510 days ago1731443735IN
0x3AcF163B...3c638b2f5
0 ETH0.0205317828.04474952
Migrate211740212024-11-12 20:34:2310 days ago1731443663IN
0x3AcF163B...3c638b2f5
0 ETH0.0478653828.48880945
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Proxy

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 9 : Proxy.sol
//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;

import {UUPSProxyWithOwner} from "@synthetixio/core-contracts/contracts/proxy/UUPSProxyWithOwner.sol";

contract Proxy is UUPSProxyWithOwner {
    // solhint-disable-next-line no-empty-blocks
    constructor(
        address firstImplementation,
        address initialOwner
    ) UUPSProxyWithOwner(firstImplementation, initialOwner) {}
}

File 2 of 9 : AccessError.sol
//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;

/**
 * @title Library for access related errors.
 */
library AccessError {
    /**
     * @dev Thrown when an address tries to perform an unauthorized action.
     * @param addr The address that attempts the action.
     */
    error Unauthorized(address addr);
}

File 3 of 9 : AddressError.sol
//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;

/**
 * @title Library for address related errors.
 */
library AddressError {
    /**
     * @dev Thrown when a zero address was passed as a function parameter (0x0000000000000000000000000000000000000000).
     */
    error ZeroAddress();

    /**
     * @dev Thrown when an address representing a contract is expected, but no code is found at the address.
     * @param contr The address that was expected to be a contract.
     */
    error NotAContract(address contr);
}

File 4 of 9 : OwnableStorage.sol
//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;

import "../errors/AccessError.sol";

library OwnableStorage {
    bytes32 private constant _SLOT_OWNABLE_STORAGE =
        keccak256(abi.encode("io.synthetix.core-contracts.Ownable"));

    struct Data {
        address owner;
        address nominatedOwner;
    }

    function load() internal pure returns (Data storage store) {
        bytes32 s = _SLOT_OWNABLE_STORAGE;
        assembly {
            store.slot := s
        }
    }

    function onlyOwner() internal view {
        if (msg.sender != getOwner()) {
            revert AccessError.Unauthorized(msg.sender);
        }
    }

    function getOwner() internal view returns (address) {
        return OwnableStorage.load().owner;
    }
}

File 5 of 9 : AbstractProxy.sol
//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;

abstract contract AbstractProxy {
    fallback() external payable {
        _forward();
    }

    receive() external payable {
        _forward();
    }

    function _forward() internal {
        address implementation = _getImplementation();

        // solhint-disable-next-line no-inline-assembly
        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 _getImplementation() internal view virtual returns (address);
}

File 6 of 9 : ProxyStorage.sol
//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;

contract ProxyStorage {
    bytes32 private constant _SLOT_PROXY_STORAGE =
        keccak256(abi.encode("io.synthetix.core-contracts.Proxy"));

    struct ProxyStore {
        address implementation;
        bool simulatingUpgrade;
    }

    function _proxyStore() internal pure returns (ProxyStore storage store) {
        bytes32 s = _SLOT_PROXY_STORAGE;
        assembly {
            store.slot := s
        }
    }
}

File 7 of 9 : UUPSProxy.sol
//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;

import "./AbstractProxy.sol";
import "./ProxyStorage.sol";
import "../errors/AddressError.sol";
import "../utils/AddressUtil.sol";

contract UUPSProxy is AbstractProxy, ProxyStorage {
    constructor(address firstImplementation) {
        if (firstImplementation == address(0)) {
            revert AddressError.ZeroAddress();
        }

        if (!AddressUtil.isContract(firstImplementation)) {
            revert AddressError.NotAContract(firstImplementation);
        }

        _proxyStore().implementation = firstImplementation;
    }

    function _getImplementation() internal view virtual override returns (address) {
        return _proxyStore().implementation;
    }
}

File 8 of 9 : UUPSProxyWithOwner.sol
//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;

import {UUPSProxy} from "./UUPSProxy.sol";
import {OwnableStorage} from "../ownership/OwnableStorage.sol";

contract UUPSProxyWithOwner is UUPSProxy {
    // solhint-disable-next-line no-empty-blocks
    constructor(address firstImplementation, address initialOwner) UUPSProxy(firstImplementation) {
        OwnableStorage.load().owner = initialOwner;
    }
}

File 9 of 9 : AddressUtil.sol
//SPDX-License-Identifier: MIT
pragma solidity >=0.8.11 <0.9.0;

library AddressUtil {
    function isContract(address account) internal view returns (bool) {
        uint256 size;

        assembly {
            size := extcodesize(account)
        }

        return size > 0;
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"firstImplementation","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"contr","type":"address"}],"name":"NotAContract","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b5060405161068538038061068583398181016040528101906100329190610275565b818181600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361009b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100ae8161019d60201b61004f1760201c565b6100ef57806040517f8a8b41ec0000000000000000000000000000000000000000000000000000000081526004016100e691906102c4565b60405180910390fd5b806100fe6101b060201b60201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050806101536101e160201b6100621760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050610414565b600080823b905060008111915050919050565b6000806040516020016101c290610362565b6040516020818303038152906040528051906020012090508091505090565b6000806040516020016101f3906103f4565b6040516020818303038152906040528051906020012090508091505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061024282610217565b9050919050565b61025281610237565b811461025d57600080fd5b50565b60008151905061026f81610249565b92915050565b6000806040838503121561028c5761028b610212565b5b600061029a85828601610260565b92505060206102ab85828601610260565b9150509250929050565b6102be81610237565b82525050565b60006020820190506102d960008301846102b5565b92915050565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b600061034c6021836102df565b9150610357826102f0565b604082019050919050565b6000602082019050818103600083015261037b8161033f565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b60006103de6023836102df565b91506103e982610382565b604082019050919050565b6000602082019050818103600083015261040d816103d1565b9050919050565b610262806104236000396000f3fe6080604052366100135761001161001d565b005b61001b61001d565b005b6000610027610093565b90503660008037600080366000845af43d6000803e806000811461004a573d6000f35b3d6000fd5b600080823b905060008111915050919050565b6000806040516020016100749061017a565b6040516020818303038152906040528051906020012090508091505090565b600061009d6100c6565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806040516020016100d89061020c565b6040516020818303038152906040528051906020012090508091505090565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b60006101646023836100f7565b915061016f82610108565b604082019050919050565b6000602082019050818103600083015261019381610157565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b60006101f66021836100f7565b91506102018261019a565b604082019050919050565b60006020820190508181036000830152610225816101e9565b905091905056fea264697066735822122032669087b735337c9422ac4fec5ef5ee7df3e0af0c8b76755e9fb5b0ce10b45964736f6c63430008110033000000000000000000000000c7ba0f1de31627ad655684cd347260eb7a815e78000000000000000000000000eb3107117fead7de89cd14d463d340a2e6917769

Deployed Bytecode

0x6080604052366100135761001161001d565b005b61001b61001d565b005b6000610027610093565b90503660008037600080366000845af43d6000803e806000811461004a573d6000f35b3d6000fd5b600080823b905060008111915050919050565b6000806040516020016100749061017a565b6040516020818303038152906040528051906020012090508091505090565b600061009d6100c6565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806040516020016100d89061020c565b6040516020818303038152906040528051906020012090508091505090565b600082825260208201905092915050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e6160008201527f626c650000000000000000000000000000000000000000000000000000000000602082015250565b60006101646023836100f7565b915061016f82610108565b604082019050919050565b6000602082019050818103600083015261019381610157565b9050919050565b7f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f7860008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b60006101f66021836100f7565b91506102018261019a565b604082019050919050565b60006020820190508181036000830152610225816101e9565b905091905056fea264697066735822122032669087b735337c9422ac4fec5ef5ee7df3e0af0c8b76755e9fb5b0ce10b45964736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000c7ba0f1de31627ad655684cd347260eb7a815e78000000000000000000000000eb3107117fead7de89cd14d463d340a2e6917769

-----Decoded View---------------
Arg [0] : firstImplementation (address): 0xc7BA0f1DE31627Ad655684Cd347260eb7a815e78
Arg [1] : initialOwner (address): 0xEb3107117FEAd7de89Cd14D463D340A2E6917769

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000c7ba0f1de31627ad655684cd347260eb7a815e78
Arg [1] : 000000000000000000000000eb3107117fead7de89cd14d463d340a2e6917769


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  ]

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.