Contract

0x542Bf9f89c3Ba0edb7aE5EB4Cf582d349fCdC608

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

-

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BeefyPositionMulticall

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 1 : BeefyPositionMulticall.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

interface IStrategy {
    function lastPositionAdjustment() external view returns (uint256);
    function currentTick() external view returns (int24);
    function positionMain() external view returns (int24 lowerTick, int24 upperTick);
    function pool() external view returns (address);
    function twap() external view returns (int56);
    function positionWidth() external view returns (int24);
    function isCalm() external view returns (bool);
    function moveTicks() external;
    function maxTickDeviation() external view returns (int56);
}

interface IStrategyVelodrome {
    function currentTick() external view returns (int24);
    function positionMain() external view returns (int24 baseLower, int24 lowerTick, int24 upperTick);
    function pool() external view returns (address);
    function nftManager() external view returns (address);
}

interface IPool {
    function tickSpacing() external view returns (int24);
    function observe(uint32[] calldata secondsAgos) external view returns (int56[] memory tickCumulatives, int160[] memory secondsPerLiquidityCumulativeX128s);
}

interface IAlgebraPool {
    function getTimepoints(uint32[] calldata secondsAgos)
    external
    view
    returns (
      int56[] memory tickCumulatives,
      uint160[] memory secondsPerLiquidityCumulatives,
      uint112[] memory volatilityCumulatives,
      uint256[] memory volumePerAvgLiquiditys
    );
}

// Beefy Position Mulicall
// Contract that returns needed data for our position adjuster
contract BeefyPositionMulticall {
    // Gelato address to that is authorized to move the ticks
    address public gelato = address(0x035066D430e5ca34e7BdB0756FCe82186CAfe1F0);

    error NotAuthorized();

    /**
     * @notice Check if the position of the strategy is in range
     * @param _strategies an array of strategies to check
     * @return inRange an array of booleans indicating if the position is in tickspacing of range
     */
    function positionNeedsTickAdjustment(address[] memory _strategies) external view returns (bool[] memory inRange) {
        inRange = new bool[](_strategies.length);
        for (uint256 i; i < _strategies.length;) {
            IStrategy _strategy = IStrategy(_strategies[i]);

            address pool = _strategy.pool();
            int56 twapTick = _strategy.twap();
            int24 width = _strategy.positionWidth();
            int56 deviation = _strategy.maxTickDeviation();
            int24 tickSpacing = IPool(pool).tickSpacing();

            try IStrategyVelodrome(address(_strategy)).nftManager() returns (address) {
                IStrategyVelodrome _veloStrategy = IStrategyVelodrome(_strategies[i]);
                (,int24 lowerTick, int24 upperTick) = _veloStrategy.positionMain();

                // Check if the current tick is in range or in need of adjustment
                inRange[i] = _inRange(int24(twapTick), lowerTick, upperTick, width, tickSpacing, deviation);
            } catch {
                (int24 lowerTick, int24 upperTick) = _strategy.positionMain();

                // Check if the current tick is in range or in need of adjustment  
                inRange[i] = _inRange(int24(twapTick), lowerTick, upperTick, width, tickSpacing, deviation);
            }

            unchecked { ++i; }
        }
        return inRange;
    }

    /// @notice Check if the current tick is in range or in need of adjustment
    function _inRange(int24 twapTick, int24 lowerTick, int24 upperTick, int24 width, int24 tickSpacing, int56 deviation) internal pure returns (bool) {
        int24 bound = (width * tickSpacing) / 2;
        if (deviation <= 2) {
            // If we end up +5% out range, do nothing return true.
            int24 extremeBound = 500;
            if (twapTick <= (lowerTick - extremeBound) || twapTick >= (upperTick + extremeBound)) return true;
            return twapTick >= (lowerTick + bound) && twapTick <= (upperTick - bound);
        } else {
            return twapTick >= (lowerTick + bound) && twapTick <= (upperTick - bound);
        }
    }

    /**
     * @notice Check the last time the positions were adjusted
     * @param _strategies an array of strategies to check
     * @return lastAdjustments an array of uint256 indicating the last time the position was adjusted
     */
    function lastPositionAdjustments(address[] memory _strategies) external view returns (uint256[] memory) {
        uint256[] memory lastAdjustments = new uint256[](_strategies.length);
        for (uint256 i; i < _strategies.length;) {
            IStrategy _strategy = IStrategy(_strategies[i]);
            lastAdjustments[i] = _strategy.lastPositionAdjustment();
            unchecked { ++i; }
        }
        return lastAdjustments;
    }

    /// encode some data
    function encodeData(address one, address two, address three, uint num) external pure returns (bytes memory) {
        if (num == 1) {
            return abi.encode(one);
        } else if (num == 2) {
            return abi.encode(one, two);
        } else {
            return abi.encode(one, two, three);
        }
    }

    /// decode some data
    function decodeData(bytes memory _data, uint num) internal pure returns (address[] memory) {
        if (num == 1) {
            address[] memory strats = new address[](num);
            address decodedAddress = abi.decode(_data, (address));
            strats[0] = decodedAddress;
            return strats;
        } else if (num == 2) {
            address[] memory strats = new address[](num);
            (address one, address two) = abi.decode(_data, (address, address));
            strats[0] = one;
            strats[1] = two;
            return strats;
        } else {
            (address one, address two, address three) = abi.decode(_data, (address, address, address));
            address[] memory strats = new address[](num);
            strats[0] = one;
            strats[1] = two;
            strats[2] = three;
            return strats;
        }
    }

    /// @notice Move the ticks of the strategies that are calm, called only by gelato
    function moveTicks(bytes memory _data, uint num) external {
        if (msg.sender != gelato) {
            revert NotAuthorized();
        }
        address[] memory strats = decodeData(_data, num);
        
        for (uint i; i < strats.length;) {
            bool calm = IStrategy(strats[i]).isCalm(); 
            if (calm) {
                try IStrategy(strats[i]).moveTicks() {
                    unchecked { ++i; }
                } catch {
                    unchecked { ++i; }
                }
            }
        }
    }

    /// Check if the strategy is calm
    function isCalm(address[] memory _strategies) external view returns (bool[] memory) {

        bool[] memory calm = new bool[](_strategies.length);

        for (uint256 i; i < _strategies.length;) {

            calm[i] = IStrategy(_strategies[i]).isCalm();

            unchecked { ++i; }

        }

        return calm;

    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"name":"NotAuthorized","type":"error"},{"inputs":[{"internalType":"address","name":"one","type":"address"},{"internalType":"address","name":"two","type":"address"},{"internalType":"address","name":"three","type":"address"},{"internalType":"uint256","name":"num","type":"uint256"}],"name":"encodeData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"gelato","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_strategies","type":"address[]"}],"name":"isCalm","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_strategies","type":"address[]"}],"name":"lastPositionAdjustments","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"num","type":"uint256"}],"name":"moveTicks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_strategies","type":"address[]"}],"name":"positionNeedsTickAdjustment","outputs":[{"internalType":"bool[]","name":"inRange","type":"bool[]"}],"stateMutability":"view","type":"function"}]

6080604052600080546001600160a01b03191673035066d430e5ca34e7bdb0756fce82186cafe1f017905534801561003657600080fd5b50611239806100466000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80632396bd03146100675780632a70972214610090578063573ea575146100b057806368d2c7c1146100db5780638aae2cf7146100fb5780638e855f6714610110575b600080fd5b61007a610075366004610d0a565b610123565b6040516100879190610dbc565b60405180910390f35b6100a361009e366004610d0a565b610226565b6040516100879190610e00565b6000546100c3906001600160a01b031681565b6040516001600160a01b039091168152602001610087565b6100ee6100e9366004610e3a565b610321565b6040516100879190610e8b565b61010e610109366004610eda565b6103b9565b005b6100a361011e366004610d0a565b61050a565b60606000825167ffffffffffffffff81111561014157610141610cab565b60405190808252806020026020018201604052801561016a578160200160208202803683370190505b50905060005b835181101561021f57600084828151811061018d5761018d610f74565b60200260200101519050806001600160a01b031663865238d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f99190610f8a565b83838151811061020b5761020b610f74565b602090810291909101015250600101610170565b5092915050565b60606000825167ffffffffffffffff81111561024457610244610cab565b60405190808252806020026020018201604052801561026d578160200160208202803683370190505b50905060005b835181101561021f5783818151811061028e5761028e610f74565b60200260200101516001600160a01b0316639bdde46b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f79190610fa3565b82828151811061030957610309610f74565b91151560209283029190910190910152600101610273565b60608160010361035657604080516001600160a01b0387166020820152015b60405160208183030381529060405290506103b1565b8160020361038357604080516001600160a01b038088166020830152861691810191909152606001610340565b604080516001600160a01b038088166020830152808716928201929092529084166060820152608001610340565b949350505050565b6000546001600160a01b031633146103e45760405163ea8e4eb560e01b815260040160405180910390fd5b60006103f0838361094d565b905060005b815181101561050457600082828151811061041257610412610f74565b60200260200101516001600160a01b0316639bdde46b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047b9190610fa3565b905080156104fe5782828151811061049557610495610f74565b60200260200101516001600160a01b031663c7d541326040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104d757600080fd5b505af19250505080156104e8575060015b6104f7578160010191506104fe565b8160010191505b506103f5565b50505050565b6060815167ffffffffffffffff81111561052657610526610cab565b60405190808252806020026020018201604052801561054f578160200160208202803683370190505b50905060005b825181101561094757600083828151811061057257610572610f74565b602002602001015190506000816001600160a01b03166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e09190610fcc565b90506000826001600160a01b0316631208aa186040518163ffffffff1660e01b8152600401602060405180830381865afa158015610622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106469190610fe9565b90506000836001600160a01b0316638097e2496040518163ffffffff1660e01b8152600401602060405180830381865afa158015610688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ac9190611023565b90506000846001600160a01b031663696c58e56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107129190610fe9565b90506000846001600160a01b031663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107789190611023565b9050856001600160a01b031663e88b91ea6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156107d4575060408051601f3d908101601f191682019092526107d191810190610fcc565b60015b61087957600080876001600160a01b031663bc415d8a6040518163ffffffff1660e01b81526004016040805180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c919061103e565b9150915061084e868383888789610bd2565b8a8a8151811061086057610860610f74565b6020026020010190151590811515815250505050610936565b60008a898151811061088d5761088d610f74565b60200260200101519050600080826001600160a01b031663bc415d8a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611071565b925092505061090f8883838a898b610bd2565b8c8c8151811061092157610921610f74565b91151560209283029190910190910152505050505b866001019650505050505050610555565b50919050565b6060816001036109ea5760008267ffffffffffffffff81111561097257610972610cab565b60405190808252806020026020018201604052801561099b578160200160208202803683370190505b5090506000848060200190518101906109b49190610fcc565b905080826000815181106109ca576109ca610f74565b6001600160a01b0390921660209283029190910190910152509050610bcc565b81600203610ac75760008267ffffffffffffffff811115610a0d57610a0d610cab565b604051908082528060200260200182016040528015610a36578160200160208202803683370190505b50905060008085806020019051810190610a5091906110b4565b915091508183600081518110610a6857610a68610f74565b60200260200101906001600160a01b031690816001600160a01b0316815250508083600181518110610a9c57610a9c610f74565b60200260200101906001600160a01b031690816001600160a01b031681525050829350505050610bcc565b600080600085806020019051810190610ae091906110ee565b92509250925060008567ffffffffffffffff811115610b0157610b01610cab565b604051908082528060200260200182016040528015610b2a578160200160208202803683370190505b5090508381600081518110610b4157610b41610f74565b60200260200101906001600160a01b031690816001600160a01b0316815250508281600181518110610b7557610b75610f74565b60200260200101906001600160a01b031690816001600160a01b0316815250508181600281518110610ba957610ba9610f74565b6001600160a01b03909216602092830291909101909101529350610bcc92505050565b92915050565b6000806002610be18587611151565b610beb9190611171565b905060028360060b13610c6f576101f4610c0581896111b9565b60020b8960020b131580610c285750610c1e81886111de565b60020b8960020b12155b15610c3857600192505050610ca1565b610c4282896111de565b60020b8960020b12158015610c665750610c5c82886111b9565b60020b8960020b13155b92505050610ca1565b610c7981886111de565b60020b8860020b12158015610c9d5750610c9381876111b9565b60020b8860020b13155b9150505b9695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cea57610cea610cab565b604052919050565b6001600160a01b0381168114610d0757600080fd5b50565b60006020808385031215610d1d57600080fd5b823567ffffffffffffffff80821115610d3557600080fd5b818501915085601f830112610d4957600080fd5b813581811115610d5b57610d5b610cab565b8060051b9150610d6c848301610cc1565b8181529183018401918481019088841115610d8657600080fd5b938501935b83851015610db05784359250610da083610cf2565b8282529385019390850190610d8b565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610df457835183529284019291840191600101610dd8565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610df4578351151583529284019291840191600101610e1c565b60008060008060808587031215610e5057600080fd5b8435610e5b81610cf2565b93506020850135610e6b81610cf2565b92506040850135610e7b81610cf2565b9396929550929360600135925050565b60006020808352835180602085015260005b81811015610eb957858101830151858201604001528201610e9d565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215610eed57600080fd5b823567ffffffffffffffff80821115610f0557600080fd5b818501915085601f830112610f1957600080fd5b8135602082821115610f2d57610f2d610cab565b610f3f601f8301601f19168201610cc1565b92508183528781838601011115610f5557600080fd5b8181850182850137600091830181019190915290969401359450505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610f9c57600080fd5b5051919050565b600060208284031215610fb557600080fd5b81518015158114610fc557600080fd5b9392505050565b600060208284031215610fde57600080fd5b8151610fc581610cf2565b600060208284031215610ffb57600080fd5b81518060060b8114610fc557600080fd5b8051600281900b811461101e57600080fd5b919050565b60006020828403121561103557600080fd5b610fc58261100c565b6000806040838503121561105157600080fd5b61105a8361100c565b91506110686020840161100c565b90509250929050565b60008060006060848603121561108657600080fd5b61108f8461100c565b925061109d6020850161100c565b91506110ab6040850161100c565b90509250925092565b600080604083850312156110c757600080fd5b82516110d281610cf2565b60208401519092506110e381610cf2565b809150509250929050565b60008060006060848603121561110357600080fd5b835161110e81610cf2565b602085015190935061111f81610cf2565b604085015190925061113081610cf2565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b60008260020b8260020b028060020b915080821461021f5761021f61113b565b60008160020b8360020b8061119657634e487b7160e01b600052601260045260246000fd5b627fffff198214600019821416156111b0576111b061113b565b90059392505050565b600282810b9082900b03627fffff198112627fffff82131715610bcc57610bcc61113b565b600281810b9083900b01627fffff8113627fffff1982121715610bcc57610bcc61113b56fea26469706673582212201e4676065f4ac9215aa4ad4fa05b5c2c03bfc59faa7776267dd62ae59106baf464736f6c63430008170033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100625760003560e01c80632396bd03146100675780632a70972214610090578063573ea575146100b057806368d2c7c1146100db5780638aae2cf7146100fb5780638e855f6714610110575b600080fd5b61007a610075366004610d0a565b610123565b6040516100879190610dbc565b60405180910390f35b6100a361009e366004610d0a565b610226565b6040516100879190610e00565b6000546100c3906001600160a01b031681565b6040516001600160a01b039091168152602001610087565b6100ee6100e9366004610e3a565b610321565b6040516100879190610e8b565b61010e610109366004610eda565b6103b9565b005b6100a361011e366004610d0a565b61050a565b60606000825167ffffffffffffffff81111561014157610141610cab565b60405190808252806020026020018201604052801561016a578160200160208202803683370190505b50905060005b835181101561021f57600084828151811061018d5761018d610f74565b60200260200101519050806001600160a01b031663865238d46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f99190610f8a565b83838151811061020b5761020b610f74565b602090810291909101015250600101610170565b5092915050565b60606000825167ffffffffffffffff81111561024457610244610cab565b60405190808252806020026020018201604052801561026d578160200160208202803683370190505b50905060005b835181101561021f5783818151811061028e5761028e610f74565b60200260200101516001600160a01b0316639bdde46b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f79190610fa3565b82828151811061030957610309610f74565b91151560209283029190910190910152600101610273565b60608160010361035657604080516001600160a01b0387166020820152015b60405160208183030381529060405290506103b1565b8160020361038357604080516001600160a01b038088166020830152861691810191909152606001610340565b604080516001600160a01b038088166020830152808716928201929092529084166060820152608001610340565b949350505050565b6000546001600160a01b031633146103e45760405163ea8e4eb560e01b815260040160405180910390fd5b60006103f0838361094d565b905060005b815181101561050457600082828151811061041257610412610f74565b60200260200101516001600160a01b0316639bdde46b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047b9190610fa3565b905080156104fe5782828151811061049557610495610f74565b60200260200101516001600160a01b031663c7d541326040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104d757600080fd5b505af19250505080156104e8575060015b6104f7578160010191506104fe565b8160010191505b506103f5565b50505050565b6060815167ffffffffffffffff81111561052657610526610cab565b60405190808252806020026020018201604052801561054f578160200160208202803683370190505b50905060005b825181101561094757600083828151811061057257610572610f74565b602002602001015190506000816001600160a01b03166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e09190610fcc565b90506000826001600160a01b0316631208aa186040518163ffffffff1660e01b8152600401602060405180830381865afa158015610622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106469190610fe9565b90506000836001600160a01b0316638097e2496040518163ffffffff1660e01b8152600401602060405180830381865afa158015610688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ac9190611023565b90506000846001600160a01b031663696c58e56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107129190610fe9565b90506000846001600160a01b031663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107789190611023565b9050856001600160a01b031663e88b91ea6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156107d4575060408051601f3d908101601f191682019092526107d191810190610fcc565b60015b61087957600080876001600160a01b031663bc415d8a6040518163ffffffff1660e01b81526004016040805180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c919061103e565b9150915061084e868383888789610bd2565b8a8a8151811061086057610860610f74565b6020026020010190151590811515815250505050610936565b60008a898151811061088d5761088d610f74565b60200260200101519050600080826001600160a01b031663bc415d8a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611071565b925092505061090f8883838a898b610bd2565b8c8c8151811061092157610921610f74565b91151560209283029190910190910152505050505b866001019650505050505050610555565b50919050565b6060816001036109ea5760008267ffffffffffffffff81111561097257610972610cab565b60405190808252806020026020018201604052801561099b578160200160208202803683370190505b5090506000848060200190518101906109b49190610fcc565b905080826000815181106109ca576109ca610f74565b6001600160a01b0390921660209283029190910190910152509050610bcc565b81600203610ac75760008267ffffffffffffffff811115610a0d57610a0d610cab565b604051908082528060200260200182016040528015610a36578160200160208202803683370190505b50905060008085806020019051810190610a5091906110b4565b915091508183600081518110610a6857610a68610f74565b60200260200101906001600160a01b031690816001600160a01b0316815250508083600181518110610a9c57610a9c610f74565b60200260200101906001600160a01b031690816001600160a01b031681525050829350505050610bcc565b600080600085806020019051810190610ae091906110ee565b92509250925060008567ffffffffffffffff811115610b0157610b01610cab565b604051908082528060200260200182016040528015610b2a578160200160208202803683370190505b5090508381600081518110610b4157610b41610f74565b60200260200101906001600160a01b031690816001600160a01b0316815250508281600181518110610b7557610b75610f74565b60200260200101906001600160a01b031690816001600160a01b0316815250508181600281518110610ba957610ba9610f74565b6001600160a01b03909216602092830291909101909101529350610bcc92505050565b92915050565b6000806002610be18587611151565b610beb9190611171565b905060028360060b13610c6f576101f4610c0581896111b9565b60020b8960020b131580610c285750610c1e81886111de565b60020b8960020b12155b15610c3857600192505050610ca1565b610c4282896111de565b60020b8960020b12158015610c665750610c5c82886111b9565b60020b8960020b13155b92505050610ca1565b610c7981886111de565b60020b8860020b12158015610c9d5750610c9381876111b9565b60020b8860020b13155b9150505b9695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610cea57610cea610cab565b604052919050565b6001600160a01b0381168114610d0757600080fd5b50565b60006020808385031215610d1d57600080fd5b823567ffffffffffffffff80821115610d3557600080fd5b818501915085601f830112610d4957600080fd5b813581811115610d5b57610d5b610cab565b8060051b9150610d6c848301610cc1565b8181529183018401918481019088841115610d8657600080fd5b938501935b83851015610db05784359250610da083610cf2565b8282529385019390850190610d8b565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610df457835183529284019291840191600101610dd8565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610df4578351151583529284019291840191600101610e1c565b60008060008060808587031215610e5057600080fd5b8435610e5b81610cf2565b93506020850135610e6b81610cf2565b92506040850135610e7b81610cf2565b9396929550929360600135925050565b60006020808352835180602085015260005b81811015610eb957858101830151858201604001528201610e9d565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215610eed57600080fd5b823567ffffffffffffffff80821115610f0557600080fd5b818501915085601f830112610f1957600080fd5b8135602082821115610f2d57610f2d610cab565b610f3f601f8301601f19168201610cc1565b92508183528781838601011115610f5557600080fd5b8181850182850137600091830181019190915290969401359450505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610f9c57600080fd5b5051919050565b600060208284031215610fb557600080fd5b81518015158114610fc557600080fd5b9392505050565b600060208284031215610fde57600080fd5b8151610fc581610cf2565b600060208284031215610ffb57600080fd5b81518060060b8114610fc557600080fd5b8051600281900b811461101e57600080fd5b919050565b60006020828403121561103557600080fd5b610fc58261100c565b6000806040838503121561105157600080fd5b61105a8361100c565b91506110686020840161100c565b90509250929050565b60008060006060848603121561108657600080fd5b61108f8461100c565b925061109d6020850161100c565b91506110ab6040850161100c565b90509250925092565b600080604083850312156110c757600080fd5b82516110d281610cf2565b60208401519092506110e381610cf2565b809150509250929050565b60008060006060848603121561110357600080fd5b835161110e81610cf2565b602085015190935061111f81610cf2565b604085015190925061113081610cf2565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b60008260020b8260020b028060020b915080821461021f5761021f61113b565b60008160020b8360020b8061119657634e487b7160e01b600052601260045260246000fd5b627fffff198214600019821416156111b0576111b061113b565b90059392505050565b600282810b9082900b03627fffff198112627fffff82131715610bcc57610bcc61113b565b600281810b9083900b01627fffff8113627fffff1982121715610bcc57610bcc61113b56fea26469706673582212201e4676065f4ac9215aa4ad4fa05b5c2c03bfc59faa7776267dd62ae59106baf464736f6c63430008170033

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

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.