ETH Price: $2,926.36 (-0.91%)

Contract

0xEfCcC9d42b243da8736988170A9995bb28D52b93
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Vote301709322026-01-23 7:01:192 days ago1769151679IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000470.00100025
Vote299650442026-01-18 12:38:237 days ago1768739903IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000350.00100025
Vote298735492026-01-16 9:48:339 days ago1768556913IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000390.00100025
Vote297200192026-01-12 20:30:5312 days ago1768249853IN
0xEfCcC9d4...b28D52b93
0 ETH0.000001650.00100025
Vote296270292026-01-10 16:51:1314 days ago1768063873IN
0xEfCcC9d4...b28D52b93
0 ETH0.000001760.00100025
Vote294590042026-01-06 19:30:2318 days ago1767727823IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000450.00100025
Vote292871792026-01-02 20:02:5322 days ago1767384173IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000840.00100025
Vote291627762025-12-30 22:56:0725 days ago1767135367IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000360.00100027
Vote289784132025-12-26 16:30:4129 days ago1766766641IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000420.00100025
Vote288202642025-12-23 0:39:0333 days ago1766450343IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000340.00100028
Vote286771712025-12-19 17:09:1736 days ago1766164157IN
0xEfCcC9d4...b28D52b93
0 ETH0.000001780.00100025
Vote285540792025-12-16 20:46:1339 days ago1765917973IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000370.00100025
Vote284605922025-12-14 16:49:5941 days ago1765730999IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000460.00100025
Vote283308052025-12-11 16:43:4544 days ago1765471425IN
0xEfCcC9d4...b28D52b93
0 ETH0.000001170.00100025
Vote281134362025-12-06 15:58:0749 days ago1765036687IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000320.00100185
Vote279707932025-12-03 8:43:2153 days ago1764751401IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000290.0010007
Vote277353842025-11-27 21:56:2358 days ago1764280583IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000320.00100097
Vote276307562025-11-25 11:48:4761 days ago1764071327IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000290.00100341
Vote274168502025-11-20 12:58:3566 days ago1763643515IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000320.00100104
Vote273827072025-11-19 18:00:2966 days ago1763575229IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000290.00100073
Vote272765262025-11-17 7:01:0769 days ago1763362867IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000290.00100073
Vote271077622025-11-13 9:15:3973 days ago1763025339IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000320.00100085
Vote270423822025-11-11 20:56:1974 days ago1762894579IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000320.0010009
Vote267331802025-11-04 17:09:3581 days ago1762276175IN
0xEfCcC9d4...b28D52b93
0 ETH0.000000440.00100046
Vote265249052025-10-30 21:27:0586 days ago1761859625IN
0xEfCcC9d4...b28D52b93
0 ETH0.00000050.00100056
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
113429392024-11-13 11:01:33438 days ago1731495693  Contract Creation0 ETH

Cross-Chain Transactions
Loading...
Loading

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

Contract Name:
StrategyProxy

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 2000 runs

Other Settings:
paris EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

// SPDX-License-Identifier: MIT
pragma solidity =0.8.19;

import {StorageSlot} from "@openzeppelin/contracts/utils/StorageSlot.sol";

import {ICompoundVeFNXManagedNFTStrategyFactory} from "./interfaces/ICompoundVeFNXManagedNFTStrategyFactory.sol";

contract StrategyProxy {
    address private immutable factory;
    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    constructor() {
        factory = msg.sender;
    }

    function _getImplementation() internal view returns (address) {
        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
    }

    function _setImplementation(address newImplementation) private {
        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
    }

    fallback() external payable {
        address impl = ICompoundVeFNXManagedNFTStrategyFactory(factory).strategyImplementation();
        require(impl != address(0));

        //Just for etherscan compatibility
        if (impl != _getImplementation() && msg.sender != (address(0))) {
            _setImplementation(impl);
        }

        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: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)
// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.

pragma solidity ^0.8.0;

/**
 * @dev Library for reading and writing primitive types to specific storage slots.
 *
 * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
 * This library helps with reading and writing to such slots without the need for inline assembly.
 *
 * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
 *
 * Example usage to set ERC1967 implementation slot:
 * ```solidity
 * contract ERC1967 {
 *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
 *
 *     function _getImplementation() internal view returns (address) {
 *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
 *     }
 *
 *     function _setImplementation(address newImplementation) internal {
 *         require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
 *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
 *     }
 * }
 * ```
 *
 * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._
 * _Available since v4.9 for `string`, `bytes`._
 */
library StorageSlot {
    struct AddressSlot {
        address value;
    }

    struct BooleanSlot {
        bool value;
    }

    struct Bytes32Slot {
        bytes32 value;
    }

    struct Uint256Slot {
        uint256 value;
    }

    struct StringSlot {
        string value;
    }

    struct BytesSlot {
        bytes value;
    }

    /**
     * @dev Returns an `AddressSlot` with member `value` located at `slot`.
     */
    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.
     */
    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
     */
    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.
     */
    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `StringSlot` with member `value` located at `slot`.
     */
    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.
     */
    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := store.slot
        }
    }

    /**
     * @dev Returns an `BytesSlot` with member `value` located at `slot`.
     */
    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.
     */
    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := store.slot
        }
    }
}

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

/**
 * @title Interface for the Compound VeFNX Managed NFT Strategy Factory
 * @notice This interface outlines the functions and events for a factory responsible for creating and managing strategies and virtual rewarders for Compound VeFNX-managed NFTs.
 */
interface ICompoundVeFNXManagedNFTStrategyFactory {
    /**
     * @dev Emitted when the address of the Router V2 Path Provider is updated.
     *
     * @param oldRouterV2PathProvider The address of the previous Router V2 Path Provider.
     * @param newRouterV2PathProvider The address of the new Router V2 Path Provider that has been set.
     */
    event SetRouterV2PathProvider(address indexed oldRouterV2PathProvider, address indexed newRouterV2PathProvider);

    /**
     * @dev Emitted when the default Blast governor address for new strategies is updated.
     *
     * @param oldDefaultBlastGovernor The address of the previous default Blast governor.
     * @param newDefaultBlastGovernor The address of the new default Blast governor that has been set.
     */
    event SetDefaultBlastGovernor(address indexed oldDefaultBlastGovernor, address indexed newDefaultBlastGovernor);

    /**
     * @dev Emitted when the implementation address for the virtual rewarder is changed.
     *
     * @param oldImplementation The previous implementation address of the virtual rewarder.
     * @param newImplementation The new implementation address of the virtual rewarder that has been set.
     */
    event ChangeVirtualRewarderImplementation(address indexed oldImplementation, address indexed newImplementation);

    /**
     * @dev Emitted when the implementation address for the strategy is changed.
     *
     * @param oldImplementation The previous implementation address of the strategy.
     * @param newImplementation The new implementation address of the strategy that has been set.
     */
    event ChangeStrategyImplementation(address indexed oldImplementation, address indexed newImplementation);

    /**
     * @dev Emitted when a new strategy and its corresponding virtual rewarder are created.
     *
     * @param strategy The address of the newly created strategy.
     * @param virtualRewarder The address of the corresponding virtual rewarder created alongside the strategy.
     * @param name The name assigned to the new strategy.
     */
    event CreateStrategy(address indexed strategy, address indexed virtualRewarder, string name);

    /**
     * @notice Returns the current implementation address of the virtual rewarder.
     * @return The address of the virtual rewarder implementation.
     */
    function virtualRewarderImplementation() external view returns (address);

    /**
     * @notice Returns the current implementation address of the strategy.
     * @return The address of the strategy implementation.
     */
    function strategyImplementation() external view returns (address);

    /**
     * @notice Returns the address of the managed NFT manager associated with the strategies.
     * @return The address of the managed NFT manager.
     */
    function managedNFTManager() external view returns (address);

    /**
     * @notice Returns the current default Blast governor address.
     * @return The address of the default Blast governor.
     */
    function defaultBlastGovernor() external view returns (address);

    /**
     * @notice Returns the address of the Router V2 Path Provider used to fetch and calculate
     *  optimal routes for token transactions within strategies.
     * @return The address of the RouterV2PathProvider.
     */
    function routerV2PathProvider() external view returns (address);

    /**
     * @notice Creates a new strategy with a specific name.
     * @param name_ The name to assign to the new strategy.
     * @return The address of the newly created strategy instance
     */
    function createStrategy(string calldata name_) external returns (address);

    /**
     * @notice Sets a new default Blast governor address for newly created strategies.
     * @param defaultBlastGovernor_ The new default governor address to be set.
     */
    function setDefaultBlastGovernor(address defaultBlastGovernor_) external;

    /**
     * @notice Sets a new RouterV2PathProvider.
     * @param routerV2PathProvider_ The new address to set
     */
    function setRouterV2PathProvider(address routerV2PathProvider_) external;
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"}]

0x60a080604052346100225733608052610277908161002882396080518160470152f35b600080fdfe60806040527fbd922b1c0000000000000000000000000000000000000000000000000000000060805273ffffffffffffffffffffffffffffffffffffffff60206080600481847f0000000000000000000000000000000000000000000000000000000000000000165afa90811561018f57600091610161575b6100c68183169161008a831515610263565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541673ffffffffffffffffffffffffffffffffffffffff1690565b141580610158575b6100f4575b60008060405192368285378336915af4903d91826000833e156100f257f35bfd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556100d3565b503315156100ce565b905060203d8111610188575b8061017a61018292610194565b608001610205565b90610078565b503d61016d565b610257565b601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09101166080016080811067ffffffffffffffff8211176101d657604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8060209101126102525760805173ffffffffffffffffffffffffffffffffffffffff811681036102525790565b600080fd5b6040513d6000823e3d90fd5b156102525756fea164736f6c6343000813000a

Deployed Bytecode

0x60806040527fbd922b1c0000000000000000000000000000000000000000000000000000000060805273ffffffffffffffffffffffffffffffffffffffff60206080600481847f000000000000000000000000db60b6ceb16db04db0a6fe85b1fe868ffda20660165afa90811561018f57600091610161575b6100c68183169161008a831515610263565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541673ffffffffffffffffffffffffffffffffffffffff1690565b141580610158575b6100f4575b60008060405192368285378336915af4903d91826000833e156100f257f35bfd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556100d3565b503315156100ce565b905060203d8111610188575b8061017a61018292610194565b608001610205565b90610078565b503d61016d565b610257565b601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09101166080016080811067ffffffffffffffff8211176101d657604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8060209101126102525760805173ffffffffffffffffffffffffffffffffffffffff811681036102525790565b600080fd5b6040513d6000823e3d90fd5b156102525756fea164736f6c6343000813000a

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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.