ETH Price: $3,308.66 (-3.02%)
Gas: 22 Gwei

Contract

0x8c82A71B629DB618847682cD3155e6742304B710
 

Overview

ETH Balance

0.379972 ETH

Eth Value

$1,257.20 (@ $3,308.66/ETH)

Token Holdings

Transaction Hash
Method
Block
From
To
Value
Withdraw178794142023-08-09 19:25:35328 days ago1691609135IN
0x8c82A71B...42304B710
0 ETH0.0011855823.5740594
Withdraw178794092023-08-09 19:24:35328 days ago1691609075IN
0x8c82A71B...42304B710
0 ETH0.0010318320.51687551
Withdraw178794052023-08-09 19:23:47328 days ago1691609027IN
0x8c82A71B...42304B710
0 ETH0.0008531520.91481479
Withdraw172955272023-05-19 19:12:35410 days ago1684523555IN
0x8c82A71B...42304B710
0 ETH0.0027050753.78731992
Withdraw172954782023-05-19 19:02:47410 days ago1684522967IN
0x8c82A71B...42304B710
0 ETH0.0023834947.39318187
Withdraw172954642023-05-19 18:59:59410 days ago1684522799IN
0x8c82A71B...42304B710
0 ETH0.0022415844.57137152
Pay Fee171967702023-05-05 20:20:35424 days ago1683318035IN
0x8c82A71B...42304B710
0.008 ETH0.00841657151.81138333
Pay Fee171958972023-05-05 17:24:11424 days ago1683307451IN
0x8c82A71B...42304B710
0.008 ETH0.0122287220.57157566
Register Vault171883252023-05-04 15:54:47425 days ago1683215687IN
0x8c82A71B...42304B710
0 ETH0.0097538898.61371182
Pay Fee171541812023-04-29 20:42:23430 days ago1682800943IN
0x8c82A71B...42304B710
0.008 ETH0.0018004532.4750935
Pay Fee171489532023-04-29 3:02:11431 days ago1682737331IN
0x8c82A71B...42304B710
0.008 ETH0.0017722431.96635017
Register Vault171456032023-04-28 15:45:59431 days ago1682696759IN
0x8c82A71B...42304B710
0 ETH0.0038589539.01484896
Withdraw171254452023-04-25 19:47:11434 days ago1682452031IN
0x8c82A71B...42304B710
0 ETH0.0019547137.02673263
Pay Fee171253122023-04-25 19:20:23434 days ago1682450423IN
0x8c82A71B...42304B710
0.002 ETH0.0020525237.02171169
Pay Fee171206422023-04-25 3:35:47435 days ago1682393747IN
0x8c82A71B...42304B710
0.002 ETH0.0018247532.91344333
Pay Fee171180372023-04-24 18:50:35435 days ago1682362235IN
0x8c82A71B...42304B710
0.002 ETH0.0025527746.04497364
Pay Fee171157232023-04-24 11:02:47436 days ago1682334167IN
0x8c82A71B...42304B710
0.002 ETH0.0022025939.72869379
Pay Fee171094112023-04-23 13:48:59437 days ago1682257739IN
0x8c82A71B...42304B710
0.002 ETH0.0020758337.44219041
Pay Fee171091272023-04-23 12:51:35437 days ago1682254295IN
0x8c82A71B...42304B710
0.002 ETH0.0020731637.39412201
Pay Fee171048672023-04-22 22:30:23437 days ago1682202623IN
0x8c82A71B...42304B710
0.002 ETH0.0025973846.84956699
Pay Fee171034072023-04-22 17:35:47437 days ago1682184947IN
0x8c82A71B...42304B710
0.002 ETH0.0041617175.06560498
Pay Fee171024302023-04-22 14:19:11438 days ago1682173151IN
0x8c82A71B...42304B710
0.002 ETH0.0018646633.63327925
Pay Fee170986322023-04-22 1:32:23438 days ago1682127143IN
0x8c82A71B...42304B710
0.002 ETH0.0017464631.50137374
Pay Fee170972382023-04-21 20:51:23438 days ago1682110283IN
0x8c82A71B...42304B710
0.002 ETH0.0020487636.95404318
Register Vault170958822023-04-21 16:15:59438 days ago1682093759IN
0x8c82A71B...42304B710
0 ETH0.0039444439.87916237
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
178794142023-08-09 19:25:35328 days ago1691609135
0x8c82A71B...42304B710
0.016 ETH
178794092023-08-09 19:24:35328 days ago1691609075
0x8c82A71B...42304B710
0.016 ETH
172955272023-05-19 19:12:35410 days ago1684523555
0x8c82A71B...42304B710
0.008 ETH
172954782023-05-19 19:02:47410 days ago1684522967
0x8c82A71B...42304B710
0.016 ETH
172954642023-05-19 18:59:59410 days ago1684522799
0x8c82A71B...42304B710
0.008 ETH
171254452023-04-25 19:47:11434 days ago1682452031
0x8c82A71B...42304B710
0.318 ETH
170360482023-04-13 3:05:11447 days ago1681355111
0x8c82A71B...42304B710
1.238 ETH
169347762023-03-29 18:39:11461 days ago1680115151
0x8c82A71B...42304B710
0.856 ETH
167987542023-03-10 15:56:11480 days ago1678463771
0x8c82A71B...42304B710
0.024 ETH
167939192023-03-09 23:31:11481 days ago1678404671
0x8c82A71B...42304B710
0.04 ETH
167934842023-03-09 22:02:59481 days ago1678399379
0x8c82A71B...42304B710
0.024 ETH
167934712023-03-09 22:00:23481 days ago1678399223
0x8c82A71B...42304B710
0.008 ETH
167359242023-03-01 19:44:23489 days ago1677699863
0x8c82A71B...42304B710
1.114 ETH
167359122023-03-01 19:41:59489 days ago1677699719
0x8c82A71B...42304B710
0.38 ETH
165858932023-02-08 18:40:47510 days ago1675881647
0x8c82A71B...42304B710
0.304 ETH
165858752023-02-08 18:36:59510 days ago1675881419
0x8c82A71B...42304B710
0.168 ETH
165857022023-02-08 18:01:23510 days ago1675879283
0x8c82A71B...42304B710
0.49 ETH
165005082023-01-27 20:23:11522 days ago1674850991
0x8c82A71B...42304B710
0.048 ETH
165005072023-01-27 20:22:59522 days ago1674850979
0x8c82A71B...42304B710
0.008 ETH
164011902023-01-13 23:34:35536 days ago1673652875
0x8c82A71B...42304B710
0.016 ETH
162939622022-12-30 0:20:59551 days ago1672359659
0x8c82A71B...42304B710
0.024 ETH
162939602022-12-30 0:20:35551 days ago1672359635
0x8c82A71B...42304B710
0.016 ETH
162422332022-12-22 19:07:59558 days ago1671736079
0x8c82A71B...42304B710
0.044138 ETH
161881872022-12-15 6:04:47566 days ago1671084287
0x8c82A71B...42304B710
0.032 ETH
161827622022-12-14 11:53:59567 days ago1671018839
0x8c82A71B...42304B710
0.016 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FeeCollector

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 4 : FeeCollector.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

import { IFeeCollector } from "./interfaces/IFeeCollector.sol";
import { LibAddress } from "./lib/LibAddress.sol";
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";

contract FeeCollector is IFeeCollector {
    using LibAddress for address payable;

    address payable public guildFeeCollector;
    uint96 public guildSharex100;

    address payable public poapFeeCollector;
    uint96 public poapSharex100;

    Vault[] internal vaults;

    /// @param guildFeeCollector_ The address that will receive Guild's share from the funds.
    /// @param guildSharex100_ The percentage of Guild's share multiplied by 100 (e.g 500 for a 5% cut).
    /// @param poapFeeCollector_ The address that will receive POAP's share from the funds.
    /// @param poapSharex100_ The percentage of POAP's share multiplied by 100 (e.g 500 for a 5% cut).
    constructor(
        address payable guildFeeCollector_,
        uint96 guildSharex100_,
        address payable poapFeeCollector_,
        uint96 poapSharex100_
    ) {
        guildFeeCollector = guildFeeCollector_;
        guildSharex100 = guildSharex100_;
        poapFeeCollector = poapFeeCollector_;
        poapSharex100 = poapSharex100_;
    }

    function registerVault(
        uint256 eventId,
        address owner,
        address token,
        uint128 fee
    ) external {
        Vault storage vault = vaults.push();
        vault.eventId = eventId;
        vault.owner = owner;
        vault.token = token;
        vault.fee = fee;

        emit VaultRegistered(vaults.length - 1, eventId, owner, token, fee);
    }

    function payFee(uint256 vaultId) external payable {
        if (vaultId >= vaults.length) revert VaultDoesNotExist(vaultId);

        Vault storage vault = vaults[vaultId];
        uint256 requiredAmount = vault.fee;
        vault.collected += uint128(requiredAmount);
        vault.paid[msg.sender] = true;

        // If the tokenAddress is zero, the payment should be in Ether, otherwise in ERC20.
        address tokenAddress = vault.token;
        if (tokenAddress == address(0)) {
            if (msg.value != requiredAmount) revert IncorrectFee(vaultId, msg.value, requiredAmount);
        } else {
            if (msg.value != 0) revert IncorrectFee(vaultId, msg.value, 0);
            if (!IERC20(vault.token).transferFrom(msg.sender, address(this), requiredAmount))
                revert TransferFailed(msg.sender, address(this));
        }

        emit FeeReceived(vaultId, msg.sender, requiredAmount);
    }

    function withdraw(uint256 vaultId) external {
        if (vaultId >= vaults.length) revert VaultDoesNotExist(vaultId);

        Vault storage vault = vaults[vaultId];
        uint256 collected = vault.collected;
        vault.collected = 0;

        // Calculate fees to receive. Guild's and Poap's part is truncated - the remainder goes to the owner (max 2 wei).
        uint256 guildAmount = (collected * guildSharex100) / 10000;
        uint256 poapAmount = (collected * poapSharex100) / 10000;
        uint256 ownerAmount = collected - poapAmount - guildAmount;

        // If the tokenAddress is zero, the collected fees are in Ether, otherwise in ERC20.
        address tokenAddress = vault.token;
        if (tokenAddress == address(0)) _withdrawEther(guildAmount, poapAmount, ownerAmount, vault.owner);
        else _withdrawToken(guildAmount, poapAmount, ownerAmount, vault.owner, tokenAddress);

        emit Withdrawn(vaultId, guildAmount, poapAmount, ownerAmount);
    }

    function setGuildFeeCollector(address payable newFeeCollector) external {
        if (msg.sender != guildFeeCollector) revert AccessDenied(msg.sender, guildFeeCollector);
        guildFeeCollector = newFeeCollector;
        emit GuildFeeCollectorChanged(newFeeCollector);
    }

    function setGuildSharex100(uint96 newShare) external {
        if (msg.sender != guildFeeCollector) revert AccessDenied(msg.sender, guildFeeCollector);
        guildSharex100 = newShare;
        emit GuildSharex100Changed(newShare);
    }

    function setPoapFeeCollector(address payable newFeeCollector) external {
        if (msg.sender != poapFeeCollector) revert AccessDenied(msg.sender, poapFeeCollector);
        poapFeeCollector = newFeeCollector;
        emit PoapFeeCollectorChanged(newFeeCollector);
    }

    function setPoapSharex100(uint96 newShare) external {
        if (msg.sender != poapFeeCollector) revert AccessDenied(msg.sender, poapFeeCollector);
        poapSharex100 = newShare;
        emit PoapSharex100Changed(newShare);
    }

    function getVault(uint256 vaultId)
        external
        view
        returns (
            uint256 eventId,
            address owner,
            address token,
            uint128 fee,
            uint128 collected
        )
    {
        if (vaultId >= vaults.length) revert VaultDoesNotExist(vaultId);
        Vault storage vault = vaults[vaultId];
        return (vault.eventId, vault.owner, vault.token, vault.fee, vault.collected);
    }

    function hasPaid(uint256 vaultId, address account) external view returns (bool paid) {
        if (vaultId >= vaults.length) revert VaultDoesNotExist(vaultId);
        return vaults[vaultId].paid[account];
    }

    function _withdrawEther(
        uint256 guildAmount,
        uint256 poapAmount,
        uint256 ownerAmount,
        address eventOwner
    ) internal {
        guildFeeCollector.sendEther(guildAmount);
        poapFeeCollector.sendEther(poapAmount);
        payable(eventOwner).sendEther(ownerAmount);
    }

    function _withdrawToken(
        uint256 guildAmount,
        uint256 poapAmount,
        uint256 ownerAmount,
        address eventOwner,
        address tokenAddress
    ) internal {
        IERC20 token = IERC20(tokenAddress);
        if (!token.transfer(guildFeeCollector, guildAmount)) revert TransferFailed(address(this), guildFeeCollector);
        if (!token.transfer(poapFeeCollector, poapAmount)) revert TransferFailed(address(this), poapFeeCollector);
        if (!token.transfer(eventOwner, ownerAmount)) revert TransferFailed(address(this), eventOwner);
    }
}

File 2 of 4 : IFeeCollector.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IFeeCollector {
    struct Vault {
        uint256 eventId;
        address owner;
        address token;
        uint128 fee;
        uint128 collected;
        mapping(address => bool) paid;
    }

    /// @notice Registers a POAP drop and it's fee.
    /// @param eventId The id of the POAP drop.
    /// @param owner The address that receives the fees from the drop.
    /// @param token The zero address for Ether, otherwise an ERC20 token.
    /// @param fee The amount of fee to pay in wei.
    function registerVault(
        uint256 eventId,
        address owner,
        address token,
        uint128 fee
    ) external;

    /// @notice Registers the paid fee, both in Ether or ERC20.
    /// @param vaultId The id of the vault to pay to.
    function payFee(uint256 vaultId) external payable;

    /// @notice Sets the address that receives Guild's share from the funds.
    /// @dev Callable only by the current Guild fee collector.
    /// @param newFeeCollector The new address of guildFeeCollector.
    function setGuildFeeCollector(address payable newFeeCollector) external;

    /// @notice Sets Guild's share from the funds.
    /// @dev Callable only by the Guild fee collector.
    /// @param newShare The percentual value multiplied by 100.
    function setGuildSharex100(uint96 newShare) external;

    /// @notice Sets the address that receives POAP's share from the funds.
    /// @dev Callable only by the current POAP fee collector.
    /// @param newFeeCollector The new address of poapFeeCollector.
    function setPoapFeeCollector(address payable newFeeCollector) external;

    /// @notice Sets POAP's share from the funds.
    /// @dev Callable only by the POAP fee collector.
    /// @param newShare The percentual value multiplied by 100.
    function setPoapSharex100(uint96 newShare) external;

    /// @notice Distributes the funds from a vault to the fee collectors and the owner.
    /// @param vaultId The id of the vault whose funds should be distributed.
    function withdraw(uint256 vaultId) external;

    /// @notice Returns a vault's details.
    /// @param vaultId The id of the queried vault.
    /// @return eventId The id of the POAP drop.
    /// @return owner The owner of the vault who recieves the funds.
    /// @return token The address of the token to receive funds in (the zero address in case of Ether).
    /// @return fee The amount of required funds in wei.
    /// @return collected The amount of already collected funds.
    function getVault(uint256 vaultId)
        external
        view
        returns (
            uint256 eventId,
            address owner,
            address token,
            uint128 fee,
            uint128 collected
        );

    /// @notice Returns if an account has paid the fee to a vault.
    /// @param vaultId The id of the queried vault.
    /// @param account The address of the queried account.
    function hasPaid(uint256 vaultId, address account) external view returns (bool paid);

    /// @notice Returns the address that receives Guild's share from the funds.
    function guildFeeCollector() external view returns (address payable);

    /// @notice Returns the percentage of Guild's share multiplied by 100.
    function guildSharex100() external view returns (uint96);

    /// @notice Returns the address that receives POAP's share from the funds.
    function poapFeeCollector() external view returns (address payable);

    /// @notice Returns the percentage of POAP's share multiplied by 100.
    function poapSharex100() external view returns (uint96);

    /// @notice Event emitted when a call to {payFee} succeeds.
    /// @param vaultId The id of the vault that received the payment.
    /// @param account The address of the account that paid.
    /// @param amount The amount of fee received in wei.
    event FeeReceived(uint256 indexed vaultId, address indexed account, uint256 amount);

    /// @notice Event emitted when the Guild fee collector address is changed.
    /// @param newFeeCollector The address to change guildFeeCollector to.
    event GuildFeeCollectorChanged(address newFeeCollector);

    /// @notice Event emitted when the share of the Guild fee collector changes.
    /// @param newShare The new value of guildSharex100.
    event GuildSharex100Changed(uint96 newShare);

    /// @notice Event emitted when the POAP fee collector address is changed.
    /// @param newFeeCollector The address to change poapFeeCollector to.
    event PoapFeeCollectorChanged(address newFeeCollector);

    /// @notice Event emitted when the share of the POAP fee collector changes.
    /// @param newShare The new value of poapSharex100.
    event PoapSharex100Changed(uint96 newShare);

    /// @notice Event emitted when a new vault is registered.
    /// @param eventId The id of the POAP drop.
    /// @param owner The address that receives the fees from the drop.
    /// @param token The zero address for Ether, otherwise an ERC20 token.
    /// @param fee The amount of fee to pay in wei.
    event VaultRegistered(
        uint256 vaultId,
        uint256 indexed eventId,
        address indexed owner,
        address indexed token,
        uint256 fee
    );

    /// @notice Event emitted when funds are withdrawn by a vault owner.
    /// @param vaultId The id of the vault.
    /// @param guildAmount The amount received by the Guild fee collector in wei.
    /// @param poapAmount The amount received by the POAP fee collector in wei.
    /// @param ownerAmount The amount received by the vault's owner in wei.
    event Withdrawn(uint256 indexed vaultId, uint256 guildAmount, uint256 poapAmount, uint256 ownerAmount);

    /// @notice Error thrown when an incorrect amount of fee is attempted to be paid.
    /// @dev requiredAmount might be 0 in cases when an ERC20 payment was expected but Ether was received, too.
    /// @param vaultId The id of the vault.
    /// @param paid The amount of funds received.
    /// @param requiredAmount The amount of fees required by the vault.
    error IncorrectFee(uint256 vaultId, uint256 paid, uint256 requiredAmount);

    /// @notice Error thrown when a function is attempted to be called by the wrong address.
    /// @param sender The address that sent the transaction.
    /// @param owner The address that is allowed to call the function.
    error AccessDenied(address sender, address owner);

    /// @notice Error thrown when an ERC20 transfer failed.
    /// @param from The sender of the token.
    /// @param to The recipient of the token.
    error TransferFailed(address from, address to);

    /// @notice Error thrown when a vault does not exist.
    /// @param vaultId The id of the requested vault.
    error VaultDoesNotExist(uint256 vaultId);
}

File 3 of 4 : LibAddress.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/// @title Library for functions related to addresses.
library LibAddress {
    /// @notice Error thrown when sending ether fails.
    /// @param recipient The address that could not receive the ether.
    error FailedToSendEther(address recipient);

    /// @notice Send ether to an address, forwarding all available gas and reverting on errors.
    /// @param recipient The recipient of the ether.
    /// @param amount The amount of ether to send in wei.
    function sendEther(address payable recipient, uint256 amount) internal {
        // solhint-disable-next-line avoid-low-level-calls
        (bool success, ) = recipient.call{ value: amount }("");
        if (!success) revert FailedToSendEther(recipient);
    }
}

File 4 of 4 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

Settings
{
  "metadata": {
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"guildFeeCollector_","type":"address"},{"internalType":"uint96","name":"guildSharex100_","type":"uint96"},{"internalType":"address payable","name":"poapFeeCollector_","type":"address"},{"internalType":"uint96","name":"poapSharex100_","type":"uint96"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"AccessDenied","type":"error"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"FailedToSendEther","type":"error"},{"inputs":[{"internalType":"uint256","name":"vaultId","type":"uint256"},{"internalType":"uint256","name":"paid","type":"uint256"},{"internalType":"uint256","name":"requiredAmount","type":"uint256"}],"name":"IncorrectFee","type":"error"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"TransferFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"vaultId","type":"uint256"}],"name":"VaultDoesNotExist","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"vaultId","type":"uint256"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FeeReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFeeCollector","type":"address"}],"name":"GuildFeeCollectorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint96","name":"newShare","type":"uint96"}],"name":"GuildSharex100Changed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFeeCollector","type":"address"}],"name":"PoapFeeCollectorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint96","name":"newShare","type":"uint96"}],"name":"PoapSharex100Changed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"vaultId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"eventId","type":"uint256"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"VaultRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"vaultId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"guildAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poapAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ownerAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"vaultId","type":"uint256"}],"name":"getVault","outputs":[{"internalType":"uint256","name":"eventId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint128","name":"fee","type":"uint128"},{"internalType":"uint128","name":"collected","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guildFeeCollector","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guildSharex100","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"vaultId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasPaid","outputs":[{"internalType":"bool","name":"paid","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"vaultId","type":"uint256"}],"name":"payFee","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"poapFeeCollector","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poapSharex100","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"eventId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint128","name":"fee","type":"uint128"}],"name":"registerVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newFeeCollector","type":"address"}],"name":"setGuildFeeCollector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint96","name":"newShare","type":"uint96"}],"name":"setGuildSharex100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newFeeCollector","type":"address"}],"name":"setPoapFeeCollector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint96","name":"newShare","type":"uint96"}],"name":"setPoapSharex100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"vaultId","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051620010ee380380620010ee83398101604081905261003191610096565b6001600160601b03928316600160a01b9081026001600160a01b039586161760005592169091029116176001556100ea565b80516001600160a01b038116811461007a57600080fd5b919050565b80516001600160601b038116811461007a57600080fd5b600080600080608085870312156100ac57600080fd5b6100b585610063565b93506100c36020860161007f565b92506100d160408601610063565b91506100df6060860161007f565b905092959194509250565b610ff480620000fa6000396000f3fe6080604052600436106100c25760003560e01c8063504af59a1161007f578063bf51429e11610059578063bf51429e1461026c578063cf4408251461028c578063d289ade2146102ac578063d8bc7fff146102bf57600080fd5b8063504af59a146101b457806359878fee146101ec5780639403b6341461020c57600080fd5b806307ade415146100c757806310a3c725146100e95780631139cbe91461012d578063228a0831146101545780632e1a7d4d1461017457806337d8eca714610194575b600080fd5b3480156100d357600080fd5b506100e76100e2366004610dde565b6102ef565b005b3480156100f557600080fd5b5060005461011090600160a01b90046001600160601b031681565b6040516001600160601b0390911681526020015b60405180910390f35b34801561013957600080fd5b5060015461011090600160a01b90046001600160601b031681565b34801561016057600080fd5b506100e761016f366004610dde565b610389565b34801561018057600080fd5b506100e761018f366004610e02565b610413565b3480156101a057600080fd5b506100e76101af366004610e1b565b610594565b3480156101c057600080fd5b506000546101d4906001600160a01b031681565b6040516001600160a01b039091168152602001610124565b3480156101f857600080fd5b506100e7610207366004610e7a565b6106e2565b34801561021857600080fd5b5061022c610227366004610e02565b610774565b604080519586526001600160a01b03948516602087015293909216928401929092526001600160801b03918216606084015216608082015260a001610124565b34801561027857600080fd5b506001546101d4906001600160a01b031681565b34801561029857600080fd5b506100e76102a7366004610e7a565b61080c565b6100e76102ba366004610e02565b61089e565b3480156102cb57600080fd5b506102df6102da366004610ea3565b610aa7565b6040519015158152602001610124565b6001546001600160a01b031633146103345760015460405163c21bbf9d60e01b815261032b9133916001600160a01b0390911690600401610ed3565b60405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f765a078d0c53824942cbd78317aac3cd27d848a557fe67e04d638e056c051b78906020015b60405180910390a150565b6000546001600160a01b031633146103c55760005460405163c21bbf9d60e01b815261032b9133916001600160a01b0390911690600401610ed3565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f41c387ad232996a24e924bd12a8be0da67a8350e31529f702890a9a039cd0c7e9060200161037e565b60025481106104385760405163148eeced60e31b81526004810182905260240161032b565b60006002828154811061044d5761044d610eed565b600091825260208220600591909102016003810180546001600160801b038082169092558354929450600160801b90041691906127109061049e90600160a01b90046001600160601b031684610f19565b6104a89190610f38565b600154909150600090612710906104cf90600160a01b90046001600160601b031685610f19565b6104d99190610f38565b90506000826104e88386610f5a565b6104f29190610f5a565b60028601549091506001600160a01b03168061052a576001860154610525908590859085906001600160a01b0316610b16565b610548565b6001860154610548908590859085906001600160a01b031685610b5b565b604080518581526020810185905290810183905287907ff33ea8296e3b54855453ed4cdaa29d067a97e3cc1d5ebd1fb072699e78aa01e29060600160405180910390a250505050505050565b6002805460018181018355600083905260059091027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018781557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf820180546001600160a01b03808a166001600160a01b031992831681179093557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad085018054918a169190921681179091557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad190930180546001600160801b0388166fffffffffffffffffffffffffffffffff1990911617905593549093919288917f6131de68fea5d38cd5891e9aca5f6b1f16c7c75b8cbb86639fee51f0caff52a3916106bc91610f5a565b604080519182526001600160801b03881660208301520160405180910390a45050505050565b6001546001600160a01b0316331461071e5760015460405163c21bbf9d60e01b815261032b9133916001600160a01b0390911690600401610ed3565b600180546001600160a01b0316600160a01b6001600160601b038416908102919091179091556040519081527f55033206c80b8260dfd95de6625e9a90efb0b8f0f3a18e25738791cb3e45b7689060200161037e565b600080600080600060028054905086106107a45760405163148eeced60e31b81526004810187905260240161032b565b6000600287815481106107b9576107b9610eed565b60009182526020909120600590910201805460018201546002830154600390930154919a6001600160a01b039182169a50921697506001600160801b038082169750600160801b90910416945092505050565b6000546001600160a01b031633146108485760005460405163c21bbf9d60e01b815261032b9133916001600160a01b0390911690600401610ed3565b600080546001600160a01b0316600160a01b6001600160601b038416908102919091179091556040519081527feccc8a49da3ca61680c27f3ef094e296ff519532f5aa59634e79b2d5dfdfc41c9060200161037e565b60025481106108c35760405163148eeced60e31b81526004810182905260240161032b565b6000600282815481106108d8576108d8610eed565b600091825260209091206005909102016003810180549192506001600160801b0380831692839291601091610916918591600160801b900416610f71565b82546001600160801b039182166101009390930a9283029190920219909116179055503360009081526004830160205260409020805460ff1916600117905560028201546001600160a01b03168061099d578134146109985760405163119a754560e01b8152600481018590523460248201526044810183905260640161032b565b610a6a565b34156109cc5760405163119a754560e01b8152600481018590523460248201526000604482015260640161032b565b60028301546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a499190610f9c565b610a6a57333060405163291e1d5560e11b815260040161032b929190610ed3565b604051828152339085907f26d8baa91676f5f0ff9373b84d9a9736de9187010efe488a475a0dd91adbdb469060200160405180910390a350505050565b6002546000908310610acf5760405163148eeced60e31b81526004810184905260240161032b565b60028381548110610ae257610ae2610eed565b600091825260208083206001600160a01b03861684526004600590930201919091019052604090205460ff16905092915050565b600054610b2c906001600160a01b031685610d42565b600154610b42906001600160a01b031684610d42565b610b556001600160a01b03821683610d42565b50505050565b60005460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101879052829182169063a9059cbb906044016020604051808303816000875af1158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190610f9c565b610c015760005460405163291e1d5560e11b815261032b9130916001600160a01b0390911690600401610ed3565b60015460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018790529082169063a9059cbb906044016020604051808303816000875af1158015610c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c789190610f9c565b610ca65760015460405163291e1d5560e11b815261032b9130916001600160a01b0390911690600401610ed3565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820186905282169063a9059cbb906044016020604051808303816000875af1158015610cf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d199190610f9c565b610d3a57308360405163291e1d5560e11b815260040161032b929190610ed3565b505050505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610d8f576040519150601f19603f3d011682016040523d82523d6000602084013e610d94565b606091505b5050905080610dc157604051632499e3bb60e11b81526001600160a01b038416600482015260240161032b565b505050565b6001600160a01b0381168114610ddb57600080fd5b50565b600060208284031215610df057600080fd5b8135610dfb81610dc6565b9392505050565b600060208284031215610e1457600080fd5b5035919050565b60008060008060808587031215610e3157600080fd5b843593506020850135610e4381610dc6565b92506040850135610e5381610dc6565b915060608501356001600160801b0381168114610e6f57600080fd5b939692955090935050565b600060208284031215610e8c57600080fd5b81356001600160601b0381168114610dfb57600080fd5b60008060408385031215610eb657600080fd5b823591506020830135610ec881610dc6565b809150509250929050565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610f3357610f33610f03565b500290565b600082610f5557634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610f6c57610f6c610f03565b500390565b60006001600160801b03808316818516808303821115610f9357610f93610f03565b01949350505050565b600060208284031215610fae57600080fd5b81518015158114610dfb57600080fdfea26469706673582212208f1b59393db632299b358791c676773377c49e300ff1c7f079ef3ab15fb2436564736f6c634300080f00330000000000000000000000007cd8c45a83d97d74bbd6b94c307919dd6600ccec00000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cd8c45a83d97d74bbd6b94c307919dd6600ccec0000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106100c25760003560e01c8063504af59a1161007f578063bf51429e11610059578063bf51429e1461026c578063cf4408251461028c578063d289ade2146102ac578063d8bc7fff146102bf57600080fd5b8063504af59a146101b457806359878fee146101ec5780639403b6341461020c57600080fd5b806307ade415146100c757806310a3c725146100e95780631139cbe91461012d578063228a0831146101545780632e1a7d4d1461017457806337d8eca714610194575b600080fd5b3480156100d357600080fd5b506100e76100e2366004610dde565b6102ef565b005b3480156100f557600080fd5b5060005461011090600160a01b90046001600160601b031681565b6040516001600160601b0390911681526020015b60405180910390f35b34801561013957600080fd5b5060015461011090600160a01b90046001600160601b031681565b34801561016057600080fd5b506100e761016f366004610dde565b610389565b34801561018057600080fd5b506100e761018f366004610e02565b610413565b3480156101a057600080fd5b506100e76101af366004610e1b565b610594565b3480156101c057600080fd5b506000546101d4906001600160a01b031681565b6040516001600160a01b039091168152602001610124565b3480156101f857600080fd5b506100e7610207366004610e7a565b6106e2565b34801561021857600080fd5b5061022c610227366004610e02565b610774565b604080519586526001600160a01b03948516602087015293909216928401929092526001600160801b03918216606084015216608082015260a001610124565b34801561027857600080fd5b506001546101d4906001600160a01b031681565b34801561029857600080fd5b506100e76102a7366004610e7a565b61080c565b6100e76102ba366004610e02565b61089e565b3480156102cb57600080fd5b506102df6102da366004610ea3565b610aa7565b6040519015158152602001610124565b6001546001600160a01b031633146103345760015460405163c21bbf9d60e01b815261032b9133916001600160a01b0390911690600401610ed3565b60405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f765a078d0c53824942cbd78317aac3cd27d848a557fe67e04d638e056c051b78906020015b60405180910390a150565b6000546001600160a01b031633146103c55760005460405163c21bbf9d60e01b815261032b9133916001600160a01b0390911690600401610ed3565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f41c387ad232996a24e924bd12a8be0da67a8350e31529f702890a9a039cd0c7e9060200161037e565b60025481106104385760405163148eeced60e31b81526004810182905260240161032b565b60006002828154811061044d5761044d610eed565b600091825260208220600591909102016003810180546001600160801b038082169092558354929450600160801b90041691906127109061049e90600160a01b90046001600160601b031684610f19565b6104a89190610f38565b600154909150600090612710906104cf90600160a01b90046001600160601b031685610f19565b6104d99190610f38565b90506000826104e88386610f5a565b6104f29190610f5a565b60028601549091506001600160a01b03168061052a576001860154610525908590859085906001600160a01b0316610b16565b610548565b6001860154610548908590859085906001600160a01b031685610b5b565b604080518581526020810185905290810183905287907ff33ea8296e3b54855453ed4cdaa29d067a97e3cc1d5ebd1fb072699e78aa01e29060600160405180910390a250505050505050565b6002805460018181018355600083905260059091027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018781557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf820180546001600160a01b03808a166001600160a01b031992831681179093557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad085018054918a169190921681179091557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad190930180546001600160801b0388166fffffffffffffffffffffffffffffffff1990911617905593549093919288917f6131de68fea5d38cd5891e9aca5f6b1f16c7c75b8cbb86639fee51f0caff52a3916106bc91610f5a565b604080519182526001600160801b03881660208301520160405180910390a45050505050565b6001546001600160a01b0316331461071e5760015460405163c21bbf9d60e01b815261032b9133916001600160a01b0390911690600401610ed3565b600180546001600160a01b0316600160a01b6001600160601b038416908102919091179091556040519081527f55033206c80b8260dfd95de6625e9a90efb0b8f0f3a18e25738791cb3e45b7689060200161037e565b600080600080600060028054905086106107a45760405163148eeced60e31b81526004810187905260240161032b565b6000600287815481106107b9576107b9610eed565b60009182526020909120600590910201805460018201546002830154600390930154919a6001600160a01b039182169a50921697506001600160801b038082169750600160801b90910416945092505050565b6000546001600160a01b031633146108485760005460405163c21bbf9d60e01b815261032b9133916001600160a01b0390911690600401610ed3565b600080546001600160a01b0316600160a01b6001600160601b038416908102919091179091556040519081527feccc8a49da3ca61680c27f3ef094e296ff519532f5aa59634e79b2d5dfdfc41c9060200161037e565b60025481106108c35760405163148eeced60e31b81526004810182905260240161032b565b6000600282815481106108d8576108d8610eed565b600091825260209091206005909102016003810180549192506001600160801b0380831692839291601091610916918591600160801b900416610f71565b82546001600160801b039182166101009390930a9283029190920219909116179055503360009081526004830160205260409020805460ff1916600117905560028201546001600160a01b03168061099d578134146109985760405163119a754560e01b8152600481018590523460248201526044810183905260640161032b565b610a6a565b34156109cc5760405163119a754560e01b8152600481018590523460248201526000604482015260640161032b565b60028301546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a499190610f9c565b610a6a57333060405163291e1d5560e11b815260040161032b929190610ed3565b604051828152339085907f26d8baa91676f5f0ff9373b84d9a9736de9187010efe488a475a0dd91adbdb469060200160405180910390a350505050565b6002546000908310610acf5760405163148eeced60e31b81526004810184905260240161032b565b60028381548110610ae257610ae2610eed565b600091825260208083206001600160a01b03861684526004600590930201919091019052604090205460ff16905092915050565b600054610b2c906001600160a01b031685610d42565b600154610b42906001600160a01b031684610d42565b610b556001600160a01b03821683610d42565b50505050565b60005460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101879052829182169063a9059cbb906044016020604051808303816000875af1158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190610f9c565b610c015760005460405163291e1d5560e11b815261032b9130916001600160a01b0390911690600401610ed3565b60015460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018790529082169063a9059cbb906044016020604051808303816000875af1158015610c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c789190610f9c565b610ca65760015460405163291e1d5560e11b815261032b9130916001600160a01b0390911690600401610ed3565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820186905282169063a9059cbb906044016020604051808303816000875af1158015610cf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d199190610f9c565b610d3a57308360405163291e1d5560e11b815260040161032b929190610ed3565b505050505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610d8f576040519150601f19603f3d011682016040523d82523d6000602084013e610d94565b606091505b5050905080610dc157604051632499e3bb60e11b81526001600160a01b038416600482015260240161032b565b505050565b6001600160a01b0381168114610ddb57600080fd5b50565b600060208284031215610df057600080fd5b8135610dfb81610dc6565b9392505050565b600060208284031215610e1457600080fd5b5035919050565b60008060008060808587031215610e3157600080fd5b843593506020850135610e4381610dc6565b92506040850135610e5381610dc6565b915060608501356001600160801b0381168114610e6f57600080fd5b939692955090935050565b600060208284031215610e8c57600080fd5b81356001600160601b0381168114610dfb57600080fd5b60008060408385031215610eb657600080fd5b823591506020830135610ec881610dc6565b809150509250929050565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610f3357610f33610f03565b500290565b600082610f5557634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610f6c57610f6c610f03565b500390565b60006001600160801b03808316818516808303821115610f9357610f93610f03565b01949350505050565b600060208284031215610fae57600080fd5b81518015158114610dfb57600080fdfea26469706673582212208f1b59393db632299b358791c676773377c49e300ff1c7f079ef3ab15fb2436564736f6c634300080f0033

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

0000000000000000000000007cd8c45a83d97d74bbd6b94c307919dd6600ccec00000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cd8c45a83d97d74bbd6b94c307919dd6600ccec0000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : guildFeeCollector_ (address): 0x7CD8C45A83d97d74bbd6b94c307919DD6600Ccec
Arg [1] : guildSharex100_ (uint96): 0
Arg [2] : poapFeeCollector_ (address): 0x7CD8C45A83d97d74bbd6b94c307919DD6600Ccec
Arg [3] : poapSharex100_ (uint96): 0

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000007cd8c45a83d97d74bbd6b94c307919dd6600ccec
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000007cd8c45a83d97d74bbd6b94c307919dd6600ccec
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

246:5931:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4099:272;;;;;;;;;;-1:-1:-1;4099:272:0;;;;;:::i;:::-;;:::i;:::-;;380:28;;;;;;;;;;-1:-1:-1;380:28:0;;;;-1:-1:-1;;;380:28:0;;-1:-1:-1;;;;;380:28:0;;;;;;-1:-1:-1;;;;;588:39:4;;;570:58;;558:2;543:18;380:28:0;;;;;;;;460:27;;;;;;;;;;-1:-1:-1;460:27:0;;;;-1:-1:-1;;;460:27:0;;-1:-1:-1;;;;;460:27:0;;;3572:277;;;;;;;;;;-1:-1:-1;3572:277:0;;;;;:::i;:::-;;:::i;2584:982::-;;;;;;;;;;-1:-1:-1;2584:982:0;;;;;:::i;:::-;;:::i;1275:376::-;;;;;;;;;;-1:-1:-1;1275:376:0;;;;;:::i;:::-;;:::i;334:40::-;;;;;;;;;;-1:-1:-1;334:40:0;;;;-1:-1:-1;;;;;334:40:0;;;;;;-1:-1:-1;;;;;1679:32:4;;;1661:51;;1649:2;1634:18;334:40:0;1499:219:4;4377:233:0;;;;;;;;;;-1:-1:-1;4377:233:0;;;;;:::i;:::-;;:::i;4616:448::-;;;;;;;;;;-1:-1:-1;4616:448:0;;;;;:::i;:::-;;:::i;:::-;;;;2279:25:4;;;-1:-1:-1;;;;;2378:15:4;;;2373:2;2358:18;;2351:43;2430:15;;;;2410:18;;;2403:43;;;;-1:-1:-1;;;;;2535:15:4;;;2530:2;2515:18;;2508:43;2588:15;2582:3;2567:19;;2560:44;2266:3;2251:19;4616:448:0;2020:590:4;415:39:0;;;;;;;;;;-1:-1:-1;415:39:0;;;;-1:-1:-1;;;;;415:39:0;;;3855:238;;;;;;;;;;-1:-1:-1;3855:238:0;;;;;:::i;:::-;;:::i;1657:921::-;;;;;;:::i;:::-;;:::i;5070:211::-;;;;;;;;;;-1:-1:-1;5070:211:0;;;;;:::i;:::-;;:::i;:::-;;;3108:14:4;;3101:22;3083:41;;3071:2;3056:18;5070:211:0;2943:187:4;4099:272:0;4198:16;;-1:-1:-1;;;;;4198:16:0;4184:10;:30;4180:85;;4248:16;;4223:42;;-1:-1:-1;;;4223:42:0;;;;4236:10;;-1:-1:-1;;;;;4248:16:0;;;;4223:42;;;:::i;:::-;;;;;;;;4180:85;4275:16;:34;;-1:-1:-1;;;;;;4275:34:0;-1:-1:-1;;;;;4275:34:0;;;;;;;;4324:40;;1661:51:4;;;4324:40:0;;1649:2:4;1634:18;4324:40:0;;;;;;;;4099:272;:::o;3572:277::-;3672:17;;-1:-1:-1;;;;;3672:17:0;3658:10;:31;3654:87;;3723:17;;3698:43;;-1:-1:-1;;;3698:43:0;;;;3711:10;;-1:-1:-1;;;;;3723:17:0;;;;3698:43;;;:::i;3654:87::-;3751:17;:35;;-1:-1:-1;;;;;;3751:35:0;-1:-1:-1;;;;;3751:35:0;;;;;;;;3801:41;;1661:51:4;;;3801:41:0;;1649:2:4;1634:18;3801:41:0;1499:219:4;2584:982:0;2653:6;:13;2642:24;;2638:63;;2675:26;;-1:-1:-1;;;2675:26:0;;;;;3814:25:4;;;3787:18;;2675:26:0;3668:177:4;2638:63:0;2712:19;2734:6;2741:7;2734:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;2779;;;;;-1:-1:-1;;;;;2804:19:0;;;;;;2991:14;;2734:15;;-1:-1:-1;;;;2779:15:0;;;;2734;3009:5;;2979:26;;-1:-1:-1;;;2991:14:0;;-1:-1:-1;;;;;2991:14:0;2779:15;2979:26;:::i;:::-;2978:36;;;;:::i;:::-;3058:13;;2956:58;;-1:-1:-1;3024:18:0;;3075:5;;3046:25;;-1:-1:-1;;;3058:13:0;;-1:-1:-1;;;;;3058:13:0;3046:9;:25;:::i;:::-;3045:35;;;;:::i;:::-;3024:56;-1:-1:-1;3090:19:0;3137:11;3112:22;3024:56;3112:9;:22;:::i;:::-;:36;;;;:::i;:::-;3275:11;;;;3090:58;;-1:-1:-1;;;;;;3275:11:0;;3296:191;;3381:11;;;;3328:65;;3343:11;;3356:10;;3368:11;;-1:-1:-1;;;;;3381:11:0;3328:14;:65::i;:::-;3296:191;;;3461:11;;;;3408:79;;3423:11;;3436:10;;3448:11;;-1:-1:-1;;;;;3461:11:0;3474:12;3408:14;:79::i;:::-;3503:56;;;4841:25:4;;;4897:2;4882:18;;4875:34;;;4925:18;;;4918:34;;;3513:7:0;;3503:56;;4829:2:4;4814:18;3503:56:0;;;;;;;2628:938;;;;;;2584:982;:::o;1275:376::-;1437:6;:13;;;;;;;;1415:19;1437:13;;;;;;;;;;1460:23;;;1493:11;;;:19;;-1:-1:-1;;;;;1493:19:0;;;-1:-1:-1;;;;;;1493:19:0;;;;;;;;1522:11;;;:19;;;;;;;;;;;;;;1551:9;;;;:15;;-1:-1:-1;;;;;1551:15:0;;-1:-1:-1;;1551:15:0;;;;;;1598:13;;1437;;1522:19;;1476:7;;1582:62;;1598:17;;;:::i;:::-;1582:62;;;5137:25:4;;;-1:-1:-1;;;;;5198:47:4;;5193:2;5178:18;;5171:75;5110:18;1582:62:0;;;;;;;1405:246;1275:376;;;;:::o;4377:233::-;4457:16;;-1:-1:-1;;;;;4457:16:0;4443:10;:30;4439:85;;4507:16;;4482:42;;-1:-1:-1;;;4482:42:0;;;;4495:10;;-1:-1:-1;;;;;4507:16:0;;;;4482:42;;;:::i;4439:85::-;4534:13;:24;;-1:-1:-1;;;;;4534:24:0;-1:-1:-1;;;;;;;;4534:24:0;;;;;;;;;;;;4573:30;;570:58:4;;;4573:30:0;;558:2:4;543:18;4573:30:0;426:208:4;4616:448:0;4711:15;4740:13;4767;4794:11;4819:17;4876:6;:13;;;;4865:7;:24;4861:63;;4898:26;;-1:-1:-1;;;4898:26:0;;;;;3814:25:4;;;3787:18;;4898:26:0;3668:177:4;4861:63:0;4934:19;4956:6;4963:7;4956:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;4989:13;;5004:11;;;;5017;;;;5030:9;;;;;4989:13;;-1:-1:-1;;;;;5004:11:0;;;;-1:-1:-1;5017:11:0;;;-1:-1:-1;;;;;;5030:9:0;;;;-1:-1:-1;;;;5041:15:0;;;;;-1:-1:-1;4616:448:0;-1:-1:-1;;;4616:448:0:o;3855:238::-;3936:17;;-1:-1:-1;;;;;3936:17:0;3922:10;:31;3918:87;;3987:17;;3962:43;;-1:-1:-1;;;3962:43:0;;;;3975:10;;-1:-1:-1;;;;;3987:17:0;;;;3962:43;;;:::i;3918:87::-;4015:14;:25;;-1:-1:-1;;;;;4015:25:0;-1:-1:-1;;;;;;;;4015:25:0;;;;;;;;;;;;4055:31;;570:58:4;;;4055:31:0;;558:2:4;543:18;4055:31:0;426:208:4;1657:921:0;1732:6;:13;1721:24;;1717:63;;1754:26;;-1:-1:-1;;;1754:26:0;;;;;3814:25:4;;;3787:18;;1754:26:0;3668:177:4;1717:63:0;1791:19;1813:6;1820:7;1813:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1863:9;;;;;1813:15;;-1:-1:-1;;;;;;1863:9:0;;;;;;;1882:15;;:42;;1863:9;;-1:-1:-1;;;1882:42:0;;;;:::i;:::-;;;-1:-1:-1;;;;;1882:42:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1945:10:0;-1:-1:-1;1934:22:0;;;:10;;;:22;;;;;:29;;-1:-1:-1;;1934:29:0;-1:-1:-1;1934:29:0;;;2089:11;;;;-1:-1:-1;;;;;2089:11:0;;2110:398;;2173:14;2160:9;:27;2156:88;;2196:48;;-1:-1:-1;;;2196:48:0;;;;;4841:25:4;;;2218:9:0;4882:18:4;;;4875:34;4925:18;;;4918:34;;;4814:18;;2196:48:0;4639:319:4;2156:88:0;2110:398;;;2279:9;:14;2275:62;;2302:35;;-1:-1:-1;;;2302:35:0;;;;;4841:25:4;;;2324:9:0;4882:18:4;;;4875:34;2335:1:0;4925:18:4;;;4918:34;4814:18;;2302:35:0;4639:319:4;2275:62:0;2363:11;;;;2356:75;;-1:-1:-1;;;2356:75:0;;2389:10;2356:75;;;6087:34:4;2409:4:0;6137:18:4;;;6130:43;6189:18;;;6182:34;;;-1:-1:-1;;;;;2363:11:0;;;;2356:32;;6022:18:4;;2356:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2351:146;;2471:10;2491:4;2456:41;;-1:-1:-1;;;2456:41:0;;;;;;;;;:::i;2351:146::-;2523:48;;3814:25:4;;;2544:10:0;;2535:7;;2523:48;;3802:2:4;3787:18;2523:48:0;;;;;;;1707:871;;;1657:921;:::o;5070:211::-;5180:6;:13;5144:9;;5169:24;;5165:63;;5202:26;;-1:-1:-1;;;5202:26:0;;;;;3814:25:4;;;3787:18;;5202:26:0;3668:177:4;5165:63:0;5245:6;5252:7;5245:15;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;5245:29:0;;;;:20;:15;;;;;:20;;;;:29;;;;;;;;;-1:-1:-1;5070:211:0;;;;:::o;5287:310::-;5450:17;;:40;;-1:-1:-1;;;;;5450:17:0;5478:11;5450:27;:40::i;:::-;5500:16;;:38;;-1:-1:-1;;;;;5500:16:0;5527:10;5500:26;:38::i;:::-;5548:42;-1:-1:-1;;;;;5548:29:0;;5578:11;5548:29;:42::i;:::-;5287:310;;;;:::o;5603:572::-;5796:12;5861:17;5846:46;;-1:-1:-1;;;5846:46:0;;-1:-1:-1;;;;;5861:17:0;;;5846:46;;;7000:51:4;7067:18;;;7060:34;;;5818:12:0;;5846:14;;;;;6973:18:4;;5846:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5841:108;;5931:17;;5901:48;;-1:-1:-1;;;5901:48:0;;;;5924:4;;-1:-1:-1;;;;;5931:17:0;;;;5901:48;;;:::i;5841:108::-;5979:16;;5964:44;;-1:-1:-1;;;5964:44:0;;-1:-1:-1;;;;;5979:16:0;;;5964:44;;;7000:51:4;7067:18;;;7060:34;;;5964:14:0;;;;;;6973:18:4;;5964:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5959:105;;6047:16;;6017:47;;-1:-1:-1;;;6017:47:0;;;;6040:4;;-1:-1:-1;;;;;6047:16:0;;;;6017:47;;;:::i;5959:105::-;6079:39;;-1:-1:-1;;;6079:39:0;;-1:-1:-1;;;;;7018:32:4;;;6079:39:0;;;7000:51:4;7067:18;;;7060:34;;;6079:14:0;;;;;6973:18:4;;6079:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6074:94;;6150:4;6157:10;6127:41;;-1:-1:-1;;;6127:41:0;;;;;;;;;:::i;6074:94::-;5786:389;5603:572;;;;;:::o;519:260:2:-;660:12;678:9;-1:-1:-1;;;;;678:14:2;701:6;678:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;659:54;;;728:7;723:49;;744:28;;-1:-1:-1;;;744:28:2;;-1:-1:-1;;;;;1679:32:4;;744:28:2;;;1661:51:4;1634:18;;744:28:2;1499:219:4;723:49:2;590:189;519:260;;:::o;14:139:4:-;-1:-1:-1;;;;;97:31:4;;87:42;;77:70;;143:1;140;133:12;77:70;14:139;:::o;158:263::-;225:6;278:2;266:9;257:7;253:23;249:32;246:52;;;294:1;291;284:12;246:52;333:9;320:23;352:39;385:5;352:39;:::i;:::-;410:5;158:263;-1:-1:-1;;;158:263:4:o;639:180::-;698:6;751:2;739:9;730:7;726:23;722:32;719:52;;;767:1;764;757:12;719:52;-1:-1:-1;790:23:4;;639:180;-1:-1:-1;639:180:4:o;824:670::-;910:6;918;926;934;987:3;975:9;966:7;962:23;958:33;955:53;;;1004:1;1001;994:12;955:53;1040:9;1027:23;1017:33;;1100:2;1089:9;1085:18;1072:32;1113:39;1146:5;1113:39;:::i;:::-;1171:5;-1:-1:-1;1228:2:4;1213:18;;1200:32;1241:41;1200:32;1241:41;:::i;:::-;1301:7;-1:-1:-1;1360:2:4;1345:18;;1332:32;-1:-1:-1;;;;;1395:48:4;;1383:61;;1373:89;;1458:1;1455;1448:12;1373:89;824:670;;;;-1:-1:-1;824:670:4;;-1:-1:-1;;824:670:4:o;1723:292::-;1781:6;1834:2;1822:9;1813:7;1809:23;1805:32;1802:52;;;1850:1;1847;1840:12;1802:52;1889:9;1876:23;-1:-1:-1;;;;;1932:5:4;1928:38;1921:5;1918:49;1908:77;;1981:1;1978;1971:12;2615:323;2683:6;2691;2744:2;2732:9;2723:7;2719:23;2715:32;2712:52;;;2760:1;2757;2750:12;2712:52;2796:9;2783:23;2773:33;;2856:2;2845:9;2841:18;2828:32;2869:39;2902:5;2869:39;:::i;:::-;2927:5;2917:15;;;2615:323;;;;;:::o;3135:312::-;-1:-1:-1;;;;;3373:15:4;;;3355:34;;3425:15;;3420:2;3405:18;;3398:43;3305:2;3290:18;;3135:312::o;3850:127::-;3911:10;3906:3;3902:20;3899:1;3892:31;3942:4;3939:1;3932:15;3966:4;3963:1;3956:15;3982:127;4043:10;4038:3;4034:20;4031:1;4024:31;4074:4;4071:1;4064:15;4098:4;4095:1;4088:15;4114:168;4154:7;4220:1;4216;4212:6;4208:14;4205:1;4202:21;4197:1;4190:9;4183:17;4179:45;4176:71;;;4227:18;;:::i;:::-;-1:-1:-1;4267:9:4;;4114:168::o;4287:217::-;4327:1;4353;4343:132;;4397:10;4392:3;4388:20;4385:1;4378:31;4432:4;4429:1;4422:15;4460:4;4457:1;4450:15;4343:132;-1:-1:-1;4489:9:4;;4287:217::o;4509:125::-;4549:4;4577:1;4574;4571:8;4568:34;;;4582:18;;:::i;:::-;-1:-1:-1;4619:9:4;;4509:125::o;5257:253::-;5297:3;-1:-1:-1;;;;;5386:2:4;5383:1;5379:10;5416:2;5413:1;5409:10;5447:3;5443:2;5439:12;5434:3;5431:21;5428:47;;;5455:18;;:::i;:::-;5491:13;;5257:253;-1:-1:-1;;;;5257:253:4:o;6227:277::-;6294:6;6347:2;6335:9;6326:7;6322:23;6318:32;6315:52;;;6363:1;6360;6353:12;6315:52;6395:9;6389:16;6448:5;6441:13;6434:21;6427:5;6424:32;6414:60;;6470:1;6467;6460:12

Swarm Source

ipfs://8f1b59393db632299b358791c676773377c49e300ff1c7f079ef3ab15fb24365

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  ]
[ 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.