ETH Price: $1,972.76 (+0.54%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deploy239938082025-12-12 3:11:3572 days ago1765509095IN
Euler: Kinky IRM Factory
0 ETH0.000044470.10916838
Deploy239936252025-12-12 2:34:2372 days ago1765506863IN
Euler: Kinky IRM Factory
0 ETH0.000044360.10889605
Deploy236765202025-10-28 14:29:23116 days ago1761661763IN
Euler: Kinky IRM Factory
0 ETH0.000239060.58684208
Deploy236209182025-10-20 19:33:35124 days ago1760988815IN
Euler: Kinky IRM Factory
0 ETH0.000049930.11764017

Latest 4 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
0x61014060239938082025-12-12 3:11:3572 days ago1765509095
Euler: Kinky IRM Factory
 Contract Creation0 ETH
0x61014060239936252025-12-12 2:34:2372 days ago1765506863
Euler: Kinky IRM Factory
 Contract Creation0 ETH
0x61014060236765202025-10-28 14:29:23116 days ago1761661763
Euler: Kinky IRM Factory
 Contract Creation0 ETH
0x61014060236209182025-10-20 19:33:35124 days ago1760988815
Euler: Kinky IRM Factory
 Contract Creation0 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EulerKinkyIRMFactory

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 20000 runs

Other Settings:
cancun EvmVersion
// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity ^0.8.0;

import {BaseFactory} from "../BaseFactory/BaseFactory.sol";
import {IRMLinearKinky} from "../IRM/IRMLinearKinky.sol";
import {IEulerKinkyIRMFactory} from "./interfaces/IEulerKinkyIRMFactory.sol";

/// @title EulerKinkyIRMFactory
/// @custom:security-contact security@euler.xyz
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice A minimal factory for Kinky IRMs.
contract EulerKinkyIRMFactory is BaseFactory, IEulerKinkyIRMFactory {
    // corresponds to 1000% APY
    uint256 internal constant MAX_ALLOWED_INTEREST_RATE = 75986279153383989049;

    /// @notice Error thrown when the computed interest rate exceeds the maximum allowed limit.
    error IRMFactory_ExcessiveInterestRate();

    /// @notice Deploys a new IRMLinearKink.
    /// @param baseRate Base interest rate applied when utilization is equal zero
    /// @param slope Slope of the function before the kink
    /// @param shape Shape parameter for the non-linear part of the curve. Typically between 0 and 100.
    /// @param kink Utilization at which the slope of the interest rate function changes. In type(uint32).max scale
    /// @param cutoff Interest rate in second percent yield (SPY) at which the interest rate function is capped
    /// @return The deployment address.
    function deploy(uint256 baseRate, uint256 slope, uint256 shape, uint32 kink, uint256 cutoff)
        external
        override
        returns (address)
    {
        IRMLinearKinky irm = new IRMLinearKinky(baseRate, slope, shape, kink, cutoff);

        // verify if the IRM is functional
        irm.computeInterestRateView(address(0), type(uint32).max, 0);
        irm.computeInterestRateView(address(0), type(uint32).max - kink, kink);
        uint256 maxInterestRate = irm.computeInterestRateView(address(0), 0, type(uint32).max);

        if (maxInterestRate > MAX_ALLOWED_INTEREST_RATE) revert IRMFactory_ExcessiveInterestRate();

        deploymentInfo[address(irm)] = DeploymentInfo(msg.sender, uint96(block.timestamp));
        deployments.push(address(irm));
        emit ContractDeployed(address(irm), msg.sender, block.timestamp);
        return address(irm);
    }
}

// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity ^0.8.0;

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

/// @title BaseFactory
/// @custom:security-contact security@euler.xyz
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice A minimal factory for deploying various contracts.
abstract contract BaseFactory is IFactory {
    /// @notice Contracts deployed by the factory.
    mapping(address => DeploymentInfo) internal deploymentInfo;

    /// @notice An array of addresses of all the contracts deployed by the factory
    address[] public deployments;

    /// @inheritdoc IFactory
    function getDeploymentInfo(address contractAddress) external view returns (address deployer, uint96 deployedAt) {
        DeploymentInfo memory info = deploymentInfo[contractAddress];
        return (info.deployer, info.deployedAt);
    }

    /// @inheritdoc IFactory
    function isValidDeployment(address contractAddress) external view returns (bool) {
        return deploymentInfo[contractAddress].deployedAt != 0;
    }

    /// @inheritdoc IFactory
    function getDeploymentsListLength() external view returns (uint256) {
        return deployments.length;
    }

    /// @inheritdoc IFactory
    function getDeploymentsListSlice(uint256 start, uint256 end) external view returns (address[] memory list) {
        if (end == type(uint256).max) end = deployments.length;
        if (end < start || end > deployments.length) revert Factory_BadQuery();

        list = new address[](end - start);
        for (uint256 i; i < end - start; ++i) {
            list[i] = deployments[start + i];
        }
    }
}

// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity ^0.8.0;

import {IIRM} from "evk/InterestRateModels/IIRM.sol";

/// @title IRMLinearKinky
/// @custom:security-contact security@euler.xyz
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice Implementation of an interest rate model, where interest rate grows linearly with utilization, and spikes
/// non-linearly after reaching kink
contract IRMLinearKinky is IIRM {
    /// @notice Base interest rate applied when utilization is equal zero
    uint256 public immutable baseRate;
    /// @notice Slope of the function before the kink
    uint256 public immutable slope;
    /// @notice Shape parameter for the non-linear part of the curve. Typically between 0 and 100.
    uint256 public immutable shape;
    /// @notice Utilization at which the slope of the interest rate function changes. In type(uint32).max scale.
    uint256 public immutable kink;
    /// @notice Interest rate in second percent yield (SPY) at which the interest rate function is capped
    uint256 public immutable cutoff;

    /// @notice Remaining kink helper constant.
    uint256 internal immutable kinkRemaining;

    /// @notice Creates a new linear kinky interest rate model
    /// @param baseRate_ Base interest rate applied when utilization is equal zero
    /// @param slope_ Slope of the function before the kink
    /// @param shape_ Shape parameter for the non-linear part of the curve. Typically between 0 and 100
    /// @param kink_ Utilization at which the slope of the interest rate function changes. In type(uint32).max scale
    /// @param cutoff_ Interest rate in second percent yield (SPY) at which the interest rate function is capped
    constructor(uint256 baseRate_, uint256 slope_, uint256 shape_, uint32 kink_, uint256 cutoff_) {
        baseRate = baseRate_;
        slope = slope_;
        shape = shape_;
        kink = kink_;
        cutoff = cutoff_;
        kinkRemaining = type(uint32).max - kink;
    }

    /// @inheritdoc IIRM
    function computeInterestRate(address vault, uint256 cash, uint256 borrows)
        external
        view
        override
        returns (uint256)
    {
        if (msg.sender != vault) revert E_IRMUpdateUnauthorized();

        return computeInterestRateInternal(vault, cash, borrows);
    }

    /// @inheritdoc IIRM
    function computeInterestRateView(address vault, uint256 cash, uint256 borrows)
        external
        view
        override
        returns (uint256)
    {
        return computeInterestRateInternal(vault, cash, borrows);
    }

    function computeInterestRateInternal(address, uint256 cash, uint256 borrows) internal view returns (uint256) {
        uint256 totalAssets = cash + borrows;

        uint32 utilization = totalAssets == 0
            ? 0 // empty pool arbitrarily given utilization of 0
            : uint32(borrows * type(uint32).max / totalAssets);

        uint256 ir = baseRate;

        if (utilization <= kink) {
            ir += utilization * slope;
        } else {
            ir += kink * slope;

            uint256 utilizationOverKink;
            uint256 utilizationRemaining;
            unchecked {
                utilizationOverKink = utilization - kink;
                utilizationRemaining = type(uint32).max - utilization;
            }

            if (utilizationRemaining == 0) return cutoff;

            uint256 slopeUtilizationOverKink = slope * utilizationOverKink;

            ir += slopeUtilizationOverKink * kinkRemaining * (1 + shape) / utilizationRemaining
                - slopeUtilizationOverKink * shape;
        }

        return ir > cutoff ? cutoff : ir;
    }
}

// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity >=0.8.0;

import {IFactory} from "../../BaseFactory/interfaces/IFactory.sol";

/// @title IEulerKinkyIRMFactory
/// @custom:security-contact security@euler.xyz
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice A minimal factory for EulerKinkyIRM.
interface IEulerKinkyIRMFactory is IFactory {
    /// @notice Deploys a new EulerKinkyIRM.
    /// @param baseRate The base rate of the IRM.
    /// @param slope Slope of the function before the kink.
    /// @param shape Shape parameter for the non-linear part of the curve. Typically between 0 and 100.
    /// @param kink Utilization at which the slope of the interest rate function changes. In type(uint32).max scale.
    /// @param cutoff Interest rate in second percent yield (SPY) at which the interest rate function is capped
    /// @return The deployment address.
    function deploy(uint256 baseRate, uint256 slope, uint256 shape, uint32 kink, uint256 cutoff)
        external
        returns (address);
}

// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity >=0.8.0;

/// @title IFactory
/// @custom:security-contact security@euler.xyz
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice A minimal factory interface for deploying contracts.
interface IFactory {
    struct DeploymentInfo {
        /// @notice The sender of the deployment call.
        address deployer;
        /// @notice The timestamp when the contract was deployed.
        uint96 deployedAt;
    }

    /// @notice An instance of a contract was deployed.
    /// @param deployedContract The deployment address of the contract.
    /// @param deployer The sender of the deployment call.
    /// @param deployedAt The deployment timestamp of the contract.
    event ContractDeployed(address indexed deployedContract, address indexed deployer, uint256 deployedAt);

    /// @notice Error thrown when the query is incorrect.
    error Factory_BadQuery();

    /// @notice Contracts deployed by the factory.
    function getDeploymentInfo(address contractAddress) external view returns (address deployer, uint96 deployedAt);

    /// @notice Checks if the deployment at the given address is valid.
    /// @param contractAddress The address of the contract to check.
    /// @return True if the deployment is valid, false otherwise.
    function isValidDeployment(address contractAddress) external view returns (bool);

    /// @notice Returns the number of contracts deployed by the factory.
    /// @return The number of deployed contracts.
    function getDeploymentsListLength() external view returns (uint256);

    /// @notice Returns a slice of the list of deployments.
    /// @param start The starting index of the slice.
    /// @param end The ending index of the slice (exclusive).
    /// @return list An array of addresses of the deployed contracts in the specified range.
    function getDeploymentsListSlice(uint256 start, uint256 end) external view returns (address[] memory list);
}

// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity >=0.8.0;

/// @title IIRM
/// @custom:security-contact security@euler.xyz
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice Interface of the interest rate model contracts used by EVault
interface IIRM {
    error E_IRMUpdateUnauthorized();

    /// @notice Perform potentially state mutating computation of the new interest rate
    /// @param vault Address of the vault to compute the new interest rate for
    /// @param cash Amount of assets held directly by the vault
    /// @param borrows Amount of assets lent out to borrowers by the vault
    /// @return Then new interest rate in second percent yield (SPY), scaled by 1e27
    function computeInterestRate(address vault, uint256 cash, uint256 borrows) external returns (uint256);

    /// @notice Perform computation of the new interest rate without mutating state
    /// @param vault Address of the vault to compute the new interest rate for
    /// @param cash Amount of assets held directly by the vault
    /// @param borrows Amount of assets lent out to borrowers by the vault
    /// @return Then new interest rate in second percent yield (SPY), scaled by 1e27
    function computeInterestRateView(address vault, uint256 cash, uint256 borrows) external view returns (uint256);
}

Settings
{
  "remappings": [
    "lib/euler-price-oracle:@openzeppelin/contracts/=lib/euler-price-oracle/lib/openzeppelin-contracts/contracts/",
    "lib/euler-earn:@openzeppelin/=lib/euler-earn/lib/openzeppelin-contracts/",
    "lib/euler-earn:@openzeppelin-upgradeable/=lib/euler-earn/lib/openzeppelin-contracts-upgradeable/contracts/",
    "lib/euler-earn:ethereum-vault-connector/=lib/euler-earn/lib/ethereum-vault-connector/src/",
    "lib/layerzero-devtools/packages/oft-evm/contracts:@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts/contracts/",
    "lib/layerzero-devtools/packages/oft-evm-upgradeable/contracts:@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "lib/layerzero-devtools/packages/oapp-evm-upgradeable/contracts:@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@layerzerolabs/oft-evm/=lib/layerzero-devtools/packages/oft-evm/",
    "@layerzerolabs/oapp-evm/=lib/layerzero-devtools/packages/oapp-evm/",
    "@layerzerolabs/oapp-evm-upgradeable/=lib/layerzero-devtools/packages/oapp-evm-upgradeable/",
    "@layerzerolabs/lz-evm-protocol-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/protocol/",
    "@layerzerolabs/lz-evm-messagelib-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/messagelib/",
    "@layerzerolabs/lz-evm-oapp-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/oapp/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "lib/fee-flow/src:solmate/=lib/fee-flow/lib/solmate/src/",
    "lib/fee-flow/utils:solmate/=lib/fee-flow/lib/solmate/utils/",
    "lib/fee-flow/tokens:solmate/=lib/fee-flow/lib/solmate/tokens/",
    "lib/euler-swap:solmate/=lib/euler-swap/lib/euler-vault-kit/lib/permit2/lib/solmate/",
    "ethereum-vault-connector/=lib/ethereum-vault-connector/src/",
    "evc/=lib/ethereum-vault-connector/src/",
    "evk/=lib/euler-vault-kit/src/",
    "evk-test/=lib/euler-vault-kit/test/",
    "euler-price-oracle/=lib/euler-price-oracle/src/",
    "euler-price-oracle-test/=lib/euler-price-oracle/test/",
    "fee-flow/=lib/fee-flow/src/",
    "reward-streams/=lib/reward-streams/src/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "euler-earn/=lib/euler-earn/src/",
    "layerzero/oft-evm/=lib/layerzero-devtools/packages/oft-evm/contracts/",
    "layerzero/oft-evm-upgradeable/=lib/layerzero-devtools/packages/oft-evm-upgradeable/contracts/",
    "solidity-bytes-utils/=lib/solidity-bytes-utils/",
    "@ensdomains/=lib/euler-swap/lib/v4-periphery/lib/v4-core/node_modules/@ensdomains/",
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@pendle/core-v2/=lib/euler-price-oracle/lib/pendle-core-v2-public/contracts/",
    "@pyth/=lib/euler-price-oracle/lib/pyth-sdk-solidity/",
    "@redstone/evm-connector/=lib/euler-price-oracle/lib/redstone-oracles-monorepo/packages/evm-connector/contracts/",
    "@solady/=lib/euler-price-oracle/lib/solady/src/",
    "@uniswap/v3-core/=lib/euler-price-oracle/lib/v3-core/",
    "@uniswap/v3-periphery/=lib/euler-price-oracle/lib/v3-periphery/",
    "@uniswap/v4-core/=lib/euler-swap/lib/v4-periphery/lib/v4-core/",
    "ds-test/=lib/ethereum-vault-connector/lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
    "euler-swap/=lib/euler-swap/",
    "euler-vault-kit/=lib/euler-vault-kit/",
    "forge-gas-snapshot/=lib/euler-vault-kit/lib/permit2/lib/forge-gas-snapshot/src/",
    "forge-std/=lib/forge-std/src/",
    "halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
    "hardhat/=lib/euler-swap/lib/v4-periphery/lib/v4-core/node_modules/hardhat/",
    "layerzero-devtools/=lib/layerzero-devtools/packages/toolbox-foundry/src/",
    "layerzero-v2/=lib/layerzero-v2/",
    "openzeppelin/=lib/ethereum-vault-connector/lib/openzeppelin-contracts/contracts/",
    "pendle-core-v2-public/=lib/euler-price-oracle/lib/pendle-core-v2-public/contracts/",
    "permit2/=lib/euler-vault-kit/lib/permit2/",
    "pyth-sdk-solidity/=lib/euler-price-oracle/lib/pyth-sdk-solidity/",
    "redstone-oracles-monorepo/=lib/euler-price-oracle/lib/",
    "solady/=lib/euler-price-oracle/lib/solady/src/",
    "solmate/=lib/fee-flow/lib/solmate/src/",
    "v3-core/=lib/euler-price-oracle/lib/v3-core/contracts/",
    "v3-periphery/=lib/euler-price-oracle/lib/v3-periphery/contracts/",
    "v4-core/=lib/euler-swap/lib/v4-periphery/lib/v4-core/src/",
    "v4-periphery/=lib/euler-swap/lib/v4-periphery/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 20000
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": false
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"name":"Factory_BadQuery","type":"error"},{"inputs":[],"name":"IRMFactory_ExcessiveInterestRate","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployedContract","type":"address"},{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":false,"internalType":"uint256","name":"deployedAt","type":"uint256"}],"name":"ContractDeployed","type":"event"},{"inputs":[{"internalType":"uint256","name":"baseRate","type":"uint256"},{"internalType":"uint256","name":"slope","type":"uint256"},{"internalType":"uint256","name":"shape","type":"uint256"},{"internalType":"uint32","name":"kink","type":"uint32"},{"internalType":"uint256","name":"cutoff","type":"uint256"}],"name":"deploy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"deployments","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"getDeploymentInfo","outputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint96","name":"deployedAt","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDeploymentsListLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getDeploymentsListSlice","outputs":[{"internalType":"address[]","name":"list","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"isValidDeployment","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

608060405234801561000f575f80fd5b506110d28061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061006f575f3560e01c80636ee0787a1161004d5780636ee0787a1461016e578063df4d6510146101db578063e536913d146101ee575f80fd5b806306609bbe146100735780633fc756f8146100b05780636aebd5831461015d575b5f80fd5b610086610081366004610761565b61020e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101246100be366004610778565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526020818152604091829020825180840190935254928316808352740100000000000000000000000000000000000000009093046bffffffffffffffffffffffff1691018190529091565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152016100a7565b6001546040519081526020016100a7565b6101cb61017c366004610778565b73ffffffffffffffffffffffffffffffffffffffff165f908152602081905260409020547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16151590565b60405190151581526020016100a7565b6100866101e93660046107b2565b610243565b6102016101fc3660046107ff565b6105f4565b6040516100a7919061081f565b6001818154811061021d575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f80868686868660405161025690610754565b9485526020850193909352604084019190915263ffffffff166060830152608082015260a001604051809103905ff080158015610295573d5f803e3d5ffd5b506040517f2e34c8720000000000000000000000000000000000000000000000000000000081525f6004820181905263ffffffff6024830152604482015290915073ffffffffffffffffffffffffffffffffffffffff821690632e34c87290606401602060405180830381865afa158015610312573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103369190610878565b5073ffffffffffffffffffffffffffffffffffffffff8116632e34c8725f6103628763ffffffff6108bc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015263ffffffff908116602483015287166044820152606401602060405180830381865afa1580156103dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104019190610878565b506040517f2e34c8720000000000000000000000000000000000000000000000000000000081525f600482018190526024820181905263ffffffff60448301529073ffffffffffffffffffffffffffffffffffffffff831690632e34c87290606401602060405180830381865afa15801561047e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a29190610878565b905068041e857e4c251f5f398111156104e7576040517fe2f8a31a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252338082526bffffffffffffffffffffffff42818116602080860191825273ffffffffffffffffffffffffffffffffffffffff8981165f8181529283905288832097519351909516740100000000000000000000000000000000000000000292169190911790945560018054808201825594527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168217905592519092917fac4ce915ef22753b636e57aac5ae5fdd9d13d782ae5bf6dbcda15e29f95386c1916105e191815260200190565b60405180910390a3509695505050505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106235760015491505b82821080610632575060015482115b15610669576040517f4e32a13200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067383836108d9565b67ffffffffffffffff81111561068b5761068b6108f2565b6040519080825280602002602001820160405280156106b4578160200160208202803683370190505b5090505f5b6106c384846108d9565b81101561074d5760016106d6828661091f565b815481106106e6576106e6610932565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811061072057610720610932565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016106b9565b5092915050565b61073d8061096083390190565b5f60208284031215610771575f80fd5b5035919050565b5f60208284031215610788575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146107ab575f80fd5b9392505050565b5f805f805f60a086880312156107c6575f80fd5b853594506020860135935060408601359250606086013563ffffffff811681146107ee575f80fd5b949793965091946080013592915050565b5f8060408385031215610810575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b8181101561086c57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161083a565b50909695505050505050565b5f60208284031215610888575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b63ffffffff82811682821603908082111561074d5761074d61088f565b818103818111156108ec576108ec61088f565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b808201808211156108ec576108ec61088f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfe610140604052348015610010575f80fd5b5060405161073d38038061073d83398101604081905261002f91610069565b608085905260a084905260c083905263ffffffff80831660e081905261010083905261005a916100ba565b61012052506100df9350505050565b5f805f805f60a0868803121561007d575f80fd5b855194506020860151935060408601519250606086015163ffffffff811681146100a5575f80fd5b80925050608086015190509295509295909350565b818103818111156100d957634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c05160e05161010051610120516105c66101775f395f6103f101525f818160f60152818161033e01528181610446015261047301525f818161015701528181610240015281816102d2015261030401525f818160830152818161039b01526103c601525f818161011d01528181610270015281816102b1015261037001525f818160bc015261021f01526105c65ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c806354b02ba41161005857806354b02ba4146100f157806383caf27514610118578063bca02c131461013f578063fd2da33914610152575f80fd5b80630f7514a21461007e5780631f68f20a146100b75780632e34c872146100de575b5f80fd5b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200160405180910390f35b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6100a56100ec36600461049e565b610179565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6100a561014d36600461049e565b61018f565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b5f6101858484846101e6565b90505b9392505050565b5f3373ffffffffffffffffffffffffffffffffffffffff8516146101df576040517f35a4399400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101858484845b5f806101f28385610515565b90505f8115610219578161020a63ffffffff8661052e565b6102149190610545565b61021b565b5f5b90507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000063ffffffff8316116102ac5761029b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff841661052e565b6102a59082610515565b9050610444565b6102f67f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061052e565b6103009082610515565b90507f000000000000000000000000000000000000000000000000000000000000000063ffffffff8084169190910390838103165f819003610369577f000000000000000000000000000000000000000000000000000000000000000095505050505050610188565b5f610394837f000000000000000000000000000000000000000000000000000000000000000061052e565b90506103c07f00000000000000000000000000000000000000000000000000000000000000008261052e565b826103ec7f00000000000000000000000000000000000000000000000000000000000000006001610515565b6104167f00000000000000000000000000000000000000000000000000000000000000008561052e565b610420919061052e565b61042a9190610545565b610434919061057d565b61043e9085610515565b93505050505b7f000000000000000000000000000000000000000000000000000000000000000081116104715780610493565b7f00000000000000000000000000000000000000000000000000000000000000005b979650505050505050565b5f805f606084860312156104b0575f80fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146104d3575f80fd5b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610528576105286104e8565b92915050565b8082028115828204841417610528576105286104e8565b5f82610578577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b81810381811115610528576105286104e856fea264697066735822122028b42e34230fe1b6f6e45c678d26a6e31392bfe8333d7549b6751a9eaa718b3b64736f6c63430008180033a264697066735822122065439157846b5de0e6b4e53e880c0293b4d29c430adac3ffb24c609a543d1d0c64736f6c63430008180033

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061006f575f3560e01c80636ee0787a1161004d5780636ee0787a1461016e578063df4d6510146101db578063e536913d146101ee575f80fd5b806306609bbe146100735780633fc756f8146100b05780636aebd5831461015d575b5f80fd5b610086610081366004610761565b61020e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101246100be366004610778565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526020818152604091829020825180840190935254928316808352740100000000000000000000000000000000000000009093046bffffffffffffffffffffffff1691018190529091565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152016100a7565b6001546040519081526020016100a7565b6101cb61017c366004610778565b73ffffffffffffffffffffffffffffffffffffffff165f908152602081905260409020547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16151590565b60405190151581526020016100a7565b6100866101e93660046107b2565b610243565b6102016101fc3660046107ff565b6105f4565b6040516100a7919061081f565b6001818154811061021d575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f80868686868660405161025690610754565b9485526020850193909352604084019190915263ffffffff166060830152608082015260a001604051809103905ff080158015610295573d5f803e3d5ffd5b506040517f2e34c8720000000000000000000000000000000000000000000000000000000081525f6004820181905263ffffffff6024830152604482015290915073ffffffffffffffffffffffffffffffffffffffff821690632e34c87290606401602060405180830381865afa158015610312573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103369190610878565b5073ffffffffffffffffffffffffffffffffffffffff8116632e34c8725f6103628763ffffffff6108bc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015263ffffffff908116602483015287166044820152606401602060405180830381865afa1580156103dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104019190610878565b506040517f2e34c8720000000000000000000000000000000000000000000000000000000081525f600482018190526024820181905263ffffffff60448301529073ffffffffffffffffffffffffffffffffffffffff831690632e34c87290606401602060405180830381865afa15801561047e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a29190610878565b905068041e857e4c251f5f398111156104e7576040517fe2f8a31a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252338082526bffffffffffffffffffffffff42818116602080860191825273ffffffffffffffffffffffffffffffffffffffff8981165f8181529283905288832097519351909516740100000000000000000000000000000000000000000292169190911790945560018054808201825594527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168217905592519092917fac4ce915ef22753b636e57aac5ae5fdd9d13d782ae5bf6dbcda15e29f95386c1916105e191815260200190565b60405180910390a3509695505050505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106235760015491505b82821080610632575060015482115b15610669576040517f4e32a13200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067383836108d9565b67ffffffffffffffff81111561068b5761068b6108f2565b6040519080825280602002602001820160405280156106b4578160200160208202803683370190505b5090505f5b6106c384846108d9565b81101561074d5760016106d6828661091f565b815481106106e6576106e6610932565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811061072057610720610932565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016106b9565b5092915050565b61073d8061096083390190565b5f60208284031215610771575f80fd5b5035919050565b5f60208284031215610788575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146107ab575f80fd5b9392505050565b5f805f805f60a086880312156107c6575f80fd5b853594506020860135935060408601359250606086013563ffffffff811681146107ee575f80fd5b949793965091946080013592915050565b5f8060408385031215610810575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b8181101561086c57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161083a565b50909695505050505050565b5f60208284031215610888575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b63ffffffff82811682821603908082111561074d5761074d61088f565b818103818111156108ec576108ec61088f565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b808201808211156108ec576108ec61088f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfe610140604052348015610010575f80fd5b5060405161073d38038061073d83398101604081905261002f91610069565b608085905260a084905260c083905263ffffffff80831660e081905261010083905261005a916100ba565b61012052506100df9350505050565b5f805f805f60a0868803121561007d575f80fd5b855194506020860151935060408601519250606086015163ffffffff811681146100a5575f80fd5b80925050608086015190509295509295909350565b818103818111156100d957634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c05160e05161010051610120516105c66101775f395f6103f101525f818160f60152818161033e01528181610446015261047301525f818161015701528181610240015281816102d2015261030401525f818160830152818161039b01526103c601525f818161011d01528181610270015281816102b1015261037001525f818160bc015261021f01526105c65ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c806354b02ba41161005857806354b02ba4146100f157806383caf27514610118578063bca02c131461013f578063fd2da33914610152575f80fd5b80630f7514a21461007e5780631f68f20a146100b75780632e34c872146100de575b5f80fd5b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200160405180910390f35b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6100a56100ec36600461049e565b610179565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6100a561014d36600461049e565b61018f565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b5f6101858484846101e6565b90505b9392505050565b5f3373ffffffffffffffffffffffffffffffffffffffff8516146101df576040517f35a4399400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101858484845b5f806101f28385610515565b90505f8115610219578161020a63ffffffff8661052e565b6102149190610545565b61021b565b5f5b90507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000063ffffffff8316116102ac5761029b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff841661052e565b6102a59082610515565b9050610444565b6102f67f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061052e565b6103009082610515565b90507f000000000000000000000000000000000000000000000000000000000000000063ffffffff8084169190910390838103165f819003610369577f000000000000000000000000000000000000000000000000000000000000000095505050505050610188565b5f610394837f000000000000000000000000000000000000000000000000000000000000000061052e565b90506103c07f00000000000000000000000000000000000000000000000000000000000000008261052e565b826103ec7f00000000000000000000000000000000000000000000000000000000000000006001610515565b6104167f00000000000000000000000000000000000000000000000000000000000000008561052e565b610420919061052e565b61042a9190610545565b610434919061057d565b61043e9085610515565b93505050505b7f000000000000000000000000000000000000000000000000000000000000000081116104715780610493565b7f00000000000000000000000000000000000000000000000000000000000000005b979650505050505050565b5f805f606084860312156104b0575f80fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146104d3575f80fd5b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610528576105286104e8565b92915050565b8082028115828204841417610528576105286104e8565b5f82610578577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b81810381811115610528576105286104e856fea264697066735822122028b42e34230fe1b6f6e45c678d26a6e31392bfe8333d7549b6751a9eaa718b3b64736f6c63430008180033a264697066735822122065439157846b5de0e6b4e53e880c0293b4d29c430adac3ffb24c609a543d1d0c64736f6c63430008180033

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