ETH Price: $3,420.01 (-1.84%)
Gas: 4 Gwei

Contract

0x780e9996Ec934cba0E2FC830C9b9f3e19F99ec3B
 

Overview

ETH Balance

1.761694011323679302 ETH

Eth Value

$6,025.01 (@ $3,420.01/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim168711102023-03-20 19:57:35485 days ago1679342255IN
0x780e9996...19F99ec3B
0 ETH0.0019216827.05492293
Claim156426462022-09-30 0:42:47657 days ago1664498567IN
0x780e9996...19F99ec3B
0 ETH0.0008235514.03608532
Withdraw148204352022-05-22 0:49:42788 days ago1653180582IN
0x780e9996...19F99ec3B
0 ETH0.0031421821.27857702
Refund135481592021-11-04 4:41:06986 days ago1636000866IN
0x780e9996...19F99ec3B
0 ETH0.00939794100.10490038
Claim130329832021-08-16 0:22:391067 days ago1629073359IN
0x780e9996...19F99ec3B
0 ETH0.003137153.46671922
Withdraw129517082021-08-03 10:12:191079 days ago1627985539IN
0x780e9996...19F99ec3B
0 ETH0.0039183723
Withdraw128899062021-07-24 15:46:181089 days ago1627141578IN
0x780e9996...19F99ec3B
0 ETH0.0031220118.325
Claim128681222021-07-21 6:11:401092 days ago1626847900IN
0x780e9996...19F99ec3B
0 ETH0.0008632911.1
Withdraw128631922021-07-20 11:38:201093 days ago1626781100IN
0x780e9996...19F99ec3B
0 ETH0.002362716
Refund128222882021-07-14 1:41:371099 days ago1626226897IN
0x780e9996...19F99ec3B
0 ETH0.0046940550
Withdraw128193882021-07-13 14:43:531100 days ago1626187433IN
0x780e9996...19F99ec3B
0 ETH0.004873333
Deposit127982202021-07-10 7:06:381103 days ago1625900798IN
0x780e9996...19F99ec3B
0 ETH0.0021030211
Claim127748932021-07-06 16:15:141107 days ago1625588114IN
0x780e9996...19F99ec3B
0 ETH0.005895483
Withdraw127701612021-07-05 22:24:311108 days ago1625523871IN
0x780e9996...19F99ec3B
0 ETH0.0050577133
Withdraw127698012021-07-05 21:04:191108 days ago1625519059IN
0x780e9996...19F99ec3B
0 ETH0.0026581618
Deposit127254132021-06-28 23:07:031115 days ago1624921623IN
0x780e9996...19F99ec3B
0 ETH0.0015472111
Withdraw127202502021-06-28 4:01:271115 days ago1624852887IN
0x780e9996...19F99ec3B
0 ETH0.0014239810
Claim127202472021-06-28 4:00:371115 days ago1624852837IN
0x780e9996...19F99ec3B
0 ETH0.0006067410
Claim127195212021-06-28 1:13:231116 days ago1624842803IN
0x780e9996...19F99ec3B
0 ETH0.0006301613
Claim127144532021-06-27 6:14:101116 days ago1624774450IN
0x780e9996...19F99ec3B
0 ETH0.000193894
Claim126956002021-06-24 7:44:341119 days ago1624520674IN
0x780e9996...19F99ec3B
0 ETH0.0010664222
Withdraw126841702021-06-22 13:04:101121 days ago1624367050IN
0x780e9996...19F99ec3B
0 ETH0.03307942224
Claim126830992021-06-22 9:00:461121 days ago1624352446IN
0x780e9996...19F99ec3B
0 ETH0.0018420138
Deposit126784182021-06-21 15:26:031122 days ago1624289163IN
0x780e9996...19F99ec3B
0 ETH0.0066108347
Deposit126761822021-06-21 7:02:161122 days ago1624258936IN
0x780e9996...19F99ec3B
0 ETH0.0077114550
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
156426462022-09-30 0:42:47657 days ago1664498567
0x780e9996...19F99ec3B
0.0169315 ETH
130329832021-08-16 0:22:391067 days ago1629073359
0x780e9996...19F99ec3B
0.00218766 ETH
128681222021-07-21 6:11:401092 days ago1626847900
0x780e9996...19F99ec3B
0.0035203 ETH
127202472021-06-28 4:00:371115 days ago1624852837
0x780e9996...19F99ec3B
0.00247383 ETH
127195212021-06-28 1:13:231116 days ago1624842803
0x780e9996...19F99ec3B
0.00531125 ETH
127144532021-06-27 6:14:101116 days ago1624774450
0x780e9996...19F99ec3B
0.00148466 ETH
126956002021-06-24 7:44:341119 days ago1624520674
0x780e9996...19F99ec3B
0.00723538 ETH
126830992021-06-22 9:00:461121 days ago1624352446
0x780e9996...19F99ec3B
0.00349434 ETH
126757982021-06-21 5:35:301122 days ago1624253730
0x780e9996...19F99ec3B
0.00325077 ETH
126012332021-06-09 15:58:231134 days ago1623254303
0x780e9996...19F99ec3B
0.26641065 ETH
125978692021-06-09 3:13:471134 days ago1623208427
0x780e9996...19F99ec3B
0.01071428 ETH
125961792021-06-08 20:59:441135 days ago1623185984
0x780e9996...19F99ec3B
0.00748647 ETH
125961652021-06-08 20:55:561135 days ago1623185756
0x780e9996...19F99ec3B
0.11607142 ETH
125785552021-06-06 3:41:491137 days ago1622950909
0x780e9996...19F99ec3B
0.17499999 ETH
125520422021-06-02 1:20:241142 days ago1622596824
0x780e9996...19F99ec3B
0.01437499 ETH
125499552021-06-01 17:35:131142 days ago1622568913
0x780e9996...19F99ec3B
0.00726619 ETH
125499552021-06-01 17:35:131142 days ago1622568913
0x780e9996...19F99ec3B
0.25464285 ETH
125166122021-05-27 13:22:351147 days ago1622121755
0x780e9996...19F99ec3B
0.03696428 ETH
125115852021-05-26 18:32:031148 days ago1622053923
0x780e9996...19F99ec3B
0.71316349 ETH
125115852021-05-26 18:32:031148 days ago1622053923
0x780e9996...19F99ec3B
0.02053571 ETH
125087422021-05-26 7:56:111148 days ago1622015771
0x780e9996...19F99ec3B
0.04878571 ETH
125053172021-05-25 19:16:511149 days ago1621970211
0x780e9996...19F99ec3B
0.38622023 ETH
124797332021-05-21 20:01:291153 days ago1621627289
0x780e9996...19F99ec3B
0.25205952 ETH
124629132021-05-19 5:18:241155 days ago1621401504
0x780e9996...19F99ec3B
0.00923214 ETH
124598352021-05-18 17:52:061156 days ago1621360326
0x780e9996...19F99ec3B
0.00839285 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BurnVault

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 7 : BurnVault.sol
//SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

import "../libraries/math/SafeMath.sol";
import "../libraries/token/IERC20.sol";
import "../libraries/utils/ReentrancyGuard.sol";
import "../interfaces/IXVIX.sol";
import "../interfaces/IFloor.sol";
import "../interfaces/IX2Fund.sol";

contract BurnVault is ReentrancyGuard, IERC20 {
    using SafeMath for uint256;

    string public constant name = "XVIX BurnVault";
    string public constant symbol = "XVIX:BV";
    uint8 public constant decimals = 18;

    uint256 constant PRECISION = 1e30;

    address public token;
    address public floor;
    address public gov;
    address public distributor;

    uint256 public initialDivisor;
    uint256 public _totalSupply;

    mapping (address => uint256) public balances;
    mapping (address => bool) public senders;

    uint256 public cumulativeRewardPerToken;
    mapping (address => uint256) public claimableReward;
    mapping (address => uint256) public previousCumulatedRewardPerToken;

    event Deposit(address account, uint256 amount);
    event Withdraw(address account, uint256 amount);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event GovChange(address gov);
    event Claim(address receiver, uint256 amount);

    modifier onlyGov() {
        require(msg.sender == gov, "BurnVault: forbidden");
        _;
    }

    constructor(address _token, address _floor) public {
        token = _token;
        floor = _floor;
        initialDivisor = IXVIX(_token).normalDivisor();
        gov = msg.sender;
    }

    receive() external payable {}

    function setGov(address _gov) external onlyGov {
        gov = _gov;
        emit GovChange(_gov);
    }

    function setDistributor(address _distributor) external onlyGov {
        distributor = _distributor;
    }

    function addSender(address _sender) external onlyGov {
        require(!senders[_sender], "BurnVault: sender already added");
        senders[_sender] = true;
    }

    function removeSender(address _sender) external onlyGov {
        require(senders[_sender], "BurnVault: invalid sender");
        senders[_sender] = false;
    }

    function deposit(uint256 _amount) external nonReentrant {
        require(_amount > 0, "BurnVault: insufficient amount");

        address account = msg.sender;
        _updateRewards(account, true);

        IERC20(token).transferFrom(account, address(this), _amount);

        uint256 scaledAmount = _amount.mul(getDivisor());
        balances[account] = balances[account].add(scaledAmount);
        _totalSupply = _totalSupply.add(scaledAmount);

        emit Deposit(account, _amount);
        emit Transfer(address(0), account, _amount);
    }

    function withdraw(address _receiver, uint256 _amount) external nonReentrant {
        require(_amount > 0, "BurnVault: insufficient amount");

        address account = msg.sender;
        _updateRewards(account, true);
        _withdraw(account, _receiver, _amount);
    }

    function withdrawWithoutDistribution(address _receiver, uint256 _amount) external nonReentrant {
        require(_amount > 0, "BurnVault: insufficient amount");

        address account = msg.sender;
        _updateRewards(account, false);
        _withdraw(account, _receiver, _amount);
    }

    function claim(address _receiver) external nonReentrant {
        address _account = msg.sender;
        _updateRewards(_account, true);

        uint256 rewardToClaim = claimableReward[_account];
        claimableReward[_account] = 0;

        (bool success,) = _receiver.call{value: rewardToClaim}("");
        require(success, "BurnVault: transfer failed");

        emit Claim(_receiver, rewardToClaim);
    }

    function refund(address _receiver) external nonReentrant returns (uint256) {
        require(senders[msg.sender], "BurnVault: forbidden");

        uint256 _toBurn = toBurn();
        if (_toBurn == 0) {
            return 0;
        }

        uint256 refundAmount = IFloor(floor).getRefundAmount(_toBurn);
        if (refundAmount == 0) {
            return 0;
        }

        uint256 ethAmount = IFloor(floor).refund(_receiver, _toBurn);
        return ethAmount;
    }

    function totalSupply() public override view returns (uint256) {
        return _totalSupply.div(getDivisor());
    }

    function balanceOf(address account) public override view returns (uint256) {
        return balances[account].div(getDivisor());
    }

    function toBurn() public view returns (uint256) {
        uint256 balance = IERC20(token).balanceOf(address(this));
        return balance.sub(totalSupply());
    }

    function getDivisor() public view returns (uint256) {
        uint256 normalDivisor = IXVIX(token).normalDivisor();
        uint256 _initialDivisor = initialDivisor;
        uint256 diff = normalDivisor.sub(_initialDivisor).div(2);
        return _initialDivisor.add(diff);
    }

    // empty implementation, BurnVault tokens are non-transferrable
    function transfer(address /* recipient */, uint256 /* amount */) public override returns (bool) {
        revert("BurnVault: non-transferrable");
    }

    // empty implementation, BurnVault tokens are non-transferrable
    function allowance(address /* owner */, address /* spender */) public view virtual override returns (uint256) {
        return 0;
    }

    // empty implementation, BurnVault tokens are non-transferrable
    function approve(address /* spender */, uint256 /* amount */) public virtual override returns (bool) {
        revert("BurnVault: non-transferrable");
    }

    // empty implementation, BurnVault tokens are non-transferrable
    function transferFrom(address /* sender */, address /* recipient */, uint256 /* amount */) public virtual override returns (bool) {
        revert("BurnVault: non-transferrable");
    }

    function _withdraw(address _account, address _receiver, uint256 _amount) private {
        uint256 scaledAmount = _amount.mul(getDivisor());
        require(balances[_account] >= scaledAmount, "BurnVault: insufficient balance");

        balances[_account] = balances[_account].sub(scaledAmount);
        _totalSupply = _totalSupply.sub(scaledAmount);

        IERC20(token).transfer(_receiver, _amount);

        emit Withdraw(_account, _amount);
        emit Transfer(_account, address(0), _amount);
    }

    function _updateRewards(address _account, bool _distribute) private {
        uint256 blockReward;

        if (_distribute && distributor != address(0)) {
            blockReward = IX2Fund(distributor).distribute();
        }

        uint256 _cumulativeRewardPerToken = cumulativeRewardPerToken;
        // only update cumulativeRewardPerToken when there are stakers, i.e. when _totalSupply > 0
        // if blockReward == 0, then there will be no change to cumulativeRewardPerToken
        if (_totalSupply > 0 && blockReward > 0) {
            _cumulativeRewardPerToken = _cumulativeRewardPerToken.add(blockReward.mul(PRECISION).div(_totalSupply));
            cumulativeRewardPerToken = _cumulativeRewardPerToken;
        }

        // cumulativeRewardPerToken can only increase
        // so if cumulativeRewardPerToken is zero, it means there are no rewards yet
        if (_cumulativeRewardPerToken == 0) {
            return;
        }

        uint256 _previousCumulatedReward = previousCumulatedRewardPerToken[_account];
        uint256 _claimableReward = claimableReward[_account].add(
            uint256(balances[_account]).mul(_cumulativeRewardPerToken.sub(_previousCumulatedReward)).div(PRECISION)
        );

        claimableReward[_account] = _claimableReward;
        previousCumulatedRewardPerToken[_account] = _cumulativeRewardPerToken;
    }
}

File 2 of 7 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

File 3 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool);

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

File 4 of 7 : ReentrancyGuard.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () internal {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

File 5 of 7 : IXVIX.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

interface IXVIX {
    function setGov(address gov) external;
    function normalDivisor() external view returns (uint256);
    function maxSupply() external view returns (uint256);
    function mint(address account, uint256 amount) external returns (bool);
    function burn(address account, uint256 amount) external returns (bool);
    function toast(uint256 amount) external returns (bool);
    function rebase() external returns (bool);
}

File 6 of 7 : IFloor.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

interface IFloor {
    function refund(address receiver, uint256 burnAmount) external returns (uint256);
    function capital() external view returns (uint256);
    function getMaxMintAmount(uint256 ethAmount) external view returns (uint256);
    function getRefundAmount(uint256 _tokenAmount) external view returns (uint256);
}

File 7 of 7 : IX2Fund.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

interface IX2Fund {
    function distribute() external returns (uint256);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_floor","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"gov","type":"address"}],"name":"GovChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"}],"name":"addSender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimableReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cumulativeRewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"floor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"previousCumulatedRewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"refund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"}],"name":"removeSender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"senders","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_distributor","type":"address"}],"name":"setDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawWithoutDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50604051611af0380380611af08339818101604052604081101561003357600080fd5b5080516020918201516001600081905580546001600160a01b038085166001600160a01b031992831681179093556002805491851691909216179055604080516310018abd60e21b815290519394929391926340062af492600480840193829003018186803b1580156100a557600080fd5b505afa1580156100b9573d6000803e3d6000fd5b505050506040513d60208110156100cf57600080fd5b50516005555050600380546001600160a01b031916331790556119f9806100f76000396000f3fe6080604052600436106101dc5760003560e01c8063982fb9d811610102578063dd62ed3e11610095578063f5fc507611610064578063f5fc5076146106b6578063f9b7a2c0146106cb578063fa89401a14610704578063fc0c546a14610737576101e3565b8063dd62ed3e146105fa578063e5eb6ab514610635578063e95034251461064a578063f3fef3a31461067d576101e3565b8063b6b55f25116100d1578063b6b55f2514610573578063bfe109281461059d578063c9059483146105b2578063cfad57a2146105c7576101e3565b8063982fb9d8146104da578063a9059cbb14610272578063b2f876431461050d578063b697f53114610540576101e3565b806327e235e31161017a57806344a084111161014957806344a084111461042c57806370a082311461045f57806375619ab51461049257806395d89b41146104c5576101e3565b806327e235e3146103a4578063313ce567146103d75780633eaaf86b146104025780634069536314610417576101e3565b806318160ddd116101b657806318160ddd146102f05780631e83409a1461031757806323b872dd1461034c578063246ea64e1461038f576101e3565b806306fdde03146101e8578063095ea7b31461027257806312d43a51146102bf576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd61074c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023757818101518382015260200161021f565b50505050905090810190601f1680156102645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027e57600080fd5b506102ab6004803603604081101561029557600080fd5b506001600160a01b038135169060200135610776565b604080519115158252519081900360200190f35b3480156102cb57600080fd5b506102d46107c5565b604080516001600160a01b039092168252519081900360200190f35b3480156102fc57600080fd5b506103056107d4565b60408051918252519081900360200190f35b34801561032357600080fd5b5061034a6004803603602081101561033a57600080fd5b50356001600160a01b03166107ef565b005b34801561035857600080fd5b506102ab6004803603606081101561036f57600080fd5b506001600160a01b03813581169160208101359091169060400135610776565b34801561039b57600080fd5b50610305610951565b3480156103b057600080fd5b50610305600480360360208110156103c757600080fd5b50356001600160a01b03166109e7565b3480156103e357600080fd5b506103ec6109f9565b6040805160ff9092168252519081900360200190f35b34801561040e57600080fd5b506103056109fe565b34801561042357600080fd5b506102d4610a04565b34801561043857600080fd5b506103056004803603602081101561044f57600080fd5b50356001600160a01b0316610a13565b34801561046b57600080fd5b506103056004803603602081101561048257600080fd5b50356001600160a01b0316610a25565b34801561049e57600080fd5b5061034a600480360360208110156104b557600080fd5b50356001600160a01b0316610a57565b3480156104d157600080fd5b506101fd610acf565b3480156104e657600080fd5b506102ab600480360360208110156104fd57600080fd5b50356001600160a01b0316610af2565b34801561051957600080fd5b5061034a6004803603602081101561053057600080fd5b50356001600160a01b0316610b07565b34801561054c57600080fd5b5061034a6004803603602081101561056357600080fd5b50356001600160a01b0316610beb565b34801561057f57600080fd5b5061034a6004803603602081101561059657600080fd5b5035610cd3565b3480156105a957600080fd5b506102d4610ef7565b3480156105be57600080fd5b50610305610f06565b3480156105d357600080fd5b5061034a600480360360208110156105ea57600080fd5b50356001600160a01b0316610f0c565b34801561060657600080fd5b506103056004803603604081101561061d57600080fd5b506001600160a01b0381358116916020013516610fb6565b34801561064157600080fd5b50610305610fbe565b34801561065657600080fd5b506103056004803603602081101561066d57600080fd5b50356001600160a01b031661106c565b34801561068957600080fd5b5061034a600480360360408110156106a057600080fd5b506001600160a01b03813516906020013561107e565b3480156106c257600080fd5b5061030561113c565b3480156106d757600080fd5b5061034a600480360360408110156106ee57600080fd5b506001600160a01b038135169060200135611142565b34801561071057600080fd5b506103056004803603602081101561072757600080fd5b50356001600160a01b03166111eb565b34801561074357600080fd5b506102d46113cc565b6040518060400160405280600e81526020016d1615925608109d5c9b95985d5b1d60921b81525081565b6040805162461bcd60e51b815260206004820152601c60248201527f4275726e5661756c743a206e6f6e2d7472616e736665727261626c65000000006044820152905160009181900360640190fd5b6003546001600160a01b031681565b60006107ea6107e1610fbe565b600654906113db565b905090565b60026000541415610835576040805162461bcd60e51b815260206004820152601f6024820152600080516020611983833981519152604482015290519081900360640190fd5b600260005533610846816001611424565b6001600160a01b038082166000908152600a60205260408082208054908390559051909285169083908381818185875af1925050503d80600081146108a7576040519150601f19603f3d011682016040523d82523d6000602084013e6108ac565b606091505b5050905080610902576040805162461bcd60e51b815260206004820152601a60248201527f4275726e5661756c743a207472616e73666572206661696c6564000000000000604482015290519081900360640190fd5b604080516001600160a01b03861681526020810184905281517f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4929181900390910190a1505060016000555050565b600154604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156109a157600080fd5b505afa1580156109b5573d6000803e3d6000fd5b505050506040513d60208110156109cb57600080fd5b505190506109e16109da6107d4565b82906115b4565b91505090565b60076020526000908152604090205481565b601281565b60065481565b6002546001600160a01b031681565b600b6020526000908152604090205481565b6000610a51610a32610fbe565b6001600160a01b038416600090815260076020526040902054906113db565b92915050565b6003546001600160a01b03163314610aad576040805162461bcd60e51b8152602060048201526014602482015273213ab9372b30bab63a1d103337b93134b23232b760611b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b604051806040016040528060078152602001662c2b24ac1d212b60c91b81525081565b60086020526000908152604090205460ff1681565b6003546001600160a01b03163314610b5d576040805162461bcd60e51b8152602060048201526014602482015273213ab9372b30bab63a1d103337b93134b23232b760611b604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff16610bca576040805162461bcd60e51b815260206004820152601960248201527f4275726e5661756c743a20696e76616c69642073656e64657200000000000000604482015290519081900360640190fd5b6001600160a01b03166000908152600860205260409020805460ff19169055565b6003546001600160a01b03163314610c41576040805162461bcd60e51b8152602060048201526014602482015273213ab9372b30bab63a1d103337b93134b23232b760611b604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1615610caf576040805162461bcd60e51b815260206004820152601f60248201527f4275726e5661756c743a2073656e64657220616c726561647920616464656400604482015290519081900360640190fd5b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b60026000541415610d19576040805162461bcd60e51b815260206004820152601f6024820152600080516020611983833981519152604482015290519081900360640190fd5b600260005580610d70576040805162461bcd60e51b815260206004820152601e60248201527f4275726e5661756c743a20696e73756666696369656e7420616d6f756e740000604482015290519081900360640190fd5b33610d7c816001611424565b600154604080516323b872dd60e01b81526001600160a01b03848116600483015230602483015260448201869052915191909216916323b872dd9160648083019260209291908290030181600087803b158015610dd857600080fd5b505af1158015610dec573d6000803e3d6000fd5b505050506040513d6020811015610e0257600080fd5b5060009050610e19610e12610fbe565b84906115f6565b6001600160a01b038316600090815260076020526040902054909150610e3f908261164f565b6001600160a01b038316600090815260076020526040902055600654610e65908261164f565b600655604080516001600160a01b03841681526020810185905281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a16040805184815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600160005550565b6004546001600160a01b031681565b60055481565b6003546001600160a01b03163314610f62576040805162461bcd60e51b8152602060048201526014602482015273213ab9372b30bab63a1d103337b93134b23232b760611b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2c5d53cd16ceaf62d39256419d59e80a42575bfc21eab954015ca61b42dbe4619181900360200190a150565b600092915050565b600080600160009054906101000a90046001600160a01b03166001600160a01b03166340062af46040518163ffffffff1660e01b815260040160206040518083038186803b15801561100f57600080fd5b505afa158015611023573d6000803e3d6000fd5b505050506040513d602081101561103957600080fd5b50516005549091506000611058600261105285856115b4565b906113db565b9050611064828261164f565b935050505090565b600a6020526000908152604090205481565b600260005414156110c4576040805162461bcd60e51b815260206004820152601f6024820152600080516020611983833981519152604482015290519081900360640190fd5b60026000558061111b576040805162461bcd60e51b815260206004820152601e60248201527f4275726e5661756c743a20696e73756666696369656e7420616d6f756e740000604482015290519081900360640190fd5b33611127816001611424565b6111328184846116a9565b5050600160005550565b60095481565b60026000541415611188576040805162461bcd60e51b815260206004820152601f6024820152600080516020611983833981519152604482015290519081900360640190fd5b6002600055806111df576040805162461bcd60e51b815260206004820152601e60248201527f4275726e5661756c743a20696e73756666696369656e7420616d6f756e740000604482015290519081900360640190fd5b33611127816000611424565b600060026000541415611233576040805162461bcd60e51b815260206004820152601f6024820152600080516020611983833981519152604482015290519081900360640190fd5b600260009081553381526008602052604090205460ff16611292576040805162461bcd60e51b8152602060048201526014602482015273213ab9372b30bab63a1d103337b93134b23232b760611b604482015290519081900360640190fd5b600061129c610951565b9050806112ad5760009150506113c2565b6002546040805163013354a560e21b81526004810184905290516000926001600160a01b0316916304cd5294916024808301926020929190829003018186803b1580156112f957600080fd5b505afa15801561130d573d6000803e3d6000fd5b505050506040513d602081101561132357600080fd5b5051905080611337576000925050506113c2565b6002546040805163410085df60e01b81526001600160a01b038781166004830152602482018690529151600093929092169163410085df9160448082019260209290919082900301818787803b15801561139057600080fd5b505af11580156113a4573d6000803e3d6000fd5b505050506040513d60208110156113ba57600080fd5b505193505050505b6001600055919050565b6001546001600160a01b031681565b600061141d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611886565b9392505050565b600081801561143d57506004546001600160a01b031615155b156114b557600480546040805163e4fc6b6d60e01b815290516001600160a01b039092169263e4fc6b6d9282820192602092908290030181600087803b15801561148657600080fd5b505af115801561149a573d6000803e3d6000fd5b505050506040513d60208110156114b057600080fd5b505190505b600954600654158015906114c95750600082115b156114ff576006546114f7906114f090611052856c0c9f2c9cd04674edea400000006115f6565b829061164f565b600981905590505b8061150b5750506115b0565b6001600160a01b0384166000908152600b6020526040812054906115846115656c0c9f2c9cd04674edea4000000061105261154687876115b4565b6001600160a01b038b16600090815260076020526040902054906115f6565b6001600160a01b0388166000908152600a60205260409020549061164f565b6001600160a01b0387166000908152600a6020908152604080832093909355600b905220929092555050505b5050565b600061141d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611928565b60008261160557506000610a51565b8282028284828161161257fe5b041461141d5760405162461bcd60e51b81526004018080602001828103825260218152602001806119a36021913960400191505060405180910390fd5b60008282018381101561141d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006116bd6116b6610fbe565b83906115f6565b6001600160a01b03851660009081526007602052604090205490915081111561172d576040805162461bcd60e51b815260206004820152601f60248201527f4275726e5661756c743a20696e73756666696369656e742062616c616e636500604482015290519081900360640190fd5b6001600160a01b03841660009081526007602052604090205461175090826115b4565b6001600160a01b03851660009081526007602052604090205560065461177690826115b4565b6006556001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b505050506040513d60208110156117f957600080fd5b5050604080516001600160a01b03861681526020810184905281517f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364929181900390910190a16040805183815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350505050565b600081836119125760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118d75781810151838201526020016118bf565b50505050905090810190601f1680156119045780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161191e57fe5b0495945050505050565b6000818484111561197a5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156118d75781810151838201526020016118bf565b50505090039056fe5265656e7472616e637947756172643a207265656e7472616e742063616c6c00536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212200edc5f4b316aec95304175891bac91c755720e33ba650feead5712d0c9daee2d64736f6c634300060c00330000000000000000000000004bae380b5d762d543d426331b8437926443ae9ec00000000000000000000000040ed3699c2ffe43939ecf2f3d11f633b522820ad

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c8063982fb9d811610102578063dd62ed3e11610095578063f5fc507611610064578063f5fc5076146106b6578063f9b7a2c0146106cb578063fa89401a14610704578063fc0c546a14610737576101e3565b8063dd62ed3e146105fa578063e5eb6ab514610635578063e95034251461064a578063f3fef3a31461067d576101e3565b8063b6b55f25116100d1578063b6b55f2514610573578063bfe109281461059d578063c9059483146105b2578063cfad57a2146105c7576101e3565b8063982fb9d8146104da578063a9059cbb14610272578063b2f876431461050d578063b697f53114610540576101e3565b806327e235e31161017a57806344a084111161014957806344a084111461042c57806370a082311461045f57806375619ab51461049257806395d89b41146104c5576101e3565b806327e235e3146103a4578063313ce567146103d75780633eaaf86b146104025780634069536314610417576101e3565b806318160ddd116101b657806318160ddd146102f05780631e83409a1461031757806323b872dd1461034c578063246ea64e1461038f576101e3565b806306fdde03146101e8578063095ea7b31461027257806312d43a51146102bf576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd61074c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023757818101518382015260200161021f565b50505050905090810190601f1680156102645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027e57600080fd5b506102ab6004803603604081101561029557600080fd5b506001600160a01b038135169060200135610776565b604080519115158252519081900360200190f35b3480156102cb57600080fd5b506102d46107c5565b604080516001600160a01b039092168252519081900360200190f35b3480156102fc57600080fd5b506103056107d4565b60408051918252519081900360200190f35b34801561032357600080fd5b5061034a6004803603602081101561033a57600080fd5b50356001600160a01b03166107ef565b005b34801561035857600080fd5b506102ab6004803603606081101561036f57600080fd5b506001600160a01b03813581169160208101359091169060400135610776565b34801561039b57600080fd5b50610305610951565b3480156103b057600080fd5b50610305600480360360208110156103c757600080fd5b50356001600160a01b03166109e7565b3480156103e357600080fd5b506103ec6109f9565b6040805160ff9092168252519081900360200190f35b34801561040e57600080fd5b506103056109fe565b34801561042357600080fd5b506102d4610a04565b34801561043857600080fd5b506103056004803603602081101561044f57600080fd5b50356001600160a01b0316610a13565b34801561046b57600080fd5b506103056004803603602081101561048257600080fd5b50356001600160a01b0316610a25565b34801561049e57600080fd5b5061034a600480360360208110156104b557600080fd5b50356001600160a01b0316610a57565b3480156104d157600080fd5b506101fd610acf565b3480156104e657600080fd5b506102ab600480360360208110156104fd57600080fd5b50356001600160a01b0316610af2565b34801561051957600080fd5b5061034a6004803603602081101561053057600080fd5b50356001600160a01b0316610b07565b34801561054c57600080fd5b5061034a6004803603602081101561056357600080fd5b50356001600160a01b0316610beb565b34801561057f57600080fd5b5061034a6004803603602081101561059657600080fd5b5035610cd3565b3480156105a957600080fd5b506102d4610ef7565b3480156105be57600080fd5b50610305610f06565b3480156105d357600080fd5b5061034a600480360360208110156105ea57600080fd5b50356001600160a01b0316610f0c565b34801561060657600080fd5b506103056004803603604081101561061d57600080fd5b506001600160a01b0381358116916020013516610fb6565b34801561064157600080fd5b50610305610fbe565b34801561065657600080fd5b506103056004803603602081101561066d57600080fd5b50356001600160a01b031661106c565b34801561068957600080fd5b5061034a600480360360408110156106a057600080fd5b506001600160a01b03813516906020013561107e565b3480156106c257600080fd5b5061030561113c565b3480156106d757600080fd5b5061034a600480360360408110156106ee57600080fd5b506001600160a01b038135169060200135611142565b34801561071057600080fd5b506103056004803603602081101561072757600080fd5b50356001600160a01b03166111eb565b34801561074357600080fd5b506102d46113cc565b6040518060400160405280600e81526020016d1615925608109d5c9b95985d5b1d60921b81525081565b6040805162461bcd60e51b815260206004820152601c60248201527f4275726e5661756c743a206e6f6e2d7472616e736665727261626c65000000006044820152905160009181900360640190fd5b6003546001600160a01b031681565b60006107ea6107e1610fbe565b600654906113db565b905090565b60026000541415610835576040805162461bcd60e51b815260206004820152601f6024820152600080516020611983833981519152604482015290519081900360640190fd5b600260005533610846816001611424565b6001600160a01b038082166000908152600a60205260408082208054908390559051909285169083908381818185875af1925050503d80600081146108a7576040519150601f19603f3d011682016040523d82523d6000602084013e6108ac565b606091505b5050905080610902576040805162461bcd60e51b815260206004820152601a60248201527f4275726e5661756c743a207472616e73666572206661696c6564000000000000604482015290519081900360640190fd5b604080516001600160a01b03861681526020810184905281517f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4929181900390910190a1505060016000555050565b600154604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156109a157600080fd5b505afa1580156109b5573d6000803e3d6000fd5b505050506040513d60208110156109cb57600080fd5b505190506109e16109da6107d4565b82906115b4565b91505090565b60076020526000908152604090205481565b601281565b60065481565b6002546001600160a01b031681565b600b6020526000908152604090205481565b6000610a51610a32610fbe565b6001600160a01b038416600090815260076020526040902054906113db565b92915050565b6003546001600160a01b03163314610aad576040805162461bcd60e51b8152602060048201526014602482015273213ab9372b30bab63a1d103337b93134b23232b760611b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b604051806040016040528060078152602001662c2b24ac1d212b60c91b81525081565b60086020526000908152604090205460ff1681565b6003546001600160a01b03163314610b5d576040805162461bcd60e51b8152602060048201526014602482015273213ab9372b30bab63a1d103337b93134b23232b760611b604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff16610bca576040805162461bcd60e51b815260206004820152601960248201527f4275726e5661756c743a20696e76616c69642073656e64657200000000000000604482015290519081900360640190fd5b6001600160a01b03166000908152600860205260409020805460ff19169055565b6003546001600160a01b03163314610c41576040805162461bcd60e51b8152602060048201526014602482015273213ab9372b30bab63a1d103337b93134b23232b760611b604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1615610caf576040805162461bcd60e51b815260206004820152601f60248201527f4275726e5661756c743a2073656e64657220616c726561647920616464656400604482015290519081900360640190fd5b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b60026000541415610d19576040805162461bcd60e51b815260206004820152601f6024820152600080516020611983833981519152604482015290519081900360640190fd5b600260005580610d70576040805162461bcd60e51b815260206004820152601e60248201527f4275726e5661756c743a20696e73756666696369656e7420616d6f756e740000604482015290519081900360640190fd5b33610d7c816001611424565b600154604080516323b872dd60e01b81526001600160a01b03848116600483015230602483015260448201869052915191909216916323b872dd9160648083019260209291908290030181600087803b158015610dd857600080fd5b505af1158015610dec573d6000803e3d6000fd5b505050506040513d6020811015610e0257600080fd5b5060009050610e19610e12610fbe565b84906115f6565b6001600160a01b038316600090815260076020526040902054909150610e3f908261164f565b6001600160a01b038316600090815260076020526040902055600654610e65908261164f565b600655604080516001600160a01b03841681526020810185905281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a16040805184815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600160005550565b6004546001600160a01b031681565b60055481565b6003546001600160a01b03163314610f62576040805162461bcd60e51b8152602060048201526014602482015273213ab9372b30bab63a1d103337b93134b23232b760611b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2c5d53cd16ceaf62d39256419d59e80a42575bfc21eab954015ca61b42dbe4619181900360200190a150565b600092915050565b600080600160009054906101000a90046001600160a01b03166001600160a01b03166340062af46040518163ffffffff1660e01b815260040160206040518083038186803b15801561100f57600080fd5b505afa158015611023573d6000803e3d6000fd5b505050506040513d602081101561103957600080fd5b50516005549091506000611058600261105285856115b4565b906113db565b9050611064828261164f565b935050505090565b600a6020526000908152604090205481565b600260005414156110c4576040805162461bcd60e51b815260206004820152601f6024820152600080516020611983833981519152604482015290519081900360640190fd5b60026000558061111b576040805162461bcd60e51b815260206004820152601e60248201527f4275726e5661756c743a20696e73756666696369656e7420616d6f756e740000604482015290519081900360640190fd5b33611127816001611424565b6111328184846116a9565b5050600160005550565b60095481565b60026000541415611188576040805162461bcd60e51b815260206004820152601f6024820152600080516020611983833981519152604482015290519081900360640190fd5b6002600055806111df576040805162461bcd60e51b815260206004820152601e60248201527f4275726e5661756c743a20696e73756666696369656e7420616d6f756e740000604482015290519081900360640190fd5b33611127816000611424565b600060026000541415611233576040805162461bcd60e51b815260206004820152601f6024820152600080516020611983833981519152604482015290519081900360640190fd5b600260009081553381526008602052604090205460ff16611292576040805162461bcd60e51b8152602060048201526014602482015273213ab9372b30bab63a1d103337b93134b23232b760611b604482015290519081900360640190fd5b600061129c610951565b9050806112ad5760009150506113c2565b6002546040805163013354a560e21b81526004810184905290516000926001600160a01b0316916304cd5294916024808301926020929190829003018186803b1580156112f957600080fd5b505afa15801561130d573d6000803e3d6000fd5b505050506040513d602081101561132357600080fd5b5051905080611337576000925050506113c2565b6002546040805163410085df60e01b81526001600160a01b038781166004830152602482018690529151600093929092169163410085df9160448082019260209290919082900301818787803b15801561139057600080fd5b505af11580156113a4573d6000803e3d6000fd5b505050506040513d60208110156113ba57600080fd5b505193505050505b6001600055919050565b6001546001600160a01b031681565b600061141d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611886565b9392505050565b600081801561143d57506004546001600160a01b031615155b156114b557600480546040805163e4fc6b6d60e01b815290516001600160a01b039092169263e4fc6b6d9282820192602092908290030181600087803b15801561148657600080fd5b505af115801561149a573d6000803e3d6000fd5b505050506040513d60208110156114b057600080fd5b505190505b600954600654158015906114c95750600082115b156114ff576006546114f7906114f090611052856c0c9f2c9cd04674edea400000006115f6565b829061164f565b600981905590505b8061150b5750506115b0565b6001600160a01b0384166000908152600b6020526040812054906115846115656c0c9f2c9cd04674edea4000000061105261154687876115b4565b6001600160a01b038b16600090815260076020526040902054906115f6565b6001600160a01b0388166000908152600a60205260409020549061164f565b6001600160a01b0387166000908152600a6020908152604080832093909355600b905220929092555050505b5050565b600061141d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611928565b60008261160557506000610a51565b8282028284828161161257fe5b041461141d5760405162461bcd60e51b81526004018080602001828103825260218152602001806119a36021913960400191505060405180910390fd5b60008282018381101561141d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006116bd6116b6610fbe565b83906115f6565b6001600160a01b03851660009081526007602052604090205490915081111561172d576040805162461bcd60e51b815260206004820152601f60248201527f4275726e5661756c743a20696e73756666696369656e742062616c616e636500604482015290519081900360640190fd5b6001600160a01b03841660009081526007602052604090205461175090826115b4565b6001600160a01b03851660009081526007602052604090205560065461177690826115b4565b6006556001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b505050506040513d60208110156117f957600080fd5b5050604080516001600160a01b03861681526020810184905281517f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364929181900390910190a16040805183815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350505050565b600081836119125760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118d75781810151838201526020016118bf565b50505050905090810190601f1680156119045780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161191e57fe5b0495945050505050565b6000818484111561197a5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156118d75781810151838201526020016118bf565b50505090039056fe5265656e7472616e637947756172643a207265656e7472616e742063616c6c00536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212200edc5f4b316aec95304175891bac91c755720e33ba650feead5712d0c9daee2d64736f6c634300060c0033

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

0000000000000000000000004bae380b5d762d543d426331b8437926443ae9ec00000000000000000000000040ed3699c2ffe43939ecf2f3d11f633b522820ad

-----Decoded View---------------
Arg [0] : _token (address): 0x4bAE380B5D762D543d426331b8437926443ae9ec
Arg [1] : _floor (address): 0x40ED3699C2fFe43939ecf2F3d11F633b522820aD

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000004bae380b5d762d543d426331b8437926443ae9ec
Arg [1] : 00000000000000000000000040ed3699c2ffe43939ecf2f3d11f633b522820ad


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.