ETH Price: $3,497.45 (+0.69%)
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Token Holdings

Sponsored

Transaction Hash
Method
Block
From
To
Value
Create Account161367172024-06-22 13:26:2131 mins ago1719062781IN
0x32C222A9...6CA72C696
0 ETH0.000001420.00615444
Claim Rewards161358962024-06-22 12:58:591 hrs ago1719061139IN
0x32C222A9...6CA72C696
0 ETH0.000000740.0067
Claim Rewards161358022024-06-22 12:55:511 hr ago1719060951IN
0x32C222A9...6CA72C696
0 ETH0.000000840.0067
Claim Rewards161344122024-06-22 12:09:311 hr ago1719058171IN
0x32C222A9...6CA72C696
0 ETH0.000001150.008
Mint Usd161344012024-06-22 12:09:091 hr ago1719058149IN
0x32C222A9...6CA72C696
0 ETH0.000018980.008
Claim Rewards161342112024-06-22 12:02:491 hr ago1719057769IN
0x32C222A9...6CA72C696
0 ETH0.000001130.0079
Mint Usd161342032024-06-22 12:02:331 hr ago1719057753IN
0x32C222A9...6CA72C696
0 ETH0.000018340.0078
Delegate Collate...161341882024-06-22 12:02:031 hr ago1719057723IN
0x32C222A9...6CA72C696
0 ETH0.000023610.0078
Mint Usd161338612024-06-22 11:51:092 hrs ago1719057069IN
0x32C222A9...6CA72C696
0 ETH0.000019250.0081
Create Account161338162024-06-22 11:49:392 hrs ago1719056979IN
0x32C222A9...6CA72C696
0 ETH0.000001480.00642414
Claim Rewards161319872024-06-22 10:48:413 hrs ago1719053321IN
0x32C222A9...6CA72C696
0 ETH0.000000930.0074
Claim Rewards161316342024-06-22 10:36:553 hrs ago1719052615IN
0x32C222A9...6CA72C696
0 ETH0.000000880.007
Mint Usd161289822024-06-22 9:08:314 hrs ago1719047311IN
0x32C222A9...6CA72C696
0 ETH0.000007770.0033
Claim Rewards161289732024-06-22 9:08:134 hrs ago1719047293IN
0x32C222A9...6CA72C696
0 ETH0.000000410.0033
Mint Usd161284852024-06-22 8:51:575 hrs ago1719046317IN
0x32C222A9...6CA72C696
0 ETH0.000005260.00221609
Mint Usd161269302024-06-22 8:00:075 hrs ago1719043207IN
0x32C222A9...6CA72C696
0 ETH0.000004860.00205475
Delegate Collate...161268382024-06-22 7:57:036 hrs ago1719043023IN
0x32C222A9...6CA72C696
0 ETH0.000005940.00195148
Claim Rewards161261502024-06-22 7:34:076 hrs ago1719041647IN
0x32C222A9...6CA72C696
0 ETH0.000000440.0035
Claim Rewards161261292024-06-22 7:33:256 hrs ago1719041605IN
0x32C222A9...6CA72C696
0 ETH0.00000050.0035
Claim Rewards161254072024-06-22 7:09:216 hrs ago1719040161IN
0x32C222A9...6CA72C696
0 ETH0.000000540.0043
Claim Rewards161253952024-06-22 7:08:576 hrs ago1719040137IN
0x32C222A9...6CA72C696
0 ETH0.000000540.0043
Claim Rewards161251182024-06-22 6:59:436 hrs ago1719039583IN
0x32C222A9...6CA72C696
0 ETH0.000000520.00366011
Claim Rewards161251062024-06-22 6:59:196 hrs ago1719039559IN
0x32C222A9...6CA72C696
0 ETH0.000000460.00365762
Claim Rewards161249422024-06-22 6:53:517 hrs ago1719039231IN
0x32C222A9...6CA72C696
0 ETH0.000000560.00394906
Claim Rewards161249042024-06-22 6:52:357 hrs ago1719039155IN
0x32C222A9...6CA72C696
0 ETH0.000000570.00402345
View all transactions

Latest 3 internal transactions

Advanced mode:
Parent Transaction Hash Block From To Value
78892532023-12-14 15:30:53190 days ago1702567853
0x32C222A9...6CA72C696
 Contract Creation0 ETH
78892522023-12-14 15:30:51190 days ago1702567851
0x32C222A9...6CA72C696
 Contract Creation0 ETH
78891982023-12-14 15:29:03190 days ago1702567743  Contract Creation0 ETH

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Proxy

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes 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";

/**
 * Synthetix V3 Core Proxy Contract
 *
 * Visit https://usecannon.com/packages/synthetix to interact with this protocol
 */
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": true,
    "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"}]

608060405234801561001057600080fd5b5060405161037c38038061037c83398101604081905261002f916101e2565b8181816001600160a01b0381166100595760405163d92e233d60e01b815260040160405180910390fd5b61006c8161010460201b6100471760201c565b610098576040516322a2d07b60e21b81526001600160a01b038216600482015260240160405180910390fd5b806100a161010a565b60000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050806100dc61017660201b61004d1760201c565b80546001600160a01b0319166001600160a01b03929092169190911790555061021592505050565b3b151590565b6000806040516020016101589060208082526021908201527f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f786040820152607960f81b606082015260800190565b60408051601f19818403018152919052805160209091012092915050565b6000806040516020016101589060208082526023908201527f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e61604082015262626c6560e81b606082015260800190565b80516001600160a01b03811681146101dd57600080fd5b919050565b600080604083850312156101f557600080fd5b6101fe836101c6565b915061020c602084016101c6565b90509250929050565b610158806102246000396000f3fe60806040523661001357610011610017565b005b6100115b60006100216100bb565b90503660008037600080366000845af43d6000803e808015610042573d6000f35b3d6000fd5b3b151590565b60008060405160200161009d9060208082526023908201527f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e61604082015262626c6560e81b606082015260800190565b60408051601f19818403018152919052805160209091012092915050565b60006100c56100d4565b546001600160a01b0316919050565b60008060405160200161009d9060208082526021908201527f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f786040820152607960f81b60608201526080019056fea264697066735822122071ae0f04c18fdfa7ce0cb096d4c21c5cc78bf9bd1ac9acd520eb72bd22c9404c64736f6c63430008110033000000000000000000000000828eed723caf0a8f822249231266e38df614923c000000000000000000000000ede8a407913a874dd7e3d5b731afca135d30375e

Deployed Bytecode

0x60806040523661001357610011610017565b005b6100115b60006100216100bb565b90503660008037600080366000845af43d6000803e808015610042573d6000f35b3d6000fd5b3b151590565b60008060405160200161009d9060208082526023908201527f696f2e73796e7468657469782e636f72652d636f6e7472616374732e4f776e61604082015262626c6560e81b606082015260800190565b60408051601f19818403018152919052805160209091012092915050565b60006100c56100d4565b546001600160a01b0316919050565b60008060405160200161009d9060208082526021908201527f696f2e73796e7468657469782e636f72652d636f6e7472616374732e50726f786040820152607960f81b60608201526080019056fea264697066735822122071ae0f04c18fdfa7ce0cb096d4c21c5cc78bf9bd1ac9acd520eb72bd22c9404c64736f6c63430008110033

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

000000000000000000000000828eed723caf0a8f822249231266e38df614923c000000000000000000000000ede8a407913a874dd7e3d5b731afca135d30375e

-----Decoded View---------------
Arg [0] : firstImplementation (address): 0x828EED723cAF0A8F822249231266E38dF614923C
Arg [1] : initialOwner (address): 0xEde8a407913A874Dd7e3d5B731AFcA135D30375E

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000828eed723caf0a8f822249231266e38df614923c
Arg [1] : 000000000000000000000000ede8a407913a874dd7e3d5b731afca135d30375e


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
[ 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.