ETH Price: $3,239.78 (+2.17%)
Gas: 2 Gwei

Contract

0x41a5881c17185383e19Df6FA4EC158a6F4851A69
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x60806040147615222022-05-12 14:10:49805 days ago1652364649IN
 Create: PoolRegistry
0 ETH0.22217225250

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PoolRegistry

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 3 : PoolRegistry.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;

import "./interfaces/IProxyFactory.sol";
import "./interfaces/IRewards.sol";

contract PoolRegistry {

    address public constant owner = address(0x59CFCD384746ec3035299D90782Be065e466800B);
    address public constant proxyFactory = address(0x66807B5598A848602734B82E432dD88DBE13fC8f);

    address public operator;
    address public rewardImplementation;
    bool public rewardsStartActive;
    PoolInfo[] public poolInfo;
    mapping(uint256 => mapping(address => address)) public vaultMap; //pool -> user -> vault
    mapping(uint256 => address[]) public poolVaultList; //pool -> vault array
    
    struct PoolInfo {
        address implementation;
        address stakingAddress;
        address stakingToken;
        address rewardsAddress;
        uint8 active;
    }

    event PoolCreated(uint256 indexed poolid, address indexed implementation, address stakingAddress, address stakingToken);
    event PoolDeactivated(uint256 indexed poolid);
    event AddUserVault(address indexed user, uint256 indexed poolid);
    event OperatorChanged(address indexed account);
    event RewardImplementationChanged(address indexed implementation);
    event RewardActiveOnCreationChanged(bool value);

    constructor() {}

    modifier onlyOwner() {
        require(owner == msg.sender, "!auth");
        _;
    }

    modifier onlyOperator() {
        require(operator == msg.sender, "!op auth");
        _;
    }

    //set operator/manager
    function setOperator(address _op) external onlyOwner{
        operator = _op;
        emit OperatorChanged(_op);
    }

    //set extra reward implementation contract for future pools
    function setRewardImplementation(address _imp) external onlyOperator{
        rewardImplementation = _imp;
        emit RewardImplementationChanged(_imp);
    }

    //set rewards to be active when pool is created
    function setRewardActiveOnCreation(bool _active) external onlyOperator{
        rewardsStartActive = _active;
        emit RewardActiveOnCreationChanged(_active);
    }

    //get number of pools
    function poolLength() external view returns (uint256) {
        return poolInfo.length;
    }

    //get number of vaults made for a specific pool
    function poolVaultLength(uint256 _pid) external view returns (uint256) {
        return poolVaultList[_pid].length;
    }

    //add a new pool and implementation
    function addPool(address _implementation, address _stakingAddress, address _stakingToken) external onlyOperator{
        require(_implementation != address(0), "!imp");
        require(_stakingAddress != address(0), "!stkAdd");
        require(_stakingToken != address(0), "!stkTok");

        address rewards;
        if(rewardImplementation != address(0)){
           rewards = IProxyFactory(proxyFactory).clone(rewardImplementation);
           IRewards(rewards).initialize(poolInfo.length, rewardsStartActive);
        }

        poolInfo.push(
            PoolInfo({
                implementation: _implementation,
                stakingAddress: _stakingAddress,
                stakingToken: _stakingToken,
                rewardsAddress: rewards,
                active: 1
            })
        );
        emit PoolCreated(poolInfo.length-1, _implementation, _stakingAddress, _stakingToken);
    }

    //replace rewards contract on a specific pool.
    //each user must call changeRewards on vault to update to new contract
    function createNewPoolRewards(uint256 _pid) external onlyOperator{
        require(rewardImplementation != address(0), "!imp");

        //spawn new clone
        address rewards = IProxyFactory(proxyFactory).clone(rewardImplementation);
        IRewards(rewards).initialize(_pid, rewardsStartActive);

        //change address
        poolInfo[_pid].rewardsAddress = rewards;
    }
    //deactivates pool so that new vaults can not be made.
    //can not force shutdown/withdraw user funds
    function deactivatePool(uint256 _pid) external onlyOperator{
        poolInfo[_pid].active = 0;
        emit PoolDeactivated(_pid);
    }

    //clone a new user vault
    function addUserVault(uint256 _pid, address _user) external onlyOperator returns(address vault, address stakingAddress, address stakingToken, address rewards){
        require(vaultMap[_pid][_user] == address(0), "already exists");

        PoolInfo storage pool = poolInfo[_pid];
        require(pool.active > 0, "!active");

        //create
        vault = IProxyFactory(proxyFactory).clone(pool.implementation);
        //add to user map
        vaultMap[_pid][_user] = vault;
        //add to pool vault list
        poolVaultList[_pid].push(vault);

        //return values
        stakingAddress = pool.stakingAddress;
        stakingToken = pool.stakingToken;
        rewards = pool.rewardsAddress;

        emit AddUserVault(_user, _pid);
    }

}

File 2 of 3 : IRewards.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;

interface IRewards{
    struct EarnedData {
        address token;
        uint256 amount;
    }
    
    function initialize(uint256 _pid, bool _startActive) external;
    function addReward(address _rewardsToken, address _distributor) external;
    function approveRewardDistributor(
        address _rewardsToken,
        address _distributor,
        bool _approved
    ) external;
    function deposit(address _owner, uint256 _amount) external;
    function withdraw(address _owner, uint256 _amount) external;
    function getReward(address _forward) external;
    function notifyRewardAmount(address _rewardsToken, uint256 _reward) external;
    function balanceOf(address account) external view returns (uint256);
    function claimableRewards(address _account) external view returns(EarnedData[] memory userRewards);
    function rewardTokens(uint256 _rid) external view returns (address);
    function rewardTokenLength() external view returns(uint256);
    function active() external view returns(bool);
}

File 3 of 3 : IProxyFactory.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;

interface IProxyFactory {
    function clone(address _target) external returns(address);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"poolid","type":"uint256"}],"name":"AddUserVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OperatorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"poolid","type":"uint256"},{"indexed":true,"internalType":"address","name":"implementation","type":"address"},{"indexed":false,"internalType":"address","name":"stakingAddress","type":"address"},{"indexed":false,"internalType":"address","name":"stakingToken","type":"address"}],"name":"PoolCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"poolid","type":"uint256"}],"name":"PoolDeactivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"RewardActiveOnCreationChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"RewardImplementationChanged","type":"event"},{"inputs":[{"internalType":"address","name":"_implementation","type":"address"},{"internalType":"address","name":"_stakingAddress","type":"address"},{"internalType":"address","name":"_stakingToken","type":"address"}],"name":"addPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"addUserVault","outputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"address","name":"stakingAddress","type":"address"},{"internalType":"address","name":"stakingToken","type":"address"},{"internalType":"address","name":"rewards","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"createNewPoolRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"deactivatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"address","name":"stakingAddress","type":"address"},{"internalType":"address","name":"stakingToken","type":"address"},{"internalType":"address","name":"rewardsAddress","type":"address"},{"internalType":"uint8","name":"active","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"poolVaultLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolVaultList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsStartActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_op","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_active","type":"bool"}],"name":"setRewardActiveOnCreation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_imp","type":"address"}],"name":"setRewardImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"vaultMap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50610f1c806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063aba65098116100a2578063c10f1a7511610071578063c10f1a7514610296578063ddc72f94146102b1578063e57197cf146102c4578063f2bc788b146102d7578063fa58ee021461031d57600080fd5b8063aba6509814610229578063afe2b66d1461023c578063b3ab15fb1461024f578063bfff576f1461026257600080fd5b8063570ca735116100de578063570ca735146101b05780638b47168a146101db5780638da5cb5b146101fb5780639abd9b051461021657600080fd5b8063081e3eda146101105780631526fe27146101275780633fd467861461017757806351cecf771461018c575b600080fd5b6002545b6040519081526020015b60405180910390f35b61013a610135366004610d58565b610330565b604080516001600160a01b039687168152948616602086015292851692840192909252909216606082015260ff909116608082015260a00161011e565b61018a610185366004610d71565b610386565b005b6001546101a090600160a01b900460ff1681565b604051901515815260200161011e565b6000546101c3906001600160a01b031681565b6040516001600160a01b03909116815260200161011e565b6101146101e9366004610d58565b60009081526004602052604090205490565b6101c37359cfcd384746ec3035299d90782be065e466800b81565b61018a610224366004610d58565b610411565b61018a610237366004610db2565b6104ab565b6101c361024a366004610dfd565b610832565b61018a61025d366004610e1f565b61086a565b6101c3610270366004610e3c565b60036020908152600092835260408084209091529082529020546001600160a01b031681565b6101c37366807b5598a848602734b82e432dd88dbe13fc8f81565b6001546101c3906001600160a01b031681565b61018a6102d2366004610d58565b6108fd565b6102ea6102e5366004610e3c565b610aac565b604080516001600160a01b039586168152938516602085015291841691830191909152909116606082015260800161011e565b61018a61032b366004610e1f565b610ce4565b6002818154811061034057600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b03928316945090821692821691811690600160a01b900460ff1685565b6000546001600160a01b031633146103b95760405162461bcd60e51b81526004016103b090610e6c565b60405180910390fd5b60018054821515600160a01b0260ff60a01b199091161790556040517f7466d7918c00b6a6e62641ace256dadfc65e824de0a0d0740eda888901c2b63b9061040690831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461043b5760405162461bcd60e51b81526004016103b090610e6c565b60006002828154811061045057610450610e8e565b600091825260208220600360049092020101805460ff93909316600160a01b0260ff60a01b199093169290921790915560405182917ff924dd04accfc1837d0eeddb10bc7732e2057f5d916c0b5a21e8372393b244a291a250565b6000546001600160a01b031633146104d55760405162461bcd60e51b81526004016103b090610e6c565b6001600160a01b0383166105145760405162461bcd60e51b81526004016103b090602080825260049082015263021696d760e41b604082015260600190565b6001600160a01b0382166105545760405162461bcd60e51b8152602060048201526007602482015266085cdd1ad0591960ca1b60448201526064016103b0565b6001600160a01b0381166105945760405162461bcd60e51b81526020600482015260076024820152662173746b546f6b60c81b60448201526064016103b0565b6001546000906001600160a01b0316156106a0576001546040516340925bc760e11b81526001600160a01b0390911660048201527366807b5598a848602734b82e432dd88dbe13fc8f90638124b78e906024016020604051808303816000875af1158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190610ea4565b6002546001546040516313cb233360e11b81526004810192909252600160a01b900460ff16151560248201529091506001600160a01b03821690632796466690604401600060405180830381600087803b15801561068757600080fd5b505af115801561069b573d6000803e3d6000fd5b505050505b6040805160a0810182526001600160a01b0380871680835286821660208401908152868316948401948552858316606085019081526001608086018181526002805480840182556000829052975160049098027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace810180549989166001600160a01b03199a8b1617905594517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf86018054918916918a1691909117905597517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad085018054918816919098161790965590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad19092018054955160ff16600160a01b026001600160a81b031990961692909416919091179390931790915591546107e99190610ec1565b604080516001600160a01b038088168252861660208201527f070da9921e58d11c5e49283ff7930c3c05239838f04b056bb98b767be6955879910160405180910390a350505050565b6004602052816000526040600020818154811061084e57600080fd5b6000918252602090912001546001600160a01b03169150829050565b7359cfcd384746ec3035299d90782be065e466800b33146108b55760405162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b60448201526064016103b0565b600080546001600160a01b0319166001600160a01b038316908117825560405190917f4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e5491a250565b6000546001600160a01b031633146109275760405162461bcd60e51b81526004016103b090610e6c565b6001546001600160a01b03166109685760405162461bcd60e51b81526004016103b090602080825260049082015263021696d760e41b604082015260600190565b6001546040516340925bc760e11b81526001600160a01b0390911660048201526000907366807b5598a848602734b82e432dd88dbe13fc8f90638124b78e906024016020604051808303816000875af11580156109c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ed9190610ea4565b6001546040516313cb233360e11b815260048101859052600160a01b90910460ff16151560248201529091506001600160a01b03821690632796466690604401600060405180830381600087803b158015610a4757600080fd5b505af1158015610a5b573d6000803e3d6000fd5b505050508060028381548110610a7357610a73610e8e565b906000526020600020906004020160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050565b600080548190819081906001600160a01b03163314610add5760405162461bcd60e51b81526004016103b090610e6c565b60008681526003602090815260408083206001600160a01b0389811685529252909120541615610b405760405162461bcd60e51b815260206004820152600e60248201526d616c72656164792065786973747360901b60448201526064016103b0565b600060028781548110610b5557610b55610e8e565b9060005260206000209060040201905060008160030160149054906101000a900460ff1660ff1611610bb35760405162461bcd60e51b81526020600482015260076024820152662161637469766560c81b60448201526064016103b0565b80546040516340925bc760e11b81526001600160a01b0390911660048201527366807b5598a848602734b82e432dd88dbe13fc8f90638124b78e906024016020604051808303816000875af1158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c349190610ea4565b60008881526003602081815260408084206001600160a01b03808d1680875291845282862080548289166001600160a01b031991821681179092558f885260048652848820805460018181018355918a5296892090960180549091169091179055928701546002880154948801549251969b50831699509282169750169450899290917fc3a719ac2c66bb292413ff9bb5cc91f486266e1b70bf1b394f666fc761ec64a391a35092959194509250565b6000546001600160a01b03163314610d0e5760405162461bcd60e51b81526004016103b090610e6c565b600180546001600160a01b0319166001600160a01b0383169081179091556040517ffbeb0fbc478d221bbef0241e46aa78721db7379c47cc2dddf9fc562ac071486c90600090a250565b600060208284031215610d6a57600080fd5b5035919050565b600060208284031215610d8357600080fd5b81358015158114610d9357600080fd5b9392505050565b6001600160a01b0381168114610daf57600080fd5b50565b600080600060608486031215610dc757600080fd5b8335610dd281610d9a565b92506020840135610de281610d9a565b91506040840135610df281610d9a565b809150509250925092565b60008060408385031215610e1057600080fd5b50508035926020909101359150565b600060208284031215610e3157600080fd5b8135610d9381610d9a565b60008060408385031215610e4f57600080fd5b823591506020830135610e6181610d9a565b809150509250929050565b602080825260089082015267042dee040c2eae8d60c31b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610eb657600080fd5b8151610d9381610d9a565b600082821015610ee157634e487b7160e01b600052601160045260246000fd5b50039056fea264697066735822122073043bd1ebfbce79259f34534df92e37d5fe04822b5b381af2259707b27ed6f364736f6c634300080a0033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063aba65098116100a2578063c10f1a7511610071578063c10f1a7514610296578063ddc72f94146102b1578063e57197cf146102c4578063f2bc788b146102d7578063fa58ee021461031d57600080fd5b8063aba6509814610229578063afe2b66d1461023c578063b3ab15fb1461024f578063bfff576f1461026257600080fd5b8063570ca735116100de578063570ca735146101b05780638b47168a146101db5780638da5cb5b146101fb5780639abd9b051461021657600080fd5b8063081e3eda146101105780631526fe27146101275780633fd467861461017757806351cecf771461018c575b600080fd5b6002545b6040519081526020015b60405180910390f35b61013a610135366004610d58565b610330565b604080516001600160a01b039687168152948616602086015292851692840192909252909216606082015260ff909116608082015260a00161011e565b61018a610185366004610d71565b610386565b005b6001546101a090600160a01b900460ff1681565b604051901515815260200161011e565b6000546101c3906001600160a01b031681565b6040516001600160a01b03909116815260200161011e565b6101146101e9366004610d58565b60009081526004602052604090205490565b6101c37359cfcd384746ec3035299d90782be065e466800b81565b61018a610224366004610d58565b610411565b61018a610237366004610db2565b6104ab565b6101c361024a366004610dfd565b610832565b61018a61025d366004610e1f565b61086a565b6101c3610270366004610e3c565b60036020908152600092835260408084209091529082529020546001600160a01b031681565b6101c37366807b5598a848602734b82e432dd88dbe13fc8f81565b6001546101c3906001600160a01b031681565b61018a6102d2366004610d58565b6108fd565b6102ea6102e5366004610e3c565b610aac565b604080516001600160a01b039586168152938516602085015291841691830191909152909116606082015260800161011e565b61018a61032b366004610e1f565b610ce4565b6002818154811061034057600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b03928316945090821692821691811690600160a01b900460ff1685565b6000546001600160a01b031633146103b95760405162461bcd60e51b81526004016103b090610e6c565b60405180910390fd5b60018054821515600160a01b0260ff60a01b199091161790556040517f7466d7918c00b6a6e62641ace256dadfc65e824de0a0d0740eda888901c2b63b9061040690831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461043b5760405162461bcd60e51b81526004016103b090610e6c565b60006002828154811061045057610450610e8e565b600091825260208220600360049092020101805460ff93909316600160a01b0260ff60a01b199093169290921790915560405182917ff924dd04accfc1837d0eeddb10bc7732e2057f5d916c0b5a21e8372393b244a291a250565b6000546001600160a01b031633146104d55760405162461bcd60e51b81526004016103b090610e6c565b6001600160a01b0383166105145760405162461bcd60e51b81526004016103b090602080825260049082015263021696d760e41b604082015260600190565b6001600160a01b0382166105545760405162461bcd60e51b8152602060048201526007602482015266085cdd1ad0591960ca1b60448201526064016103b0565b6001600160a01b0381166105945760405162461bcd60e51b81526020600482015260076024820152662173746b546f6b60c81b60448201526064016103b0565b6001546000906001600160a01b0316156106a0576001546040516340925bc760e11b81526001600160a01b0390911660048201527366807b5598a848602734b82e432dd88dbe13fc8f90638124b78e906024016020604051808303816000875af1158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190610ea4565b6002546001546040516313cb233360e11b81526004810192909252600160a01b900460ff16151560248201529091506001600160a01b03821690632796466690604401600060405180830381600087803b15801561068757600080fd5b505af115801561069b573d6000803e3d6000fd5b505050505b6040805160a0810182526001600160a01b0380871680835286821660208401908152868316948401948552858316606085019081526001608086018181526002805480840182556000829052975160049098027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace810180549989166001600160a01b03199a8b1617905594517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf86018054918916918a1691909117905597517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad085018054918816919098161790965590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad19092018054955160ff16600160a01b026001600160a81b031990961692909416919091179390931790915591546107e99190610ec1565b604080516001600160a01b038088168252861660208201527f070da9921e58d11c5e49283ff7930c3c05239838f04b056bb98b767be6955879910160405180910390a350505050565b6004602052816000526040600020818154811061084e57600080fd5b6000918252602090912001546001600160a01b03169150829050565b7359cfcd384746ec3035299d90782be065e466800b33146108b55760405162461bcd60e51b8152602060048201526005602482015264042c2eae8d60db1b60448201526064016103b0565b600080546001600160a01b0319166001600160a01b038316908117825560405190917f4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e5491a250565b6000546001600160a01b031633146109275760405162461bcd60e51b81526004016103b090610e6c565b6001546001600160a01b03166109685760405162461bcd60e51b81526004016103b090602080825260049082015263021696d760e41b604082015260600190565b6001546040516340925bc760e11b81526001600160a01b0390911660048201526000907366807b5598a848602734b82e432dd88dbe13fc8f90638124b78e906024016020604051808303816000875af11580156109c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ed9190610ea4565b6001546040516313cb233360e11b815260048101859052600160a01b90910460ff16151560248201529091506001600160a01b03821690632796466690604401600060405180830381600087803b158015610a4757600080fd5b505af1158015610a5b573d6000803e3d6000fd5b505050508060028381548110610a7357610a73610e8e565b906000526020600020906004020160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050565b600080548190819081906001600160a01b03163314610add5760405162461bcd60e51b81526004016103b090610e6c565b60008681526003602090815260408083206001600160a01b0389811685529252909120541615610b405760405162461bcd60e51b815260206004820152600e60248201526d616c72656164792065786973747360901b60448201526064016103b0565b600060028781548110610b5557610b55610e8e565b9060005260206000209060040201905060008160030160149054906101000a900460ff1660ff1611610bb35760405162461bcd60e51b81526020600482015260076024820152662161637469766560c81b60448201526064016103b0565b80546040516340925bc760e11b81526001600160a01b0390911660048201527366807b5598a848602734b82e432dd88dbe13fc8f90638124b78e906024016020604051808303816000875af1158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c349190610ea4565b60008881526003602081815260408084206001600160a01b03808d1680875291845282862080548289166001600160a01b031991821681179092558f885260048652848820805460018181018355918a5296892090960180549091169091179055928701546002880154948801549251969b50831699509282169750169450899290917fc3a719ac2c66bb292413ff9bb5cc91f486266e1b70bf1b394f666fc761ec64a391a35092959194509250565b6000546001600160a01b03163314610d0e5760405162461bcd60e51b81526004016103b090610e6c565b600180546001600160a01b0319166001600160a01b0383169081179091556040517ffbeb0fbc478d221bbef0241e46aa78721db7379c47cc2dddf9fc562ac071486c90600090a250565b600060208284031215610d6a57600080fd5b5035919050565b600060208284031215610d8357600080fd5b81358015158114610d9357600080fd5b9392505050565b6001600160a01b0381168114610daf57600080fd5b50565b600080600060608486031215610dc757600080fd5b8335610dd281610d9a565b92506020840135610de281610d9a565b91506040840135610df281610d9a565b809150509250925092565b60008060408385031215610e1057600080fd5b50508035926020909101359150565b600060208284031215610e3157600080fd5b8135610d9381610d9a565b60008060408385031215610e4f57600080fd5b823591506020830135610e6181610d9a565b809150509250929050565b602080825260089082015267042dee040c2eae8d60c31b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610eb657600080fd5b8151610d9381610d9a565b600082821015610ee157634e487b7160e01b600052601160045260246000fd5b50039056fea264697066735822122073043bd1ebfbce79259f34534df92e37d5fe04822b5b381af2259707b27ed6f364736f6c634300080a0033

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