ETH Price: $2,214.00 (+3.51%)

Contract

0xd1f408F3f82D6B8C8Ddb6C1683A0E0d3f3274DE5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Register130578222021-08-19 20:14:081294 days ago1629404048IN
0xd1f408F3...3f3274DE5
0 ETH0.0044194648.48987092

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DistributionProxy

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-17
*/

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.6;

contract Ownable {
    address public owner;
    address private nextOwner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    // modifiers

    modifier onlyOwner() {
        require(isOwner(), "caller is not the owner.");
        _;
    }

    modifier onlyNextOwner() {
        require(isNextOwner(), "current owner must set caller as next owner.");
        _;
    }

    /**
     * @dev Initialize contract by setting transaction submitter as initial owner.
     */
    constructor(address owner_) {
        owner = owner_;
        emit OwnershipTransferred(address(0), owner);
    }

    /**
     * @dev Initiate ownership transfer by setting nextOwner.
     */
    function transferOwnership(address nextOwner_) external onlyOwner {
        require(nextOwner_ != address(0), "Next owner is the zero address.");

        nextOwner = nextOwner_;
    }

    /**
     * @dev Cancel ownership transfer by deleting nextOwner.
     */
    function cancelOwnershipTransfer() external onlyOwner {
        delete nextOwner;
    }

    /**
     * @dev Accepts ownership transfer by setting owner.
     */
    function acceptOwnership() external onlyNextOwner {
        delete nextOwner;

        owner = msg.sender;

        emit OwnershipTransferred(owner, msg.sender);
    }

    /**
     * @dev Renounce ownership by setting owner to zero address.
     */
    function renounceOwnership() external onlyOwner {
        owner = address(0);

        emit OwnershipTransferred(owner, address(0));
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == owner;
    }

    /**
     * @dev Returns true if the caller is the next owner.
     */
    function isNextOwner() public view returns (bool) {
        return msg.sender == nextOwner;
    }
}


// File contracts/lib/interface/IGovernable.sol


interface IGovernable {
    function changeGovernor(address governor_) external;

    function isGovernor() external view returns (bool);

    function governor() external view returns (address);
}


// File contracts/lib/Governable.sol



contract Governable is Ownable, IGovernable {
    // ============ Mutable Storage ============

    // Mirror governance contract.
    address public override governor;

    // ============ Modifiers ============

    modifier onlyGovernance() {
        require(isOwner() || isGovernor(), "caller is not governance");
        _;
    }

    modifier onlyGovernor() {
        require(isGovernor(), "caller is not governor");
        _;
    }

    // ============ Constructor ============

    constructor(address owner_) Ownable(owner_) {}

    // ============ Administration ============

    function changeGovernor(address governor_) public override onlyGovernance {
        governor = governor_;
    }

    // ============ Utility Functions ============

    function isGovernor() public view override returns (bool) {
        return msg.sender == governor;
    }
}


// File contracts/distribution/interface/IDistributionLogic.sol


interface IDistributionLogic {
    function version() external returns (uint256);

    function distribute(address tributary, uint256 contribution) external;

    function claim(address claimant) external;

    function claimable(address claimant) external view returns (uint256);

    function increaseAwards(address member, uint256 amount) external;
}


// File contracts/interface/IENS.sol

interface IENS {
    // Logged when the owner of a node assigns a new owner to a subnode.
    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);

    // Logged when the owner of a node transfers ownership to a new account.
    event Transfer(bytes32 indexed node, address owner);

    // Logged when the resolver for a node changes.
    event NewResolver(bytes32 indexed node, address resolver);

    // Logged when the TTL of a node changes
    event NewTTL(bytes32 indexed node, uint64 ttl);

    // Logged when an operator is added or removed.
    event ApprovalForAll(
        address indexed owner,
        address indexed operator,
        bool approved
    );

    function setRecord(
        bytes32 node,
        address owner,
        address resolver,
        uint64 ttl
    ) external;

    function setSubnodeRecord(
        bytes32 node,
        bytes32 label,
        address owner,
        address resolver,
        uint64 ttl
    ) external;

    function setSubnodeOwner(
        bytes32 node,
        bytes32 label,
        address owner
    ) external returns (bytes32);

    function setResolver(bytes32 node, address resolver) external;

    function setOwner(bytes32 node, address owner) external;

    function setTTL(bytes32 node, uint64 ttl) external;

    function setApprovalForAll(address operator, bool approved) external;

    function owner(bytes32 node) external view returns (address);

    function resolver(bytes32 node) external view returns (address);

    function ttl(bytes32 node) external view returns (uint64);

    function recordExists(bytes32 node) external view returns (bool);

    function isApprovedForAll(address owner, address operator)
        external
        view
        returns (bool);
}


// File contracts/distribution/interface/IDistributionStorage.sol


interface IDistributionStorage {
    function registered(address claimant) external view returns (uint256);
}


// File contracts/distribution/DistributionStorage.sol



/**
 * @title DistributionStorage
 * @author MirrorXYZ
 */
contract DistributionStorage is IDistributionStorage {
    // ============ Immutable Storage ============

    // The node of the root name (e.g. namehash(mirror.xyz))
    bytes32 public immutable rootNode;
    /**
     * The address of the public ENS registry.
     * @dev Dependency-injectable for testing purposes, but otherwise this is the
     * canonical ENS registry at 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e.
     */
    IENS public immutable ensRegistry;

    // ============ Mutable Storage ============

    // The address for Mirror team and investors.
    address team;
    // The address of the governance token that this contract is allowed to mint.
    address token;
    // The address that is allowed to distribute.
    address treasury;
    // The amount that has been contributed to the treasury.
    mapping(address => uint256) public contributions;
    mapping(address => uint256) public awards;
    // The number of rewards that are created per 1 ETH contribution to the treasury.
    uint256 contributionsFactor = 1000;
    // The amount that has been claimed per address.
    mapping(address => uint256) public claimed;
    // The block number that an address last claimed
    mapping(address => uint256) public lastClaimed;
    // The block number that an address registered
    mapping(address => uint256) public override registered;
    // Banned accounts
    mapping(address => bool) public banned;
    // The percentage of tokens issued that are taken by the Mirror team.
    uint256 teamRatio = 40;
    uint256 public registrationReward = 100 * 1e18;
    uint256 public registeredMembers;

    struct DistributionEpoch {
        uint256 startBlock;
        uint256 claimablePerBlock;
    }

    DistributionEpoch[] public epochs;
    uint256 numEpochs = 0;

    constructor(bytes32 rootNode_, address ensRegistry_) {
        rootNode = rootNode_;
        ensRegistry = IENS(ensRegistry_);
    }
}


// File contracts/lib/upgradable/interface/IBeacon.sol


interface IBeacon {
    /// @notice Logic for this contract.
    function logic() external view returns (address);

    /// @notice Emitted when the logic is updated.
    event Update(address oldLogic, address newLogic);

    /// @notice Updates logic address.
    function update(address newLogic) external;
}


// File contracts/lib/upgradable/BeaconStorage.sol


contract BeaconStorage {
    /// @notice Holds the address of the upgrade beacon
    address internal immutable beacon;

    constructor(address beacon_) {
        beacon = beacon_;
    }
}


// File contracts/lib/Pausable.sol


interface IPausable {
    /// @notice Emitted when the pause is triggered by `account`.
    event Paused(address account);

    /// @notice Emitted when the pause is lifted by `account`.
    event Unpaused(address account);

    function paused() external returns (bool);
}

contract Pausable is IPausable {
    bool public override paused;

    // Modifiers

    modifier whenNotPaused() {
        require(!paused, "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(paused, "Pausable: not paused");
        _;
    }

    /// @notice Initializes the contract in unpaused state.
    constructor(bool paused_) {
        paused = paused_;
    }

    // ============ Internal Functions ============

    function _pause() internal whenNotPaused {
        paused = true;

        emit Paused(msg.sender);
    }

    function _unpause() internal whenPaused {
        paused = false;

        emit Unpaused(msg.sender);
    }
}


// File contracts/distribution/DistributionProxy.sol







/**
 * @title DistributionProxy
 * @author MirrorXYZ
 */
contract DistributionProxy is
    BeaconStorage,
    Governable,
    DistributionStorage,
    Pausable
{
    constructor(
        address beacon_,
        address owner_,
        address team_,
        address token_,
        bytes32 rootNode_,
        address ensRegistry_,
        address treasury_
    )
        BeaconStorage(beacon_)
        Governable(owner_)
        DistributionStorage(rootNode_, ensRegistry_)
        Pausable(true)
    {
        // Initialize the logic, supplying initialization calldata.
        team = team_;
        token = token_;
        treasury = treasury_;
    }

    fallback() external payable {
        address logic = IBeacon(beacon).logic();

        assembly {
            let ptr := mload(0x40)
            calldatacopy(ptr, 0, calldatasize())
            let result := delegatecall(gas(), logic, ptr, calldatasize(), 0, 0)
            let size := returndatasize()
            returndatacopy(ptr, 0, size)

            switch result
            case 0 {
                revert(ptr, size)
            }
            default {
                return(ptr, size)
            }
        }
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"beacon_","type":"address"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"team_","type":"address"},{"internalType":"address","name":"token_","type":"address"},{"internalType":"bytes32","name":"rootNode_","type":"bytes32"},{"internalType":"address","name":"ensRegistry_","type":"address"},{"internalType":"address","name":"treasury_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"awards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"banned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"governor_","type":"address"}],"name":"changeGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"contributions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ensRegistry","outputs":[{"internalType":"contract IENS","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"epochs","outputs":[{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"claimablePerBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNextOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"registered","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registeredMembers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registrationReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rootNode","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nextOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040526103e86008556028600d5568056bc75e2d63100000600e55600060115534801561002d57600080fd5b50604051610bc4380380610bc483398101604081905261004c9161013d565b606087901b6001600160601b031916608052600080546001600160a01b0319166001600160a01b0388169081178255604051600192869286928b928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505060a09190915260601b6001600160601b03191660c0526012805460ff1916911515919091179055600380546001600160a01b03199081166001600160a01b03978816179091556004805482169587169590951790945560058054909416941693909317909155506101bc92505050565b80516001600160a01b038116811461013857600080fd5b919050565b600080600080600080600060e0888a03121561015857600080fd5b61016188610121565b965061016f60208901610121565b955061017d60408901610121565b945061018b60608901610121565b9350608088015192506101a060a08901610121565b91506101ae60c08901610121565b905092959891949750929550565b60805160601c60a05160c05160601c6109d36101f16000396000610389015260006105680152600061018401526109d36000f3fe6080604052600436106101795760003560e01c80638f32d59b116100cb578063c884ef831161007f578063eea4a0a311610059578063eea4a0a314610520578063f2fde38b14610536578063faff50a81461055657610180565b8063c884ef83146104b3578063e4c0aaf4146104e0578063ed459df21461050057610180565b8063b2dd5c07116100b0578063b2dd5c0714610431578063c6b61e4c1461045e578063c7af33521461049357610180565b80638f32d59b146103e15780639c8d83bb1461040157610180565b8063715018a61161012d5780637d73b231116101075780637d73b23114610377578063865909f6146103ab5780638da5cb5b146103c157610180565b8063715018a61461032057806379ba5097146103355780637b0e5f561461034a57610180565b806323452b9c1161015e57806323452b9c146102b257806342e94c90146102c95780635c975abb146102f657610180565b8063013eba921461023a5780630c340a241461027a57610180565b3661018057005b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d7dfa0dd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101db57600080fd5b505afa1580156101ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610213919061094f565b905060405136600082376000803683855af43d806000843e818015610236578184f35b8184fd5b34801561024657600080fd5b5061026761025536600461092b565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561028657600080fd5b5060025461029a906001600160a01b031681565b6040516001600160a01b039091168152602001610271565b3480156102be57600080fd5b506102c761058a565b005b3480156102d557600080fd5b506102676102e436600461092b565b60066020526000908152604090205481565b34801561030257600080fd5b506012546103109060ff1681565b6040519015158152602001610271565b34801561032c57600080fd5b506102c7610608565b34801561034157600080fd5b506102c76106ab565b34801561035657600080fd5b5061026761036536600461092b565b60076020526000908152604090205481565b34801561038357600080fd5b5061029a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b757600080fd5b50610267600e5481565b3480156103cd57600080fd5b5060005461029a906001600160a01b031681565b3480156103ed57600080fd5b506000546001600160a01b03163314610310565b34801561040d57600080fd5b5061031061041c36600461092b565b600c6020526000908152604090205460ff1681565b34801561043d57600080fd5b5061026761044c36600461092b565b600b6020526000908152604090205481565b34801561046a57600080fd5b5061047e61047936600461096c565b610780565b60408051928352602083019190915201610271565b34801561049f57600080fd5b506002546001600160a01b03163314610310565b3480156104bf57600080fd5b506102676104ce36600461092b565b60096020526000908152604090205481565b3480156104ec57600080fd5b506102c76104fb36600461092b565b6107ae565b34801561050c57600080fd5b506001546001600160a01b03163314610310565b34801561052c57600080fd5b50610267600f5481565b34801561054257600080fd5b506102c761055136600461092b565b61084c565b34801561056257600080fd5b506102677f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031633146105e95760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b031633146106625760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016105e0565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6001546001600160a01b0316331461072b5760405162461bcd60e51b815260206004820152602c60248201527f63757272656e74206f776e6572206d757374207365742063616c6c657220617360448201527f206e657874206f776e65722e000000000000000000000000000000000000000060648201526084016105e0565b6001805473ffffffffffffffffffffffffffffffffffffffff19908116909155600080543392168217815560405182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3565b6010818154811061079057600080fd5b60009182526020909120600290910201805460019091015490915082565b6000546001600160a01b03163314806107d157506002546001600160a01b031633145b61081d5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016105e0565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146108a65760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016105e0565b6001600160a01b0381166108fc5760405162461bcd60e51b815260206004820152601f60248201527f4e657874206f776e657220697320746865207a65726f20616464726573732e0060448201526064016105e0565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60006020828403121561093d57600080fd5b813561094881610985565b9392505050565b60006020828403121561096157600080fd5b815161094881610985565b60006020828403121561097e57600080fd5b5035919050565b6001600160a01b038116811461099a57600080fd5b5056fea2646970667358221220bbec471c3704aac83e5b92b3823ff13a9e0e7609b97c696064a8597b5aaaa68f64736f6c6343000806003300000000000000000000000025f4da52b8fcd80b38df63733e2406ddc2303d2b0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b570000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57000000000000000000000000b19d71a47569653e2069ac33d9d654e2eaabdb7f1aaf79d9b3323ad0212f6a2f34f8c627d8d45e45a55c774d080e3077334bfad900000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e000000000000000000000000138c3d30a724de380739aad9ec94e59e613a9008

Deployed Bytecode

0x6080604052600436106101795760003560e01c80638f32d59b116100cb578063c884ef831161007f578063eea4a0a311610059578063eea4a0a314610520578063f2fde38b14610536578063faff50a81461055657610180565b8063c884ef83146104b3578063e4c0aaf4146104e0578063ed459df21461050057610180565b8063b2dd5c07116100b0578063b2dd5c0714610431578063c6b61e4c1461045e578063c7af33521461049357610180565b80638f32d59b146103e15780639c8d83bb1461040157610180565b8063715018a61161012d5780637d73b231116101075780637d73b23114610377578063865909f6146103ab5780638da5cb5b146103c157610180565b8063715018a61461032057806379ba5097146103355780637b0e5f561461034a57610180565b806323452b9c1161015e57806323452b9c146102b257806342e94c90146102c95780635c975abb146102f657610180565b8063013eba921461023a5780630c340a241461027a57610180565b3661018057005b60007f00000000000000000000000025f4da52b8fcd80b38df63733e2406ddc2303d2b6001600160a01b031663d7dfa0dd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101db57600080fd5b505afa1580156101ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610213919061094f565b905060405136600082376000803683855af43d806000843e818015610236578184f35b8184fd5b34801561024657600080fd5b5061026761025536600461092b565b600a6020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561028657600080fd5b5060025461029a906001600160a01b031681565b6040516001600160a01b039091168152602001610271565b3480156102be57600080fd5b506102c761058a565b005b3480156102d557600080fd5b506102676102e436600461092b565b60066020526000908152604090205481565b34801561030257600080fd5b506012546103109060ff1681565b6040519015158152602001610271565b34801561032c57600080fd5b506102c7610608565b34801561034157600080fd5b506102c76106ab565b34801561035657600080fd5b5061026761036536600461092b565b60076020526000908152604090205481565b34801561038357600080fd5b5061029a7f00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e81565b3480156103b757600080fd5b50610267600e5481565b3480156103cd57600080fd5b5060005461029a906001600160a01b031681565b3480156103ed57600080fd5b506000546001600160a01b03163314610310565b34801561040d57600080fd5b5061031061041c36600461092b565b600c6020526000908152604090205460ff1681565b34801561043d57600080fd5b5061026761044c36600461092b565b600b6020526000908152604090205481565b34801561046a57600080fd5b5061047e61047936600461096c565b610780565b60408051928352602083019190915201610271565b34801561049f57600080fd5b506002546001600160a01b03163314610310565b3480156104bf57600080fd5b506102676104ce36600461092b565b60096020526000908152604090205481565b3480156104ec57600080fd5b506102c76104fb36600461092b565b6107ae565b34801561050c57600080fd5b506001546001600160a01b03163314610310565b34801561052c57600080fd5b50610267600f5481565b34801561054257600080fd5b506102c761055136600461092b565b61084c565b34801561056257600080fd5b506102677f1aaf79d9b3323ad0212f6a2f34f8c627d8d45e45a55c774d080e3077334bfad981565b6000546001600160a01b031633146105e95760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b031633146106625760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016105e0565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6001546001600160a01b0316331461072b5760405162461bcd60e51b815260206004820152602c60248201527f63757272656e74206f776e6572206d757374207365742063616c6c657220617360448201527f206e657874206f776e65722e000000000000000000000000000000000000000060648201526084016105e0565b6001805473ffffffffffffffffffffffffffffffffffffffff19908116909155600080543392168217815560405182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3565b6010818154811061079057600080fd5b60009182526020909120600290910201805460019091015490915082565b6000546001600160a01b03163314806107d157506002546001600160a01b031633145b61081d5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016105e0565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146108a65760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016105e0565b6001600160a01b0381166108fc5760405162461bcd60e51b815260206004820152601f60248201527f4e657874206f776e657220697320746865207a65726f20616464726573732e0060448201526064016105e0565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60006020828403121561093d57600080fd5b813561094881610985565b9392505050565b60006020828403121561096157600080fd5b815161094881610985565b60006020828403121561097e57600080fd5b5035919050565b6001600160a01b038116811461099a57600080fd5b5056fea2646970667358221220bbec471c3704aac83e5b92b3823ff13a9e0e7609b97c696064a8597b5aaaa68f64736f6c63430008060033

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

00000000000000000000000025f4da52b8fcd80b38df63733e2406ddc2303d2b0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b570000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57000000000000000000000000b19d71a47569653e2069ac33d9d654e2eaabdb7f1aaf79d9b3323ad0212f6a2f34f8c627d8d45e45a55c774d080e3077334bfad900000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e000000000000000000000000138c3d30a724de380739aad9ec94e59e613a9008

-----Decoded View---------------
Arg [0] : beacon_ (address): 0x25f4Da52b8fCd80b38DF63733e2406ddC2303D2B
Arg [1] : owner_ (address): 0x2330ee705fFD040bB0cbA8CB7734Dfe00E7C4b57
Arg [2] : team_ (address): 0x2330ee705fFD040bB0cbA8CB7734Dfe00E7C4b57
Arg [3] : token_ (address): 0xB19D71A47569653e2069Ac33D9d654e2EaabdB7f
Arg [4] : rootNode_ (bytes32): 0x1aaf79d9b3323ad0212f6a2f34f8c627d8d45e45a55c774d080e3077334bfad9
Arg [5] : ensRegistry_ (address): 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Arg [6] : treasury_ (address): 0x138c3d30A724de380739aad9ec94E59e613a9008

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 00000000000000000000000025f4da52b8fcd80b38df63733e2406ddc2303d2b
Arg [1] : 0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57
Arg [2] : 0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57
Arg [3] : 000000000000000000000000b19d71a47569653e2069ac33d9d654e2eaabdb7f
Arg [4] : 1aaf79d9b3323ad0212f6a2f34f8c627d8d45e45a55c774d080e3077334bfad9
Arg [5] : 00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e
Arg [6] : 000000000000000000000000138c3d30a724de380739aad9ec94e59e613a9008


Deployed Bytecode Sourcemap

9708:1212:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10375:13;10399:6;-1:-1:-1;;;;;10391:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10375:39;;10468:4;10462:11;10508:14;10505:1;10500:3;10487:36;10602:1;10599;10583:14;10578:3;10571:5;10564;10551:53;10630:16;10683:4;10680:1;10675:3;10660:28;10711:6;10731:58;;;;10842:4;10837:3;10830:17;10731:58;10769:4;10764:3;10757:17;7142:46;;;;;;;;;;-1:-1:-1;7142:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1276:25:1;;;1264:2;1249:18;7142:46:0;;;;;;;;2514:32;;;;;;;;;;-1:-1:-1;2514:32:0;;;;-1:-1:-1;;;;;2514:32:0;;;;;;-1:-1:-1;;;;;871:55:1;;;853:74;;841:2;826:18;2514:32:0;808:125:1;1117:89:0;;;;;;;;;;;;;:::i;:::-;;6754:48;;;;;;;;;;-1:-1:-1;6754:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;8901:27;;;;;;;;;;-1:-1:-1;8901:27:0;;;;;;;;;;;1103:14:1;;1096:22;1078:41;;1066:2;1051:18;8901:27:0;1033:92:1;1555:142:0;;;;;;;;;;;;;:::i;1290:173::-;;;;;;;;;;;;;:::i;6809:41::-;;;;;;;;;;-1:-1:-1;6809:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;6351:33;;;;;;;;;;;;;;;7481:46;;;;;;;;;;;;;;;;96:20;;;;;;;;;;-1:-1:-1;96:20:0;;;;-1:-1:-1;;;;;96:20:0;;;1785:91;;;;;;;;;;-1:-1:-1;1825:4:0;1863:5;-1:-1:-1;;;;;1863:5:0;1849:10;:19;1785:91;;7332:38;;;;;;;;;;-1:-1:-1;7332:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7247:54;;;;;;;;;;-1:-1:-1;7247:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;7681:33;;;;;;;;;;-1:-1:-1;7681:33:0;;;;;:::i;:::-;;:::i;:::-;;;;3390:25:1;;;3446:2;3431:18;;3424:34;;;;3363:18;7681:33:0;3345:119:1;3166:106:0;;;;;;;;;;-1:-1:-1;3256:8:0;;-1:-1:-1;;;;;3256:8:0;3242:10;:22;3166:106;;7039:42;;;;;;;;;;-1:-1:-1;7039:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;2991:113;;;;;;;;;;-1:-1:-1;2991:113:0;;;;;:::i;:::-;;:::i;1961:99::-;;;;;;;;;;-1:-1:-1;2043:9:0;;-1:-1:-1;;;;;2043:9:0;2029:10;:23;1961:99;;7534:32;;;;;;;;;;;;;;;;841:188;;;;;;;;;;-1:-1:-1;841:188:0;;;;;:::i;:::-;;:::i;6084:33::-;;;;;;;;;;;;;;;1117:89;1825:4;1863:5;-1:-1:-1;;;;;1863:5:0;1849:10;:19;326:46;;;;-1:-1:-1;;;326:46:0;;2530:2:1;326:46:0;;;2512:21:1;2569:2;2549:18;;;2542:30;2608:26;2588:18;;;2581:54;2652:18;;326:46:0;;;;;;;;;1189:9:::1;1182:16:::0;;-1:-1:-1;;1182:16:0::1;::::0;;1117:89::o;1555:142::-;1825:4;1863:5;-1:-1:-1;;;;;1863:5:0;1849:10;:19;326:46;;;;-1:-1:-1;;;326:46:0;;2530:2:1;326:46:0;;;2512:21:1;2569:2;2549:18;;;2542:30;2608:26;2588:18;;;2581:54;2652:18;;326:46:0;2502:174:1;326:46:0;1630:1:::1;1614:18:::0;;-1:-1:-1;;1614:18:0::1;::::0;;1650:39:::1;::::0;1630:1;;1650:39:::1;::::0;1630:1;;1650:39:::1;1555:142::o:0;1290:173::-;2043:9;;-1:-1:-1;;;;;2043:9:0;2029:10;:23;436:70;;;;-1:-1:-1;;;436:70:0;;1757:2:1;436:70:0;;;1739:21:1;1796:2;1776:18;;;1769:30;1835:34;1815:18;;;1808:62;1906:14;1886:18;;;1879:42;1938:19;;436:70:0;1729:234:1;436:70:0;1358:9:::1;1351:16:::0;;-1:-1:-1;;1351:16:0;;::::1;::::0;;;-1:-1:-1;1380:18:0;;1388:10:::1;1380:18:::0;::::1;::::0;::::1;::::0;;1416:39:::1;::::0;1388:10;;1416:39:::1;::::0;::::1;1290:173::o:0;7681:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7681:33:0;:::o;2991:113::-;1825:4;1863:5;-1:-1:-1;;;;;1863:5:0;1849:10;:19;2646:25;;;-1:-1:-1;3256:8:0;;-1:-1:-1;;;;;3256:8:0;3242:10;:22;2659:12;2638:62;;;;-1:-1:-1;;;2638:62:0;;2883:2:1;2638:62:0;;;2865:21:1;2922:2;2902:18;;;2895:30;2961:26;2941:18;;;2934:54;3005:18;;2638:62:0;2855:174:1;2638:62:0;3076:8:::1;:20:::0;;-1:-1:-1;;3076:20:0::1;-1:-1:-1::0;;;;;3076:20:0;;;::::1;::::0;;;::::1;::::0;;2991:113::o;841:188::-;1825:4;1863:5;-1:-1:-1;;;;;1863:5:0;1849:10;:19;326:46;;;;-1:-1:-1;;;326:46:0;;2530:2:1;326:46:0;;;2512:21:1;2569:2;2549:18;;;2542:30;2608:26;2588:18;;;2581:54;2652:18;;326:46:0;2502:174:1;326:46:0;-1:-1:-1;;;;;926:24:0;::::1;918:68;;;::::0;-1:-1:-1;;;918:68:0;;2170:2:1;918:68:0::1;::::0;::::1;2152:21:1::0;2209:2;2189:18;;;2182:30;2248:33;2228:18;;;2221:61;2299:18;;918:68:0::1;2142:181:1::0;918:68:0::1;999:9;:22:::0;;-1:-1:-1;;999:22:0::1;-1:-1:-1::0;;;;;999:22:0;;;::::1;::::0;;;::::1;::::0;;841:188::o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;142:1;139;132:12;94:2;181:9;168:23;200:31;225:5;200:31;:::i;:::-;250:5;84:177;-1:-1:-1;;;84:177:1:o;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:2;;;405:1;402;395:12;357:2;437:9;431:16;456:31;481:5;456:31;:::i;522:180::-;581:6;634:2;622:9;613:7;609:23;605:32;602:2;;;650:1;647;640:12;602:2;-1:-1:-1;673:23:1;;592:110;-1:-1:-1;592:110:1:o;3469:154::-;-1:-1:-1;;;;;3548:5:1;3544:54;3537:5;3534:65;3524:2;;3613:1;3610;3603:12;3524:2;3514:109;:::o

Swarm Source

ipfs://bbec471c3704aac83e5b92b3823ff13a9e0e7609b97c696064a8597b5aaaa68f

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.