More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 252 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Vote | 30287837 | 6 hrs ago | IN | 0 ETH | 0.0000005 | ||||
| Vote | 30170934 | 2 days ago | IN | 0 ETH | 0.00000047 | ||||
| Vote | 29965047 | 7 days ago | IN | 0 ETH | 0.00000035 | ||||
| Vote | 29873551 | 9 days ago | IN | 0 ETH | 0.00000039 | ||||
| Vote | 29720022 | 13 days ago | IN | 0 ETH | 0.00000165 | ||||
| Vote | 29627032 | 15 days ago | IN | 0 ETH | 0.00000176 | ||||
| Vote | 29459007 | 19 days ago | IN | 0 ETH | 0.00000045 | ||||
| Vote | 29287181 | 23 days ago | IN | 0 ETH | 0.00000084 | ||||
| Vote | 29162778 | 26 days ago | IN | 0 ETH | 0.00000036 | ||||
| Vote | 28978416 | 30 days ago | IN | 0 ETH | 0.00000042 | ||||
| Vote | 28820267 | 34 days ago | IN | 0 ETH | 0.00000034 | ||||
| Vote | 28677174 | 37 days ago | IN | 0 ETH | 0.00000178 | ||||
| Vote | 28554082 | 40 days ago | IN | 0 ETH | 0.00000037 | ||||
| Vote | 28460594 | 42 days ago | IN | 0 ETH | 0.00000046 | ||||
| Vote | 28330807 | 45 days ago | IN | 0 ETH | 0.00000117 | ||||
| Vote | 28113438 | 50 days ago | IN | 0 ETH | 0.00000032 | ||||
| Vote | 27970796 | 53 days ago | IN | 0 ETH | 0.00000029 | ||||
| Vote | 27735387 | 59 days ago | IN | 0 ETH | 0.00000032 | ||||
| Vote | 27630759 | 61 days ago | IN | 0 ETH | 0.00000029 | ||||
| Vote | 27416853 | 66 days ago | IN | 0 ETH | 0.00000032 | ||||
| Vote | 27382710 | 67 days ago | IN | 0 ETH | 0.00000029 | ||||
| Vote | 27276529 | 69 days ago | IN | 0 ETH | 0.00000029 | ||||
| Vote | 27107764 | 73 days ago | IN | 0 ETH | 0.00000032 | ||||
| Vote | 27042386 | 75 days ago | IN | 0 ETH | 0.00000032 | ||||
| Vote | 26733183 | 82 days ago | IN | 0 ETH | 0.00000044 |
Latest 1 internal transaction
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 10773462 | 451 days ago | Contract Creation | 0 ETH |
Cross-Chain Transactions
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;
}{
"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
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"}]Contract Creation Code
60a080604052346100225733608052610277908161002882396080518160470152f35b600080fdfe60806040527fbd922b1c0000000000000000000000000000000000000000000000000000000060805273ffffffffffffffffffffffffffffffffffffffff60206080600481847f0000000000000000000000000000000000000000000000000000000000000000165afa90811561018f57600091610161575b6100c68183169161008a831515610263565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541673ffffffffffffffffffffffffffffffffffffffff1690565b141580610158575b6100f4575b60008060405192368285378336915af4903d91826000833e156100f257f35bfd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556100d3565b503315156100ce565b905060203d8111610188575b8061017a61018292610194565b608001610205565b90610078565b503d61016d565b610257565b601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09101166080016080811067ffffffffffffffff8211176101d657604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8060209101126102525760805173ffffffffffffffffffffffffffffffffffffffff811681036102525790565b600080fd5b6040513d6000823e3d90fd5b156102525756fea164736f6c6343000813000a
Deployed Bytecode
0x60806040527fbd922b1c0000000000000000000000000000000000000000000000000000000060805273ffffffffffffffffffffffffffffffffffffffff60206080600481847f000000000000000000000000db60b6ceb16db04db0a6fe85b1fe868ffda20660165afa90811561018f57600091610161575b6100c68183169161008a831515610263565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541673ffffffffffffffffffffffffffffffffffffffff1690565b141580610158575b6100f4575b60008060405192368285378336915af4903d91826000833e156100f257f35bfd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556100d3565b503315156100ce565b905060203d8111610188575b8061017a61018292610194565b608001610205565b90610078565b503d61016d565b610257565b601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09101166080016080811067ffffffffffffffff8211176101d657604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8060209101126102525760805173ffffffffffffffffffffffffffffffffffffffff811681036102525790565b600080fd5b6040513d6000823e3d90fd5b156102525756fea164736f6c6343000813000a
Net Worth in USD
Net Worth in ETH
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.