S Price: $0.468203 (+7.34%)

Contract

0x52E856790779fD4fCa34bA52C67Cd191338572C0

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deploy65228412025-02-04 10:42:366 days ago1738665756IN
0x52E85679...1338572C0
0 S0.0191403955.01
Deploy65225012025-02-04 10:38:046 days ago1738665484IN
0x52E85679...1338572C0
0 S0.020128155.01

Latest 2 internal transactions

Parent Transaction Hash Block From To
65228412025-02-04 10:42:366 days ago1738665756
0x52E85679...1338572C0
 Contract Creation0 S
65225012025-02-04 10:38:046 days ago1738665484
0x52E85679...1338572C0
 Contract Creation0 S
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EulerKinkIRMFactory

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 20000 runs

Other Settings:
cancun EvmVersion
File 1 of 5 : EulerKinkIRMFactory.sol
// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity ^0.8.0;

import {BaseFactory} from "../BaseFactory/BaseFactory.sol";
import {IRMLinearKink} from "evk/InterestRateModels/IRMLinearKink.sol";

/// @title EulerKinkIRMFactory
/// @custom:security-contact [email protected]
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice A minimal factory for Kink IRMs.
contract EulerKinkIRMFactory is BaseFactory {
    // 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 slope1 Slope of the function before the kink
    /// @param slope2 Slope of the function after the kink
    /// @param kink Utilization at which the slope of the interest rate function changes. In type(uint32).max scale
    /// @return The deployment address.
    function deploy(uint256 baseRate, uint256 slope1, uint256 slope2, uint32 kink) external returns (address) {
        IRMLinearKink irm = new IRMLinearKink(baseRate, slope1, slope2, kink);

        // 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);
    }
}

File 2 of 5 : BaseFactory.sol
// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity ^0.8.0;

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

/// @title BaseFactory
/// @custom:security-contact [email protected]
/// @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];
        }
    }
}

File 3 of 5 : IRMLinearKink.sol
// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity ^0.8.0;

import "./IIRM.sol";

/// @title IRMLinearKink
/// @custom:security-contact [email protected]
/// @author Euler Labs (https://www.eulerlabs.com/)
/// @notice Implementation of an interest rate model, where interest rate grows linearly with utilization, and spikes
/// after reaching kink
contract IRMLinearKink 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 slope1;
    /// @notice Slope of the function after the kink
    uint256 public immutable slope2;
    /// @notice Utilization at which the slope of the interest rate function changes. In type(uint32).max scale.
    uint256 public immutable kink;

    constructor(uint256 baseRate_, uint256 slope1_, uint256 slope2_, uint32 kink_) {
        baseRate = baseRate_;
        slope1 = slope1_;
        slope2 = slope2_;
        kink = 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 * slope1;
        } else {
            ir += kink * slope1;

            uint256 utilizationOverKink;
            unchecked {
                utilizationOverKink = utilization - kink;
            }
            ir += slope2 * utilizationOverKink;
        }

        return ir;
    }
}

File 4 of 5 : IFactory.sol
// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity >=0.8.0;

/// @title IFactory
/// @custom:security-contact [email protected]
/// @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);
}

File 5 of 5 : IIRM.sol
// SPDX-License-Identifier: GPL-2.0-or-later

pragma solidity >=0.8.0;

/// @title IIRM
/// @custom:security-contact [email protected]
/// @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/native-token-transfers/evm:openzeppelin-contracts/contracts/=lib/native-token-transfers/evm/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/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "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/=lib/openzeppelin-contracts/contracts/",
    "euler-earn/=lib/euler-earn/src/",
    "native-token-transfers/=lib/native-token-transfers/evm/src/",
    "@openzeppelin-upgradeable/=lib/euler-earn/lib/openzeppelin-contracts-upgradeable/contracts/",
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/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/",
    "ERC4626/=lib/euler-earn/lib/properties/lib/ERC4626/contracts/",
    "crytic-properties/=lib/euler-earn/lib/properties/contracts/",
    "ds-test/=lib/ethereum-vault-connector/lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
    "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/",
    "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/",
    "properties/=lib/euler-earn/lib/properties/contracts/",
    "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/",
    "solidity-bytes-utils/=lib/native-token-transfers/evm/lib/solidity-bytes-utils/contracts/",
    "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/",
    "wormhole-solidity-sdk/=lib/native-token-transfers/evm/lib/wormhole-solidity-sdk/src/"
  ],
  "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,
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"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":"slope1","type":"uint256"},{"internalType":"uint256","name":"slope2","type":"uint256"},{"internalType":"uint32","name":"kink","type":"uint32"}],"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"}]

608060405234801561000f575f80fd5b50610ec58061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061006f575f3560e01c80636aebd5831161004d5780636aebd583146101705780636ee0787a14610181578063e536913d146101ee575f80fd5b806306609bbe146100735780633fc756f8146100b057806342b7bf311461015d575b5f80fd5b610086610081366004610757565b61020e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101246100be36600461076e565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526020818152604091829020825180840190935254928316808352740100000000000000000000000000000000000000009093046bffffffffffffffffffffffff1691018190529091565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152016100a7565b61008661016b3660046107a8565b610243565b6001546040519081526020016100a7565b6101de61018f36600461076e565b73ffffffffffffffffffffffffffffffffffffffff165f908152602081905260409020547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16151590565b60405190151581526020016100a7565b6102016101fc3660046107ee565b6105ea565b6040516100a7919061080e565b6001818154811061021d575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f80858585856040516102559061074a565b9384526020840192909252604083015263ffffffff166060820152608001604051809103905ff08015801561028c573d5f803e3d5ffd5b506040517f2e34c8720000000000000000000000000000000000000000000000000000000081525f6004820181905263ffffffff6024830152604482015290915073ffffffffffffffffffffffffffffffffffffffff821690632e34c87290606401602060405180830381865afa158015610309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032d9190610867565b5073ffffffffffffffffffffffffffffffffffffffff8116632e34c8725f6103598663ffffffff6108ab565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015263ffffffff908116602483015286166044820152606401602060405180830381865afa1580156103d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f89190610867565b506040517f2e34c8720000000000000000000000000000000000000000000000000000000081525f600482018190526024820181905263ffffffff60448301529073ffffffffffffffffffffffffffffffffffffffff831690632e34c87290606401602060405180830381865afa158015610475573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104999190610867565b905068041e857e4c251f5f398111156104de576040517fe2f8a31a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252338082526bffffffffffffffffffffffff42818116602080860191825273ffffffffffffffffffffffffffffffffffffffff8981165f8181529283905288832097519351909516740100000000000000000000000000000000000000000292169190911790945560018054808201825594527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168217905592519092917fac4ce915ef22753b636e57aac5ae5fdd9d13d782ae5bf6dbcda15e29f95386c1916105d891815260200190565b60405180910390a35095945050505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106195760015491505b82821080610628575060015482115b1561065f576040517f4e32a13200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61066983836108c8565b67ffffffffffffffff811115610681576106816108e1565b6040519080825280602002602001820160405280156106aa578160200160208202803683370190505b5090505f5b6106b984846108c8565b8110156107435760016106cc828661090e565b815481106106dc576106dc610921565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811061071657610716610921565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016106af565b5092915050565b6105418061094f83390190565b5f60208284031215610767575f80fd5b5035919050565b5f6020828403121561077e575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146107a1575f80fd5b9392505050565b5f805f80608085870312156107bb575f80fd5b843593506020850135925060408501359150606085013563ffffffff811681146107e3575f80fd5b939692955090935050565b5f80604083850312156107ff575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b8181101561085b57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610829565b50909695505050505050565b5f60208284031215610877575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b63ffffffff8281168282160390808211156107435761074361087e565b818103818111156108db576108db61087e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b808201808211156108db576108db61087e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfe610100604052348015610010575f80fd5b5060405161054138038061054183398101604081905261002f9161004c565b60809390935260a09190915260c05263ffffffff1660e052610092565b5f805f806080858703121561005f575f80fd5b845193506020850151925060408501519150606085015163ffffffff81168114610087575f80fd5b939692955090935050565b60805160a05160c05160e05161044e6100f35f395f81816101250152818161020c0152818161029e01526102d001525f818160fe01526102fd01525f818160c40152818161023c015261027d01525f8181607801526101eb015261044e5ff3fe608060405234801561000f575f80fd5b506004361061006f575f3560e01c8063bca02c131161004d578063bca02c13146100e6578063d0134cb7146100f9578063fd2da33914610120575f80fd5b80631f68f20a146100735780632e34c872146100ac578063a62b75a8146100bf575b5f80fd5b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200160405180910390f35b61009a6100ba366004610339565b610147565b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b61009a6100f4366004610339565b61015b565b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6101538484846101b2565b949350505050565b5f3373ffffffffffffffffffffffffffffffffffffffff8516146101ab576040517f35a4399400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101538484845b5f806101be83856103b0565b90505f81156101e557816101d663ffffffff866103c9565b6101e091906103e0565b6101e7565b5f5b90507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000063ffffffff831611610278576102677f000000000000000000000000000000000000000000000000000000000000000063ffffffff84166103c9565b61027190826103b0565b905061032f565b6102c27f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006103c9565b6102cc90826103b0565b90507f000000000000000000000000000000000000000000000000000000000000000063ffffffff831603610321817f00000000000000000000000000000000000000000000000000000000000000006103c9565b61032b90836103b0565b9150505b9695505050505050565b5f805f6060848603121561034b575f80fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461036e575f80fd5b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156103c3576103c3610383565b92915050565b80820281158282048414176103c3576103c3610383565b5f82610413577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea26469706673582212200a90280274da8cd18c07634e0fdf16178c2e141735d63b0576bc9d8bceb2957d64736f6c63430008180033a26469706673582212200f019bd38697ba385259546442da245b51edb82c439aada391cab7945c4c24b264736f6c63430008180033

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061006f575f3560e01c80636aebd5831161004d5780636aebd583146101705780636ee0787a14610181578063e536913d146101ee575f80fd5b806306609bbe146100735780633fc756f8146100b057806342b7bf311461015d575b5f80fd5b610086610081366004610757565b61020e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101246100be36600461076e565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526020818152604091829020825180840190935254928316808352740100000000000000000000000000000000000000009093046bffffffffffffffffffffffff1691018190529091565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152016100a7565b61008661016b3660046107a8565b610243565b6001546040519081526020016100a7565b6101de61018f36600461076e565b73ffffffffffffffffffffffffffffffffffffffff165f908152602081905260409020547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16151590565b60405190151581526020016100a7565b6102016101fc3660046107ee565b6105ea565b6040516100a7919061080e565b6001818154811061021d575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f80858585856040516102559061074a565b9384526020840192909252604083015263ffffffff166060820152608001604051809103905ff08015801561028c573d5f803e3d5ffd5b506040517f2e34c8720000000000000000000000000000000000000000000000000000000081525f6004820181905263ffffffff6024830152604482015290915073ffffffffffffffffffffffffffffffffffffffff821690632e34c87290606401602060405180830381865afa158015610309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032d9190610867565b5073ffffffffffffffffffffffffffffffffffffffff8116632e34c8725f6103598663ffffffff6108ab565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015263ffffffff908116602483015286166044820152606401602060405180830381865afa1580156103d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f89190610867565b506040517f2e34c8720000000000000000000000000000000000000000000000000000000081525f600482018190526024820181905263ffffffff60448301529073ffffffffffffffffffffffffffffffffffffffff831690632e34c87290606401602060405180830381865afa158015610475573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104999190610867565b905068041e857e4c251f5f398111156104de576040517fe2f8a31a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252338082526bffffffffffffffffffffffff42818116602080860191825273ffffffffffffffffffffffffffffffffffffffff8981165f8181529283905288832097519351909516740100000000000000000000000000000000000000000292169190911790945560018054808201825594527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168217905592519092917fac4ce915ef22753b636e57aac5ae5fdd9d13d782ae5bf6dbcda15e29f95386c1916105d891815260200190565b60405180910390a35095945050505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106195760015491505b82821080610628575060015482115b1561065f576040517f4e32a13200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61066983836108c8565b67ffffffffffffffff811115610681576106816108e1565b6040519080825280602002602001820160405280156106aa578160200160208202803683370190505b5090505f5b6106b984846108c8565b8110156107435760016106cc828661090e565b815481106106dc576106dc610921565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811061071657610716610921565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016106af565b5092915050565b6105418061094f83390190565b5f60208284031215610767575f80fd5b5035919050565b5f6020828403121561077e575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146107a1575f80fd5b9392505050565b5f805f80608085870312156107bb575f80fd5b843593506020850135925060408501359150606085013563ffffffff811681146107e3575f80fd5b939692955090935050565b5f80604083850312156107ff575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b8181101561085b57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610829565b50909695505050505050565b5f60208284031215610877575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b63ffffffff8281168282160390808211156107435761074361087e565b818103818111156108db576108db61087e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b808201808211156108db576108db61087e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfe610100604052348015610010575f80fd5b5060405161054138038061054183398101604081905261002f9161004c565b60809390935260a09190915260c05263ffffffff1660e052610092565b5f805f806080858703121561005f575f80fd5b845193506020850151925060408501519150606085015163ffffffff81168114610087575f80fd5b939692955090935050565b60805160a05160c05160e05161044e6100f35f395f81816101250152818161020c0152818161029e01526102d001525f818160fe01526102fd01525f818160c40152818161023c015261027d01525f8181607801526101eb015261044e5ff3fe608060405234801561000f575f80fd5b506004361061006f575f3560e01c8063bca02c131161004d578063bca02c13146100e6578063d0134cb7146100f9578063fd2da33914610120575f80fd5b80631f68f20a146100735780632e34c872146100ac578063a62b75a8146100bf575b5f80fd5b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200160405180910390f35b61009a6100ba366004610339565b610147565b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b61009a6100f4366004610339565b61015b565b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6101538484846101b2565b949350505050565b5f3373ffffffffffffffffffffffffffffffffffffffff8516146101ab576040517f35a4399400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101538484845b5f806101be83856103b0565b90505f81156101e557816101d663ffffffff866103c9565b6101e091906103e0565b6101e7565b5f5b90507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000063ffffffff831611610278576102677f000000000000000000000000000000000000000000000000000000000000000063ffffffff84166103c9565b61027190826103b0565b905061032f565b6102c27f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006103c9565b6102cc90826103b0565b90507f000000000000000000000000000000000000000000000000000000000000000063ffffffff831603610321817f00000000000000000000000000000000000000000000000000000000000000006103c9565b61032b90836103b0565b9150505b9695505050505050565b5f805f6060848603121561034b575f80fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461036e575f80fd5b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156103c3576103c3610383565b92915050565b80820281158282048414176103c3576103c3610383565b5f82610413577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea26469706673582212200a90280274da8cd18c07634e0fdf16178c2e141735d63b0576bc9d8bceb2957d64736f6c63430008180033a26469706673582212200f019bd38697ba385259546442da245b51edb82c439aada391cab7945c4c24b264736f6c63430008180033

Block Transaction 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
[ 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.