ETH Price: $3,473.31 (+4.69%)

Contract

0xC2C505613AAcA4D5F333D3a4E0177e99Fe233C37
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve210624532024-10-28 6:50:4726 days ago1730098247IN
0xC2C50561...9Fe233C37
0 ETH0.000182646.25698983
Approve210598002024-10-27 21:57:1126 days ago1730066231IN
0xC2C50561...9Fe233C37
0 ETH0.000231217.9206394
Approve204995042024-08-10 16:48:11104 days ago1723308491IN
0xC2C50561...9Fe233C37
0 ETH0.000031881.09219853
Approve203293552024-07-17 22:52:47128 days ago1721256767IN
0xC2C50561...9Fe233C37
0 ETH0.000238628.17464327
Approve197999982024-05-04 23:23:47202 days ago1714865027IN
0xC2C50561...9Fe233C37
0 ETH0.000132984.55562651
Approve194866292024-03-22 0:34:47246 days ago1711067687IN
0xC2C50561...9Fe233C37
0 ETH0.0006147221.05872132
Withdraw194521752024-03-17 4:24:59251 days ago1710649499IN
0xC2C50561...9Fe233C37
0 ETH0.0229153220
Withdraw194223092024-03-12 23:33:47255 days ago1710286427IN
0xC2C50561...9Fe233C37
0 ETH0.0526178446.40721149
Approve192804122024-02-22 3:13:35275 days ago1708571615IN
0xC2C50561...9Fe233C37
0 ETH0.0008403828.78921378
Withdraw190841322024-01-25 14:09:35303 days ago1706191775IN
0xC2C50561...9Fe233C37
0 ETH0.0336301429.35343798
Withdraw190840972024-01-25 14:02:23303 days ago1706191343IN
0xC2C50561...9Fe233C37
0 ETH0.0011354330.89967361
Withdraw190840802024-01-25 13:58:59303 days ago1706191139IN
0xC2C50561...9Fe233C37
0 ETH0.0011340530.86197175
Withdraw190840742024-01-25 13:57:47303 days ago1706191067IN
0xC2C50561...9Fe233C37
0 ETH0.0012256633.40967379
Approve189191832024-01-02 10:43:59326 days ago1704192239IN
0xC2C50561...9Fe233C37
0 ETH0.0004076213.96419602
Withdraw186249362023-11-22 4:34:59367 days ago1700627699IN
0xC2C50561...9Fe233C37
0 ETH0.028719825.08118004
Withdraw185150952023-11-06 19:43:23382 days ago1699299803IN
0xC2C50561...9Fe233C37
0 ETH0.072481348.6489618
Approve182924332023-10-06 15:44:23413 days ago1696607063IN
0xC2C50561...9Fe233C37
0 ETH0.0005781919.80732346
Approve172019092023-05-06 13:40:35567 days ago1683380435IN
0xC2C50561...9Fe233C37
0 ETH0.00395758135.57553072
Approve171667082023-05-01 14:56:11572 days ago1682952971IN
0xC2C50561...9Fe233C37
0 ETH0.0024556284.12275911
Approve169173482023-03-27 7:50:59607 days ago1679903459IN
0xC2C50561...9Fe233C37
0 ETH0.0005203417.82537693
Approve165100842023-01-29 4:26:35664 days ago1674966395IN
0xC2C50561...9Fe233C37
0 ETH0.0004026813.79500319
Transfer161745292022-12-13 8:16:11711 days ago1670919371IN
0xC2C50561...9Fe233C37
0 ETH0.0008122714.35523879
Approve160467642022-11-25 11:40:35729 days ago1669376435IN
0xC2C50561...9Fe233C37
0 ETH0.0003291111.27457565
Approve159967872022-11-18 12:05:47736 days ago1668773147IN
0xC2C50561...9Fe233C37
0 ETH0.0003845213.17279531
Approve159671412022-11-14 8:40:23740 days ago1668415223IN
0xC2C50561...9Fe233C37
0 ETH0.0004064113.92245528
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

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

Contract Name:
VaultProxy

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 5 : VaultProxy.sol
pragma solidity 0.5.16;

import "./interfaces/IUpgradeSource.sol";
import "@openzeppelin/upgrades/contracts/upgradeability/BaseUpgradeabilityProxy.sol";

contract VaultProxy is BaseUpgradeabilityProxy {
    constructor(address _implementation) public {
        _setImplementation(_implementation);
    }

    /**
     * The main logic. If the timer has elapsed and there is a schedule upgrade,
     * the governance can upgrade the vault
     */
    function upgrade() external {
        (bool should, address newImplementation) =
            IUpgradeSource(address(this)).shouldUpgrade();
        require(should, "Upgrade not scheduled");
        _upgradeTo(newImplementation);

        // the finalization needs to be executed on itself to update the storage of this proxy
        // it also needs to be invoked by the governance, not by address(this), so delegatecall is needed
        (bool success, bytes memory result) =
            address(this).delegatecall(
                abi.encodeWithSignature("finalizeUpgrade()")
            );

        require(success, "Issue when finalizing the upgrade");
    }

    function implementation() external view returns (address) {
        return _implementation();
    }
}

File 2 of 5 : IUpgradeSource.sol
pragma solidity 0.5.16;

interface IUpgradeSource {
    function shouldUpgrade() external view returns (bool, address);

    function finalizeUpgrade() external;
}

File 3 of 5 : BaseUpgradeabilityProxy.sol
pragma solidity ^0.5.0;

import './Proxy.sol';
import '../utils/Address.sol';

/**
 * @title BaseUpgradeabilityProxy
 * @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 BaseUpgradeabilityProxy is Proxy {
  /**
   * @dev Emitted when the implementation is upgraded.
   * @param implementation Address of the new implementation.
   */
  event Upgraded(address indexed implementation);

  /**
   * @dev Storage slot with the address of the current implementation.
   * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
   * validated in the constructor.
   */
  bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

  /**
   * @dev Returns the current implementation.
   * @return Address of the current implementation
   */
  function _implementation() 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) internal {
    require(OpenZeppelinUpgradesAddress.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address");

    bytes32 slot = IMPLEMENTATION_SLOT;

    assembly {
      sstore(slot, newImplementation)
    }
  }
}

File 4 of 5 : Proxy.sol
pragma solidity ^0.5.0;

/**
 * @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.
 */
contract Proxy {
  /**
   * @dev Fallback function.
   * Implemented entirely in `_fallback`.
   */
  function () payable external {
    _fallback();
  }

  /**
   * @return The Address of the implementation.
   */
  function _implementation() 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 {
  }

  /**
   * @dev fallback implementation.
   * Extracted to enable manual triggering.
   */
  function _fallback() internal {
    _willFallback();
    _delegate(_implementation());
  }
}

File 5 of 5 : Address.sol
pragma solidity ^0.5.0;

/**
 * Utility library of inline functions on addresses
 *
 * Source https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/v2.1.3/contracts/utils/Address.sol
 * This contract is copied here and renamed from the original to avoid clashes in the compiled artifacts
 * when the user imports a zos-lib contract (that transitively causes this contract to be compiled and added to the
 * build/artifacts folder) as well as the vanilla Address implementation from an openzeppelin version.
 */
library OpenZeppelinUpgradesAddress {
    /**
     * 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 account address of the account to check
     * @return whether the target address is a contract
     */
    function isContract(address account) 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.
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x6080604052600436106100295760003560e01c80635c60da1b14610033578063d55ec69714610064575b610031610079565b005b34801561003f57600080fd5b50610048610093565b604080516001600160a01b039092168252519081900360200190f35b34801561007057600080fd5b506100316100a2565b610081610091565b61009161008c610271565b610296565b565b600061009d610271565b905090565b600080306001600160a01b0316639d16acfd6040518163ffffffff1660e01b8152600401604080518083038186803b1580156100dd57600080fd5b505afa1580156100f1573d6000803e3d6000fd5b505050506040513d604081101561010757600080fd5b50805160209091015190925090508161015f576040805162461bcd60e51b8152602060048201526015602482015274155c19dc985919481b9bdd081cd8da19591d5b1959605a1b604482015290519081900360640190fd5b610168816102ba565b60408051600481526024810182526020810180516001600160e01b0316634d28464760e11b1781529151815160009360609330939092909182918083835b602083106101c55780518252601f1990920191602091820191016101a6565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610225576040519150601f19603f3d011682016040523d82523d6000602084013e61022a565b606091505b50915091508161026b5760405162461bcd60e51b81526004018080602001828103825260218152602001806103696021913960400191505060405180910390fd5b50505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156102b5573d6000f35b3d6000fd5b6102c3816102fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61030381610362565b61033e5760405162461bcd60e51b815260040180806020018281038252603b81526020018061038a603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe4973737565207768656e2066696e616c697a696e6720746865207570677261646543616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a7231582061244155960157bbce0aa75376fcb6d5c969ba89d420330ddeabc7b1a4b6309664736f6c63430005100032

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.