ETH Price: $3,004.21 (+2.67%)

Contract

0x85c7E8b618B9CAd0F0c40A0B40a4D31D8D51e2AF
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Create122458122024-12-04 8:37:19419 days ago1733301439IN
Thruster: Merkl Gauge Factory
0 ETH0.000001420.00197105
Create109512862024-11-04 9:26:27449 days ago1730712387IN
Thruster: Merkl Gauge Factory
0 ETH0.000000550.0018938
Create109512832024-11-04 9:26:21449 days ago1730712381IN
Thruster: Merkl Gauge Factory
0 ETH0.000000640.00238843
Create109512792024-11-04 9:26:13449 days ago1730712373IN
Thruster: Merkl Gauge Factory
0 ETH0.000000530.00187762
Create109512772024-11-04 9:26:09449 days ago1730712369IN
Thruster: Merkl Gauge Factory
0 ETH0.000000530.00186693
Create106419262024-10-28 5:34:27457 days ago1730093667IN
Thruster: Merkl Gauge Factory
0 ETH0.00000060.00274566
Create100749202024-10-15 2:34:15470 days ago1728959655IN
Thruster: Merkl Gauge Factory
0 ETH0.000001270.00576214
Create98747122024-10-10 11:20:39474 days ago1728559239IN
Thruster: Merkl Gauge Factory
0 ETH0.000000350.00168703
Create98310932024-10-09 11:06:41475 days ago1728472001IN
Thruster: Merkl Gauge Factory
0 ETH0.000000360.00158584
Create95623612024-10-03 5:48:57482 days ago1727934537IN
Thruster: Merkl Gauge Factory
0 ETH0.000000730.00371465
Create95623572024-10-03 5:48:49482 days ago1727934529IN
Thruster: Merkl Gauge Factory
0 ETH0.000000730.00373011
Create95623522024-10-03 5:48:39482 days ago1727934519IN
Thruster: Merkl Gauge Factory
0 ETH0.000000730.00372472
Create95623472024-10-03 5:48:29482 days ago1727934509IN
Thruster: Merkl Gauge Factory
0 ETH0.000000710.00363708
Create95623432024-10-03 5:48:21482 days ago1727934501IN
Thruster: Merkl Gauge Factory
0 ETH0.000000710.00363578
Create95623392024-10-03 5:48:13482 days ago1727934493IN
Thruster: Merkl Gauge Factory
0 ETH0.000000720.00365164
Create95623352024-10-03 5:48:05482 days ago1727934485IN
Thruster: Merkl Gauge Factory
0 ETH0.000000720.0036724
Create95623312024-10-03 5:47:57482 days ago1727934477IN
Thruster: Merkl Gauge Factory
0 ETH0.000000730.00368893
Create95623282024-10-03 5:47:51482 days ago1727934471IN
Thruster: Merkl Gauge Factory
0 ETH0.000000720.003682
Create95623242024-10-03 5:47:43482 days ago1727934463IN
Thruster: Merkl Gauge Factory
0 ETH0.000000720.00363753
Create95623202024-10-03 5:47:35482 days ago1727934455IN
Thruster: Merkl Gauge Factory
0 ETH0.000000720.00364765
Create95623152024-10-03 5:47:25482 days ago1727934445IN
Thruster: Merkl Gauge Factory
0 ETH0.000000710.0036073
Create95623112024-10-03 5:47:17482 days ago1727934437IN
Thruster: Merkl Gauge Factory
0 ETH0.000000710.00362605
Create95623072024-10-03 5:47:09482 days ago1727934429IN
Thruster: Merkl Gauge Factory
0 ETH0.000000720.00365209
Create95623032024-10-03 5:47:01482 days ago1727934421IN
Thruster: Merkl Gauge Factory
0 ETH0.000000710.00363493
Create95622992024-10-03 5:46:53482 days ago1727934413IN
Thruster: Merkl Gauge Factory
0 ETH0.000000720.00364075
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
122458122024-12-04 8:37:19419 days ago1733301439
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
109512862024-11-04 9:26:27449 days ago1730712387
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
109512832024-11-04 9:26:21449 days ago1730712381
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
109512792024-11-04 9:26:13449 days ago1730712373
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
109512772024-11-04 9:26:09449 days ago1730712369
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
106419262024-10-28 5:34:27457 days ago1730093667
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
100749202024-10-15 2:34:15470 days ago1728959655
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
98747122024-10-10 11:20:39474 days ago1728559239
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
98310932024-10-09 11:06:41475 days ago1728472001
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623612024-10-03 5:48:57482 days ago1727934537
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623572024-10-03 5:48:49482 days ago1727934529
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623522024-10-03 5:48:39482 days ago1727934519
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623472024-10-03 5:48:29482 days ago1727934509
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623432024-10-03 5:48:21482 days ago1727934501
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623392024-10-03 5:48:13482 days ago1727934493
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623352024-10-03 5:48:05482 days ago1727934485
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623312024-10-03 5:47:57482 days ago1727934477
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623282024-10-03 5:47:51482 days ago1727934471
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623242024-10-03 5:47:43482 days ago1727934463
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623202024-10-03 5:47:35482 days ago1727934455
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623152024-10-03 5:47:25482 days ago1727934445
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623112024-10-03 5:47:17482 days ago1727934437
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623072024-10-03 5:47:09482 days ago1727934429
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95623032024-10-03 5:47:01482 days ago1727934421
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
95622992024-10-03 5:46:53482 days ago1727934413
Thruster: Merkl Gauge Factory
 Contract Creation0 ETH
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MerklGaugeFactory

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

import { BaseGaugeFactory } from "./BaseGaugeFactory.sol";

interface IMerklGauge {
    function initialize(
        uint256,
        address,
        address
    ) external;
}

contract MerklGaugeFactory is BaseGaugeFactory {
    constructor(address gauge) BaseGaugeFactory(address(gauge)) {
        // solhint-disable-previous-line no-empty-blocks
    }

    /**
     * @notice Deploys a new merkl gauge.
     * @param relativeWeightCap The relative weight cap for the created gauge.
     * @param merklDistributionCreator The merkl distribution creator.
     * @param pool The uniV3Pool.
     * @return The address of the deployed gauge
     */
    function create(
        uint256 relativeWeightCap,
        address merklDistributionCreator,
        address pool
    ) external returns (address) {
        address gauge = _create();
        IMerklGauge(gauge).initialize(relativeWeightCap, merklDistributionCreator, pool);
        return gauge;
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Clones.sol)

pragma solidity ^0.8.20;

/**
 * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for
 * deploying minimal proxy contracts, also known as "clones".
 *
 * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies
 * > a minimal bytecode implementation that delegates all calls to a known, fixed address.
 *
 * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`
 * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the
 * deterministic method.
 */
library Clones {
    /**
     * @dev A clone instance deployment failed.
     */
    error ERC1167FailedCreateClone();

    /**
     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
     *
     * This function uses the create opcode, which should never revert.
     */
    function clone(address implementation) internal returns (address instance) {
        /// @solidity memory-safe-assembly
        assembly {
            // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes
            // of the `implementation` address with the bytecode before the address.
            mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))
            // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.
            mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))
            instance := create(0, 0x09, 0x37)
        }
        if (instance == address(0)) {
            revert ERC1167FailedCreateClone();
        }
    }

    /**
     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
     *
     * This function uses the create2 opcode and a `salt` to deterministically deploy
     * the clone. Using the same `implementation` and `salt` multiple time will revert, since
     * the clones cannot be deployed twice at the same address.
     */
    function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {
        /// @solidity memory-safe-assembly
        assembly {
            // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes
            // of the `implementation` address with the bytecode before the address.
            mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))
            // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.
            mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))
            instance := create2(0, 0x09, 0x37, salt)
        }
        if (instance == address(0)) {
            revert ERC1167FailedCreateClone();
        }
    }

    /**
     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
     */
    function predictDeterministicAddress(
        address implementation,
        bytes32 salt,
        address deployer
    ) internal pure returns (address predicted) {
        /// @solidity memory-safe-assembly
        assembly {
            let ptr := mload(0x40)
            mstore(add(ptr, 0x38), deployer)
            mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)
            mstore(add(ptr, 0x14), implementation)
            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)
            mstore(add(ptr, 0x58), salt)
            mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))
            predicted := keccak256(add(ptr, 0x43), 0x55)
        }
    }

    /**
     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
     */
    function predictDeterministicAddress(
        address implementation,
        bytes32 salt
    ) internal view returns (address predicted) {
        return predictDeterministicAddress(implementation, salt, address(this));
    }
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

import { Clones } from "@openzeppelin/contracts/proxy/Clones.sol";

abstract contract BaseGaugeFactory {
    address private _gaugeImplementation;

    mapping(address => bool) private _isGaugeFromFactory;

    event GaugeCreated(address indexed gauge);

    constructor(address gaugeImplementation) {
        _gaugeImplementation = gaugeImplementation;
    }

    /**
     * @notice Returns the address of the implementation used for gauge deployments.
     */
    function getGaugeImplementation() public view returns (address) {
        return _gaugeImplementation;
    }

    /**
     * @notice Returns true if `gauge` was created by this factory.
     */
    function isGaugeFromFactory(address gauge) external view returns (bool) {
        return _isGaugeFromFactory[gauge];
    }

    /**
     * @dev Deploys a new gauge as a proxy of the implementation in storage.
     * The deployed gauge must be initialized by the caller method.
     * @return The address of the deployed gauge
     */
    function _create() internal returns (address) {
        address gauge = Clones.clone(_gaugeImplementation);

        _isGaugeFromFactory[gauge] = true;
        emit GaugeCreated(gauge);

        return gauge;
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ERC1167FailedCreateClone","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gauge","type":"address"}],"name":"GaugeCreated","type":"event"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"},{"internalType":"address","name":"merklDistributionCreator","type":"address"},{"internalType":"address","name":"pool","type":"address"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGaugeImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"isGaugeFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051610658380380610658833981810160405281019061003291906100dd565b80806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505061010a565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100aa8261007f565b9050919050565b6100ba8161009f565b81146100c557600080fd5b50565b6000815190506100d7816100b1565b92915050565b6000602082840312156100f3576100f261007a565b5b6000610101848285016100c8565b91505092915050565b61053f806101196000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806339312dee14610046578063ce3cc8bd14610064578063d4ad267314610094575b600080fd5b61004e6100c4565b60405161005b919061038b565b60405180910390f35b61007e600480360381019061007991906103d7565b6100ed565b60405161008b919061041f565b60405180910390f35b6100ae60048036038101906100a99190610470565b610143565b6040516100bb919061038b565b60405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008061014e6101ca565b90508073ffffffffffffffffffffffffffffffffffffffff1663b4988fd08686866040518463ffffffff1660e01b815260040161018d939291906104d2565b600060405180830381600087803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b50505050809150509392505050565b6000806101f660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610299565b905060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c060405160405180910390a28091505090565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f09050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610345576040517fc2f868f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103758261034a565b9050919050565b6103858161036a565b82525050565b60006020820190506103a0600083018461037c565b92915050565b600080fd5b6103b48161036a565b81146103bf57600080fd5b50565b6000813590506103d1816103ab565b92915050565b6000602082840312156103ed576103ec6103a6565b5b60006103fb848285016103c2565b91505092915050565b60008115159050919050565b61041981610404565b82525050565b60006020820190506104346000830184610410565b92915050565b6000819050919050565b61044d8161043a565b811461045857600080fd5b50565b60008135905061046a81610444565b92915050565b600080600060608486031215610489576104886103a6565b5b60006104978682870161045b565b93505060206104a8868287016103c2565b92505060406104b9868287016103c2565b9150509250925092565b6104cc8161043a565b82525050565b60006060820190506104e760008301866104c3565b6104f4602083018561037c565b610501604083018461037c565b94935050505056fea2646970667358221220634b0ebc8af20b9649037904ca15da9a6eda8b596035f79dc20790f3d2c2383a64736f6c634300081700330000000000000000000000009ef366fb5a1589a1f4f2346cf630424985a54981

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100415760003560e01c806339312dee14610046578063ce3cc8bd14610064578063d4ad267314610094575b600080fd5b61004e6100c4565b60405161005b919061038b565b60405180910390f35b61007e600480360381019061007991906103d7565b6100ed565b60405161008b919061041f565b60405180910390f35b6100ae60048036038101906100a99190610470565b610143565b6040516100bb919061038b565b60405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008061014e6101ca565b90508073ffffffffffffffffffffffffffffffffffffffff1663b4988fd08686866040518463ffffffff1660e01b815260040161018d939291906104d2565b600060405180830381600087803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b50505050809150509392505050565b6000806101f660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610299565b905060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167faa98436d09d130af48de49867af8b723bbbebb0d737638b5fe8f1bf31bbb71c060405160405180910390a28091505090565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f09050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610345576040517fc2f868f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103758261034a565b9050919050565b6103858161036a565b82525050565b60006020820190506103a0600083018461037c565b92915050565b600080fd5b6103b48161036a565b81146103bf57600080fd5b50565b6000813590506103d1816103ab565b92915050565b6000602082840312156103ed576103ec6103a6565b5b60006103fb848285016103c2565b91505092915050565b60008115159050919050565b61041981610404565b82525050565b60006020820190506104346000830184610410565b92915050565b6000819050919050565b61044d8161043a565b811461045857600080fd5b50565b60008135905061046a81610444565b92915050565b600080600060608486031215610489576104886103a6565b5b60006104978682870161045b565b93505060206104a8868287016103c2565b92505060406104b9868287016103c2565b9150509250925092565b6104cc8161043a565b82525050565b60006060820190506104e760008301866104c3565b6104f4602083018561037c565b610501604083018461037c565b94935050505056fea2646970667358221220634b0ebc8af20b9649037904ca15da9a6eda8b596035f79dc20790f3d2c2383a64736f6c63430008170033

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

0000000000000000000000009ef366fb5a1589a1f4f2346cf630424985a54981

-----Decoded View---------------
Arg [0] : gauge (address): 0x9Ef366fb5a1589a1F4f2346Cf630424985A54981

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009ef366fb5a1589a1f4f2346cf630424985a54981


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.