ETH Price: $3,155.53 (+1.16%)
Gas: 0.06 GWei

Contract

0x716F2de8A4dE036FFe2b806A2948060A6f1053f5
Transaction Hash
Method
Block
From
To
Value
Claim67349682024-07-13 12:19:122 hrs ago1720873152IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000008510.07
Claim67045932024-07-12 19:26:4219 hrs ago1720812402IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.00000860.062
Claim66800182024-07-12 5:47:3233 hrs ago1720763252IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000007080.0582
Claim65266282024-07-08 16:34:144 days ago1720456454IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000007050.0582
Claim64789962024-07-07 14:06:276 days ago1720361187IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000008050.0582
Claim64712112024-07-07 9:46:556 days ago1720345615IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000007030.0582
Claim64635612024-07-07 5:31:556 days ago1720330315IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000007360.061
Claim64375912024-07-06 15:04:317 days ago1720278271IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000007360.061
Claim64241242024-07-06 7:35:357 days ago1720251335IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000007030.0582
Claim63783232024-07-05 6:08:538 days ago1720159733IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000012340.10216956
Claim63624312024-07-04 21:19:098 days ago1720127949IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000007030.0582
Claim63619742024-07-04 21:03:558 days ago1720127035IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000007360.061
Claim63488052024-07-04 13:44:559 days ago1720100695IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000008570.071
Claim63477472024-07-04 13:09:399 days ago1720098579IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.00000770.06379634
Claim63472492024-07-04 12:53:039 days ago1720097583IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000007560.06262979
Claim63197642024-07-03 21:36:479 days ago1720042607IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000008330.069
Claim63186592024-07-03 20:59:579 days ago1720040397IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000008330.069
Claim63141202024-07-03 18:28:359 days ago1720031315IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000010860.079
Claim62803942024-07-02 23:43:2810 days ago1719963808IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000007460.062
Claim62509892024-07-02 7:23:1611 days ago1719904996IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.0000070.0582
Claim62494602024-07-02 6:32:1811 days ago1719901938IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000007460.062
Claim62276642024-07-01 18:25:4411 days ago1719858344IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000007940.066
Claim62161882024-07-01 12:03:1012 days ago1719835390IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000007580.063
Claim62067742024-07-01 6:49:2212 days ago1719816562IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000006780.0564
Claim61895002024-06-30 21:13:0512 days ago1719781985IN
Mendi Finance: LGE Bonus Distributor
0 ETH0.000007460.062
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To Value
67349682024-07-13 12:19:122 hrs ago1720873152
Mendi Finance: LGE Bonus Distributor
0 ETH
67349682024-07-13 12:19:122 hrs ago1720873152
Mendi Finance: LGE Bonus Distributor
0 ETH
67045932024-07-12 19:26:4219 hrs ago1720812402
Mendi Finance: LGE Bonus Distributor
0 ETH
67045932024-07-12 19:26:4219 hrs ago1720812402
Mendi Finance: LGE Bonus Distributor
0 ETH
66800182024-07-12 5:47:3233 hrs ago1720763252
Mendi Finance: LGE Bonus Distributor
0 ETH
66800182024-07-12 5:47:3233 hrs ago1720763252
Mendi Finance: LGE Bonus Distributor
0 ETH
65266282024-07-08 16:34:144 days ago1720456454
Mendi Finance: LGE Bonus Distributor
0 ETH
65266282024-07-08 16:34:144 days ago1720456454
Mendi Finance: LGE Bonus Distributor
0 ETH
64789962024-07-07 14:06:276 days ago1720361187
Mendi Finance: LGE Bonus Distributor
0 ETH
64789962024-07-07 14:06:276 days ago1720361187
Mendi Finance: LGE Bonus Distributor
0 ETH
64712112024-07-07 9:46:556 days ago1720345615
Mendi Finance: LGE Bonus Distributor
0 ETH
64712112024-07-07 9:46:556 days ago1720345615
Mendi Finance: LGE Bonus Distributor
0 ETH
64635612024-07-07 5:31:556 days ago1720330315
Mendi Finance: LGE Bonus Distributor
0 ETH
64635612024-07-07 5:31:556 days ago1720330315
Mendi Finance: LGE Bonus Distributor
0 ETH
64375912024-07-06 15:04:317 days ago1720278271
Mendi Finance: LGE Bonus Distributor
0 ETH
64375912024-07-06 15:04:317 days ago1720278271
Mendi Finance: LGE Bonus Distributor
0 ETH
64241242024-07-06 7:35:357 days ago1720251335
Mendi Finance: LGE Bonus Distributor
0 ETH
64241242024-07-06 7:35:357 days ago1720251335
Mendi Finance: LGE Bonus Distributor
0 ETH
63783232024-07-05 6:08:538 days ago1720159733
Mendi Finance: LGE Bonus Distributor
0 ETH
63783232024-07-05 6:08:538 days ago1720159733
Mendi Finance: LGE Bonus Distributor
0 ETH
63624312024-07-04 21:19:098 days ago1720127949
Mendi Finance: LGE Bonus Distributor
0 ETH
63624312024-07-04 21:19:098 days ago1720127949
Mendi Finance: LGE Bonus Distributor
0 ETH
63619742024-07-04 21:03:558 days ago1720127035
Mendi Finance: LGE Bonus Distributor
0 ETH
63619742024-07-04 21:03:558 days ago1720127035
Mendi Finance: LGE Bonus Distributor
0 ETH
63488052024-07-04 13:44:559 days ago1720100695
Mendi Finance: LGE Bonus Distributor
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OwnedDistributor

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license
File 1 of 5 : OwnedDistributor.sol
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.10;

import "./Distributor.sol";

contract OwnedDistributor is Distributor {
    address public admin;

    event SetAdmin(address newAdmin);

    constructor(
        address mendi_,
        address claimable_,
        address admin_
    ) Distributor(mendi_, claimable_) {
        admin = admin_;
    }

    function editRecipient(address account, uint256 shares) public virtual {
        require(msg.sender == admin, "OwnedDistributor: UNAUTHORIZED");
        editRecipientInternal(account, shares);
    }

    function editRecipients(
        address[] memory accounts,
        uint256[] memory shares
    ) public virtual {
        require(msg.sender == admin, "OwnedDistributor: UNAUTHORIZED");
        require(
            accounts.length == shares.length,
            "OwnedDistributor: INVALID_INPUT"
        );

        for (uint256 i = 0; i < accounts.length; i++) {
            editRecipientInternal(accounts[i], shares[i]);
        }
    }

    function setAdmin(address admin_) public virtual {
        require(msg.sender == admin, "OwnedDistributor: UNAUTHORIZED");
        admin = admin_;
        emit SetAdmin(admin_);
    }
}

File 2 of 5 : SafeMath.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

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

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

File 3 of 5 : Distributor.sol
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.10;

import "@openzeppelin/contracts/utils/math/SafeMath.sol";

import "./interfaces/IMendi.sol";
import "./interfaces/IClaimable.sol";

abstract contract Distributor is IClaimable {
    using SafeMath for uint256;

    uint256 public constant MANTISSA2 = 2 ** 160;

    address public immutable mendi;
    address public immutable claimable;

    struct Recipient {
        uint256 shares;
        uint256 lastShareIndex;
        uint256 credit;
    }
    mapping(address => Recipient) public recipients;

    uint256 public totalShares;
    uint256 public shareIndex;

    event UpdateShareIndex(uint256 shareIndex);
    event UpdateCredit(
        address indexed account,
        uint256 lastShareIndex,
        uint256 credit
    );
    event EditRecipient(
        address indexed account,
        uint256 shares,
        uint256 totalShares
    );

    constructor(address mendi_, address claimable_) {
        mendi = mendi_;
        claimable = claimable_;
    }

    function updateShareIndex()
        public
        virtual
        nonReentrant
        returns (uint256 _shareIndex)
    {
        if (totalShares == 0) return shareIndex;
        uint256 amount = IClaimable(claimable).claim();
        if (amount == 0) return shareIndex;

        _shareIndex = amount.mul(MANTISSA2).div(totalShares).add(shareIndex);
        shareIndex = _shareIndex;
        emit UpdateShareIndex(_shareIndex);
    }

    function updateCredit(address account) public returns (uint256 credit) {
        uint256 _shareIndex = updateShareIndex();
        if (_shareIndex == 0) return 0;
        Recipient storage recipient = recipients[account];
        credit =
            recipient.credit +
            _shareIndex.sub(recipient.lastShareIndex).mul(recipient.shares) /
            MANTISSA2;
        recipient.lastShareIndex = _shareIndex;
        recipient.credit = credit;
        emit UpdateCredit(account, _shareIndex, credit);
    }

    function claimInternal(
        address account
    ) internal virtual returns (uint256 amount) {
        amount = updateCredit(account);
        if (amount > 0) {
            recipients[account].credit = 0;
            IMendi(mendi).transfer(account, amount);
            emit Claim(account, amount);
        }
    }

    function claim() external virtual override returns (uint256 amount) {
        return claimInternal(msg.sender);
    }

    function editRecipientInternal(address account, uint256 shares) internal {
        updateCredit(account);
        Recipient storage recipient = recipients[account];
        uint256 prevShares = recipient.shares;
        uint256 _totalShares = shares > prevShares
            ? totalShares.add(shares - prevShares)
            : totalShares.sub(prevShares - shares);
        totalShares = _totalShares;
        recipient.shares = shares;
        emit EditRecipient(account, shares, _totalShares);
    }

    // Prevents a contract from calling itself, directly or indirectly.
    bool internal _notEntered = true;
    modifier nonReentrant() {
        require(_notEntered, "Distributor: REENTERED");
        _notEntered = false;
        _;
        _notEntered = true;
    }
}

File 4 of 5 : IClaimable.sol
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.10;

interface IClaimable {
    function claim() external returns (uint256 amount);

    event Claim(address indexed account, uint256 amount);
}

File 5 of 5 : IMendi.sol
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.10;

//IERC20
interface IMendi {
    function balanceOf(address account) external view returns (uint256);

    function transfer(address dst, uint256 rawAmount) external returns (bool);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"mendi_","type":"address"},{"internalType":"address","name":"claimable_","type":"address"},{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalShares","type":"uint256"}],"name":"EditRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"SetAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"lastShareIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"credit","type":"uint256"}],"name":"UpdateCredit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"shareIndex","type":"uint256"}],"name":"UpdateShareIndex","type":"event"},{"inputs":[],"name":"MANTISSA2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimable","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"editRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}],"name":"editRecipients","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mendi","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"recipients","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"lastShareIndex","type":"uint256"},{"internalType":"uint256","name":"credit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin_","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shareIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"updateCredit","outputs":[{"internalType":"uint256","name":"credit","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateShareIndex","outputs":[{"internalType":"uint256","name":"_shareIndex","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]

60c06040526003805460ff1916600117905534801561001d57600080fd5b50604051610c77380380610c7783398101604081905261003c9161008d565b6001600160a01b0392831660805290821660a052600380549190921661010002610100600160a81b03199091161790556100d0565b80516001600160a01b038116811461008857600080fd5b919050565b6000806000606084860312156100a257600080fd5b6100ab84610071565b92506100b960208501610071565b91506100c760408501610071565b90509250925092565b60805160a051610b7461010360003960008181610182015261044101526000818161012501526107520152610b746000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063a4692a261161008c578063b9716d4f11610066578063b9716d4f146101ac578063c56ad1ad146101bf578063eb820312146101c8578063f851a4401461021257600080fd5b8063a4692a2614610172578063af38d7571461017d578063b260187d146101a457600080fd5b80633a98ef39146100d457806345c08718146100f05780634674a930146101035780634e71d92d146101185780635f33f28114610120578063704b6c021461015f575b600080fd5b6100dd60015481565b6040519081526020015b60405180910390f35b6100dd6100fe36600461083a565b61022a565b610116610111366004610855565b6102f4565b005b6100dd61033a565b6101477f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100e7565b61011661016d36600461083a565b61034a565b6100dd600160a01b81565b6101477f000000000000000000000000000000000000000000000000000000000000000081565b6100dd6103d5565b6101166101ba366004610955565b610550565b6100dd60025481565b6101f76101d636600461083a565b60006020819052908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016100e7565b6003546101479061010090046001600160a01b031681565b6000806102356103d5565b9050806102455750600092915050565b6001600160a01b038316600090815260208190526040902080546001820154600160a01b9161027f9161027990869061062f565b90610642565b6102899190610a2b565b81600201546102989190610a4d565b600182018390556002820181905560408051848152602081018390529194506001600160a01b038616917ff7240857a4f83123f14a7bc3f77cd32d0ae71ede635c92ebdcc14d5ea8ed018a910160405180910390a25050919050565b60035461010090046001600160a01b0316331461032c5760405162461bcd60e51b815260040161032390610a65565b60405180910390fd5b610336828261064e565b5050565b600061034533610702565b905090565b60035461010090046001600160a01b031633146103795760405162461bcd60e51b815260040161032390610a65565b60038054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a19060200160405180910390a150565b60035460009060ff166104235760405162461bcd60e51b8152602060048201526016602482015275111a5cdd1c9a589d5d1bdc8e8814915153951154915160521b6044820152606401610323565b6003805460ff1916905560015461043d5750600254610540565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634e71d92d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c39190610a9c565b9050806104d4575050600254610540565b6105036002546104fd6001546104f7600160a01b8661064290919063ffffffff16565b9061080b565b90610817565b60028190556040518181529092507f8cae7c5b456d193882de6985578f406aefb641501192211706c5aa0a32612fec9060200160405180910390a1505b6003805460ff1916600117905590565b60035461010090046001600160a01b0316331461057f5760405162461bcd60e51b815260040161032390610a65565b80518251146105d05760405162461bcd60e51b815260206004820152601f60248201527f4f776e65644469737472696275746f723a20494e56414c49445f494e505554006044820152606401610323565b60005b825181101561062a576106188382815181106105f1576105f1610ab5565b602002602001015183838151811061060b5761060b610ab5565b602002602001015161064e565b8061062281610acb565b9150506105d3565b505050565b600061063b8284610ae6565b9392505050565b600061063b8284610afd565b6106578261022a565b506001600160a01b038216600090815260208190526040812080549091818411610696576106916106888584610ae6565b6001549061062f565b6106ac565b6106ac6106a38386610ae6565b60015490610817565b600181905584845560408051868152602081018390529192506001600160a01b038716917fff3664f5f2f8f85ecd8d30ef2aa6773d8a8448219c7421dcbb67957fb3fafba1910160405180910390a25050505050565b600061070d8261022a565b90508015610806576001600160a01b03828116600081815260208190526040808220600201919091555163a9059cbb60e01b81526004810191909152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af115801561079d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c19190610b1c565b50816001600160a01b03167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4826040516107fd91815260200190565b60405180910390a25b919050565b600061063b8284610a2b565b600061063b8284610a4d565b80356001600160a01b038116811461080657600080fd5b60006020828403121561084c57600080fd5b61063b82610823565b6000806040838503121561086857600080fd5b61087183610823565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156108be576108be61087f565b604052919050565b600067ffffffffffffffff8211156108e0576108e061087f565b5060051b60200190565b600082601f8301126108fb57600080fd5b8135602061091061090b836108c6565b610895565b82815260059290921b8401810191818101908684111561092f57600080fd5b8286015b8481101561094a5780358352918301918301610933565b509695505050505050565b6000806040838503121561096857600080fd5b823567ffffffffffffffff8082111561098057600080fd5b818501915085601f83011261099457600080fd5b813560206109a461090b836108c6565b82815260059290921b840181019181810190898411156109c357600080fd5b948201945b838610156109e8576109d986610823565b825294820194908201906109c8565b965050860135925050808211156109fe57600080fd5b50610a0b858286016108ea565b9150509250929050565b634e487b7160e01b600052601160045260246000fd5b600082610a4857634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115610a6057610a60610a15565b500190565b6020808252601e908201527f4f776e65644469737472696275746f723a20554e415554484f52495a45440000604082015260600190565b600060208284031215610aae57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610adf57610adf610a15565b5060010190565b600082821015610af857610af8610a15565b500390565b6000816000190483118215151615610b1757610b17610a15565b500290565b600060208284031215610b2e57600080fd5b8151801515811461063b57600080fdfea26469706673582212203e280e29acbc440f288617124eb6fb7d49db059ec66eb6172e3a780d543c409f64736f6c634300080a003300000000000000000000000043e8809ea748eff3204ee01f08872f063e44065f000000000000000000000000bb4bba3b0afe7530985d1edc1f7b3e2a3ac2c31100000000000000000000000057cd331c7b2c7582625810465ea3cf9bdca21236

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063a4692a261161008c578063b9716d4f11610066578063b9716d4f146101ac578063c56ad1ad146101bf578063eb820312146101c8578063f851a4401461021257600080fd5b8063a4692a2614610172578063af38d7571461017d578063b260187d146101a457600080fd5b80633a98ef39146100d457806345c08718146100f05780634674a930146101035780634e71d92d146101185780635f33f28114610120578063704b6c021461015f575b600080fd5b6100dd60015481565b6040519081526020015b60405180910390f35b6100dd6100fe36600461083a565b61022a565b610116610111366004610855565b6102f4565b005b6100dd61033a565b6101477f00000000000000000000000043e8809ea748eff3204ee01f08872f063e44065f81565b6040516001600160a01b0390911681526020016100e7565b61011661016d36600461083a565b61034a565b6100dd600160a01b81565b6101477f000000000000000000000000bb4bba3b0afe7530985d1edc1f7b3e2a3ac2c31181565b6100dd6103d5565b6101166101ba366004610955565b610550565b6100dd60025481565b6101f76101d636600461083a565b60006020819052908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016100e7565b6003546101479061010090046001600160a01b031681565b6000806102356103d5565b9050806102455750600092915050565b6001600160a01b038316600090815260208190526040902080546001820154600160a01b9161027f9161027990869061062f565b90610642565b6102899190610a2b565b81600201546102989190610a4d565b600182018390556002820181905560408051848152602081018390529194506001600160a01b038616917ff7240857a4f83123f14a7bc3f77cd32d0ae71ede635c92ebdcc14d5ea8ed018a910160405180910390a25050919050565b60035461010090046001600160a01b0316331461032c5760405162461bcd60e51b815260040161032390610a65565b60405180910390fd5b610336828261064e565b5050565b600061034533610702565b905090565b60035461010090046001600160a01b031633146103795760405162461bcd60e51b815260040161032390610a65565b60038054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a19060200160405180910390a150565b60035460009060ff166104235760405162461bcd60e51b8152602060048201526016602482015275111a5cdd1c9a589d5d1bdc8e8814915153951154915160521b6044820152606401610323565b6003805460ff1916905560015461043d5750600254610540565b60007f000000000000000000000000bb4bba3b0afe7530985d1edc1f7b3e2a3ac2c3116001600160a01b0316634e71d92d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c39190610a9c565b9050806104d4575050600254610540565b6105036002546104fd6001546104f7600160a01b8661064290919063ffffffff16565b9061080b565b90610817565b60028190556040518181529092507f8cae7c5b456d193882de6985578f406aefb641501192211706c5aa0a32612fec9060200160405180910390a1505b6003805460ff1916600117905590565b60035461010090046001600160a01b0316331461057f5760405162461bcd60e51b815260040161032390610a65565b80518251146105d05760405162461bcd60e51b815260206004820152601f60248201527f4f776e65644469737472696275746f723a20494e56414c49445f494e505554006044820152606401610323565b60005b825181101561062a576106188382815181106105f1576105f1610ab5565b602002602001015183838151811061060b5761060b610ab5565b602002602001015161064e565b8061062281610acb565b9150506105d3565b505050565b600061063b8284610ae6565b9392505050565b600061063b8284610afd565b6106578261022a565b506001600160a01b038216600090815260208190526040812080549091818411610696576106916106888584610ae6565b6001549061062f565b6106ac565b6106ac6106a38386610ae6565b60015490610817565b600181905584845560408051868152602081018390529192506001600160a01b038716917fff3664f5f2f8f85ecd8d30ef2aa6773d8a8448219c7421dcbb67957fb3fafba1910160405180910390a25050505050565b600061070d8261022a565b90508015610806576001600160a01b03828116600081815260208190526040808220600201919091555163a9059cbb60e01b81526004810191909152602481018390527f00000000000000000000000043e8809ea748eff3204ee01f08872f063e44065f9091169063a9059cbb906044016020604051808303816000875af115801561079d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c19190610b1c565b50816001600160a01b03167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4826040516107fd91815260200190565b60405180910390a25b919050565b600061063b8284610a2b565b600061063b8284610a4d565b80356001600160a01b038116811461080657600080fd5b60006020828403121561084c57600080fd5b61063b82610823565b6000806040838503121561086857600080fd5b61087183610823565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156108be576108be61087f565b604052919050565b600067ffffffffffffffff8211156108e0576108e061087f565b5060051b60200190565b600082601f8301126108fb57600080fd5b8135602061091061090b836108c6565b610895565b82815260059290921b8401810191818101908684111561092f57600080fd5b8286015b8481101561094a5780358352918301918301610933565b509695505050505050565b6000806040838503121561096857600080fd5b823567ffffffffffffffff8082111561098057600080fd5b818501915085601f83011261099457600080fd5b813560206109a461090b836108c6565b82815260059290921b840181019181810190898411156109c357600080fd5b948201945b838610156109e8576109d986610823565b825294820194908201906109c8565b965050860135925050808211156109fe57600080fd5b50610a0b858286016108ea565b9150509250929050565b634e487b7160e01b600052601160045260246000fd5b600082610a4857634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115610a6057610a60610a15565b500190565b6020808252601e908201527f4f776e65644469737472696275746f723a20554e415554484f52495a45440000604082015260600190565b600060208284031215610aae57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610adf57610adf610a15565b5060010190565b600082821015610af857610af8610a15565b500390565b6000816000190483118215151615610b1757610b17610a15565b500290565b600060208284031215610b2e57600080fd5b8151801515811461063b57600080fdfea26469706673582212203e280e29acbc440f288617124eb6fb7d49db059ec66eb6172e3a780d543c409f64736f6c634300080a0033

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

00000000000000000000000043e8809ea748eff3204ee01f08872f063e44065f000000000000000000000000bb4bba3b0afe7530985d1edc1f7b3e2a3ac2c31100000000000000000000000057cd331c7b2c7582625810465ea3cf9bdca21236

-----Decoded View---------------
Arg [0] : mendi_ (address): 0x43E8809ea748EFf3204ee01F08872F063e44065f
Arg [1] : claimable_ (address): 0xBb4bBa3b0Afe7530985d1Edc1F7b3e2a3Ac2c311
Arg [2] : admin_ (address): 0x57cd331C7b2c7582625810465Ea3CF9bdcA21236

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000043e8809ea748eff3204ee01f08872f063e44065f
Arg [1] : 000000000000000000000000bb4bba3b0afe7530985d1edc1f7b3e2a3ac2c311
Arg [2] : 00000000000000000000000057cd331c7b2c7582625810465ea3cf9bdca21236


Block Transaction Gas Used Reward
view all blocks sequenced

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