Contract 0x82cED323FaE774d7aEdf822724BE5cd1C58548c4 1

 

Contract Overview

Balance:
0 MATIC

MATIC Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x7ba1eca33f9cbe4023817b15389930f87f6f1d6fb201e928b0c02bd67f36937eTransfer287580242022-05-25 15:58:493 hrs 17 mins ago0x4f4a187e12c8482b63624cfa21fccc071af914e5 IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.006204508308 39.765606651
0x79cd9d826b65e368d5c9f99d7a4cdb6703b49932a78a9068718b1f3a2f994438Transfer Max287383772022-05-25 4:16:0215 hrs ago0xa1647ca40e0baf26f76c310ccd97e648924beef6 IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.020303190016 30.000000024
0x07efd632e66b65add81ea4be371df0f7a6db5e20802a32a6f2d032f79c562e57Transfer Max287383412022-05-25 4:14:4615 hrs 1 min ago0xa1647ca40e0baf26f76c310ccd97e648924beef6 IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.029570224958 31.039999998
0x166202a0d1888f5e9c4c4ac32b9c189ceca085e1ec24974f2ddc29a6640eef87Transfer Max287382812022-05-25 4:12:4215 hrs 3 mins ago0xa1647ca40e0baf26f76c310ccd97e648924beef6 IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.02050788008 30.118209053
0x344e408dd696b43d9c47dca0f1956040346b2d413813443ecef6e11451160564Transfer Max287382282022-05-25 4:10:5215 hrs 5 mins ago0xa1647ca40e0baf26f76c310ccd97e648924beef6 IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.014298990007 30.000000016
0xb27a8a9d73c40a2c79684acd43139ef8f164f6fc66be23daf5f9c6b802042a39Transfer Max287381202022-05-25 4:07:1215 hrs 9 mins ago0x44f894339b041e20e2361527c9a90d92b156b961 IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.010235820006 30.000000019
0x51da14fa5769f646ee351196f8cf9322ed2c98532b0d318c1dcf2e3bacffd662Transfer287373142022-05-25 3:37:1815 hrs 38 mins ago0xd2b8d3db25d72ade1d96a387877c46769766b762 IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.005681255671 37.263420861
0x17812f4e593a98deffa821e2f80eb7ef91e48141aa7fe58112c4841df0542d4eTransfer287372842022-05-25 3:36:1815 hrs 39 mins ago0xd2b8d3db25d72ade1d96a387877c46769766b762 IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.005900274907 38.632821356
0x93ab3f44b738259fd8d3559814a55e10b71b20ff1f21957caa6c0a191ed47036Transfer287372362022-05-25 3:34:3815 hrs 41 mins ago0xd2b8d3db25d72ade1d96a387877c46769766b762 IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.006289147691 41.083521848
0xa7e1537624dc0b361ffa07db4b319d25c498dab4fbfaaf42ed2b8712509e418eTransfer287372052022-05-25 3:33:3215 hrs 42 mins ago0xd2b8d3db25d72ade1d96a387877c46769766b762 IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.008640686159 56.663581189
0x393fe299903b343c5155af6fea08acf937768f554fb64a5a461b4e7b64eec00aTransfer287371592022-05-25 3:32:0015 hrs 44 mins ago0xd2b8d3db25d72ade1d96a387877c46769766b762 IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.005761460208 37.60842456
0xf42cda7ad64c97220135d261233020e9ce69c2085802decad79373c7d1d09b66Transfer286574432022-05-23 4:45:582 days 14 hrs ago0x95e8f8498d131aacd54d7b9f14b2f182c9e215fe IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.004839011859 31.040000127
0xdd811c9ab33e5f84b68bef7cff05b824d5c4acf9afbb5c543575895568067039Transfer286573462022-05-23 4:41:282 days 14 hrs ago0x95e8f8498d131aacd54d7b9f14b2f182c9e215fe IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.004166589411 30.070000009
0x2a87c846a0f4c9a1698b961d9fc3f944a438f842f3260ffc47242ad3c1fbae3dTransfer286573122022-05-23 4:40:162 days 14 hrs ago0x95e8f8498d131aacd54d7b9f14b2f182c9e215fe IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.004831779521 31.040000012
0x7ad3b9149c952babd0271ddeb8fd5bc5b426f41e1744db45e6c9f0559dfbdfa6Transfer286572822022-05-23 4:39:162 days 14 hrs ago0x95e8f8498d131aacd54d7b9f14b2f182c9e215fe IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.004186086682 30.108800007
0xe6d0919deb79f011889fa33b873edde234417925900c881a2bffdd725e49bff3Transfer286572532022-05-23 4:38:142 days 14 hrs ago0x95e8f8498d131aacd54d7b9f14b2f182c9e215fe IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.00420280945 30.229080002
0xbb11146b0912fce12fde6d9ac060518eb66f246b0eaabcccdde737e7209e690dTransfer286571552022-05-23 4:34:542 days 14 hrs ago0x95e8f8498d131aacd54d7b9f14b2f182c9e215fe IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.004693480175 30.108799979
0x9df0b11d0cb96c0631c9e16113ed13f3cd8f0ac2108fcc1e506f3883fb7146ffTransfer286571262022-05-23 4:33:522 days 14 hrs ago0x95e8f8498d131aacd54d7b9f14b2f182c9e215fe IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.004700947155 30.10879996
0xd62770a39b5f975a206d90296ba7c2d42949c0601f751b4a2b708a4a83a0a131Transfer286570962022-05-23 4:32:522 days 14 hrs ago0x95e8f8498d131aacd54d7b9f14b2f182c9e215fe IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.004314808325 31.040000036
0x8b982a8cd4f744d67d772a1f7765786bc10a08a02cd68093cd219830845a540dTransfer286570682022-05-23 4:31:522 days 14 hrs ago0x95e8f8498d131aacd54d7b9f14b2f182c9e215fe IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.004315553281 31.040000008
0x8d9b25f55d97fff7730f80661a26567b016221c5cb533aece3baf41200b6238eTransfer286570282022-05-23 4:30:322 days 14 hrs ago0x95e8f8498d131aacd54d7b9f14b2f182c9e215fe IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.004180331399 30.069999997
0x992c0cdba52701505ac7b7a59b409a436fae5b6f42ee487705ca7eca874f7947Transfer286570002022-05-23 4:29:322 days 14 hrs ago0x95e8f8498d131aacd54d7b9f14b2f182c9e215fe IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.004694889236 30.069999976
0x2b82496c5df0d66b81be675d24c9669b6e2bb56541b87b3adc7d033bdeae6796Transfer286569392022-05-23 4:27:262 days 14 hrs ago0x95e8f8498d131aacd54d7b9f14b2f182c9e215fe IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.004315553256 31.039999831
0xf07009823ba3efdfad4a4c27fe235bb9e501c72a84cbaa7f5052408d519c708eTransfer286569032022-05-23 4:26:142 days 14 hrs ago0x95e8f8498d131aacd54d7b9f14b2f182c9e215fe IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.00431555329 31.040000075
0xfe3c160192fabc71850850a6fecdfedeb7e2a5701dd325d4671a9ebcf5592f83Transfer286568522022-05-23 4:24:282 days 14 hrs ago0x95e8f8498d131aacd54d7b9f14b2f182c9e215fe IN  0x82ced323fae774d7aedf822724be5cd1c58548c40 MATIC0.0042292417 30.419196305
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Goo

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 336 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 8 : Goo.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;

//   / ____|
//  | |  __  ___   ___ ™
//  | | |_ |/ _ \ / _ \
//  | |__| | (_) | (_) |
//   \_____|\___/ \___/ 2021

import "../interfaces/IGoo.sol";
import "../interfaces/IBuddyCore.sol";
import "@openzeppelin/contracts/security/Pausable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol";

contract Goo is Ownable, Pausable, IGoo, ERC721Holder {
    string public constant name = "Goo";
    string public constant symbol = "GOO";
    uint8 public constant decimals = 18;

    uint256 public _totalSupply = 0;
    uint256 blackHole = 0;
    uint256 MAX_VALUE = 2**255;

    address public _buddyCoreAddr;
    IBuddyCore public bc;

    mapping(uint256 => mapping(uint256 => uint256)) public allowances;
    mapping(uint256 => uint256[]) public allowances_keys;
    mapping(uint256 => uint256) public balances;

    event Transfer(uint256 indexed from, uint256 indexed to, uint256 amount);
    event Approval(uint256 indexed from, uint256 indexed to, uint256 amount);

    function setBuddyCoreAddr(address buddyCoreAddr) public onlyOwner {
        require(_buddyCoreAddr == address(0), "Buddy addr already set");
        _buddyCoreAddr = buddyCoreAddr;
        bc = IBuddyCore(_buddyCoreAddr);
    }

    modifier onlyBuddyCore() {
        require(msg.sender == _buddyCoreAddr, "Unauthorized");
        _;
    }

    function pause() public onlyOwner {
        _pause();
    }

    function unpause() public onlyOwner {
        _unpause();
    }

    function _isApprovedOrOwner(uint256 buddy) private view returns (bool) {
        return
            bc.getApproval(buddy) == msg.sender ||
            bc.getOwnerOf(buddy) == msg.sender;
    }

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

    function balanceOf(uint256 buddy) external view override returns (uint256) {
        return balances[buddy];
    }

    function mint(uint256 buddy, uint256 amount)
        external
        override
        onlyBuddyCore
        whenNotPaused
    {
        require(
            buddy != blackHole && buddy != 1,
            "ERC20: Mint to the Black Hole"
        );
        uint256 buddyBalance = balances[buddy];
        uint256 maxBalance = bc.getMaxBalance(buddy);

        require(buddyBalance < maxBalance, "ERC20: Buddy at max capacity");

        if (buddyBalance + amount > maxBalance) {
            amount = maxBalance - buddyBalance;
        }

        _totalSupply += amount;
        balances[buddy] += amount;
        emit Transfer(0, buddy, amount);
    }

    function burn(uint256 buddy, uint256 amount)
        external
        override
        whenNotPaused
    {
        require(buddy != blackHole, "ERC20: Burn from the Black Hole");
        require(_isApprovedOrOwner(buddy), "ERC20: Need approval to burn");

        uint256 accountBalance = balances[buddy];
        require(accountBalance >= amount, "ERC20: Burn amount exceeds balance");
        unchecked {
            balances[buddy] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(buddy, 0, amount);
    }

    function approve(
        uint256 from,
        uint256 spender,
        uint256 amount
    ) external whenNotPaused returns (bool) {
        require(_isApprovedOrOwner(from), "ERC20: Need approval to approve");
        allowances[from][spender] = amount;
        allowances_keys[from].push(spender);

        emit Approval(from, spender, amount);
        return true;
    }

    function allowance(uint256 buddy, uint256 spender)
        public
        view
        override
        returns (uint256)
    {
        // Unlimited allowance from the black hole by default
        if (spender == bc.getBlackHole()) {
            return MAX_VALUE;
        }

        return allowances[buddy][spender];
    }

    function transfer(
        uint256 from,
        uint256 to,
        uint256 amount
    ) external override whenNotPaused returns (bool) {
        require(_isApprovedOrOwner(from), "ERC20: Need approval to transfer");
        _transferTokens(from, to, amount);
        return true;
    }

    function transferFrom(
        uint256 executor,
        uint256 from,
        uint256 to,
        uint256 amount
    ) external override whenNotPaused returns (bool) {
        require(
            _isApprovedOrOwner(executor),
            "ERC20: Need approval to transfer"
        );
        uint256 spenderAllowance = allowance(from, executor);
        require(
            executor == from || spenderAllowance >= amount,
            "ERC20: Spend exceeds allowance"
        );

        if (executor != from && spenderAllowance != MAX_VALUE) {
            uint256 newAllowance = 0;

            unchecked {
                newAllowance = spenderAllowance - amount;
            }

            allowances[from][executor] = newAllowance;
            emit Approval(from, executor, newAllowance);
        }

        _transferTokens(from, to, amount);
        return true;
    }

    function _transferTokens(
        uint256 from,
        uint256 to,
        uint256 amount
    ) private whenNotPaused {
        uint256 senderBalance = balances[from];
        require(
            senderBalance >= amount,
            "ERC20: Transfer amount exceeds balance"
        );
        require(
            balances[to] + amount <= bc.getMaxBalance(to),
            "ERC20: Transfer amount exceeds max capacity"
        );
        uint8 lock = bc.isLocked(from);
        require(
            lock == 2,
            lock == 0
                ? "Cannot perform actions while locked"
                : "Must be unlocked for 5 minutes"
        );
        uint8 lock2 = bc.isLocked(to);
        require(
            lock2 == 2,
            lock2 == 0
                ? "Cannot perform actions while locked"
                : "Must be unlocked for 5 minutes"
        );

        unchecked {
            balances[from] = senderBalance - amount;
        }
        balances[to] += amount;

        emit Transfer(from, to, amount);
    }

    function transferMax(uint256[] calldata from, uint256 to)
        external
        whenNotPaused
        returns (bool)
    {
        uint256 max = bc.getMaxBalance(to) - balances[to];

        for (uint256 i = 0; i < from.length; i++) {
            uint256 buddy = from[i];

            if (buddy == to) {
                continue;
            }

            require(
                _isApprovedOrOwner(buddy),
                "ERC20: Need approval to transfer"
            );
            uint256 amount = balances[buddy];

            if (amount > max) {
                amount = max;
            }

            max -= amount;
            _transferTokens(buddy, to, amount);

            if (max <= 0) {
                break;
            }
        }

        return true;
    }

    function clearApprovals(uint256 from) external onlyBuddyCore whenNotPaused {
        for (uint256 i = 0; i < allowances_keys[from].length; i++) {
            allowances[from][allowances_keys[from][i]] = 0;
        }
        delete allowances_keys[from];

        emit Approval(from, 0, 0);
    }
}

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

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

    function balanceOf(uint256 buddy) external view returns (uint256);

    function mint(uint256 buddy, uint256 amount) external;

    function burn(uint256 buddy, uint256 amount) external;

    function allowance(uint256 buddy, uint256 spender)
        external
        view
        returns (uint256);

    function transfer(
        uint256 from,
        uint256 to,
        uint256 amount
    ) external returns (bool);

    function transferFrom(
        uint256 executor,
        uint256 from,
        uint256 to,
        uint256 amount
    ) external returns (bool);

    function clearApprovals(uint256 from) external;
}

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

interface IBuddyCore {
    function getApproval(uint256) external view returns (address);

    function getOwnerOf(uint256) external view returns (address);

    function getBlackHole() external pure returns (uint256);

    function getMaxBalance(uint256) external view returns (uint256);

    function isLocked(uint256) external view returns (uint8);
}

File 4 of 8 : Pausable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

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

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

File 5 of 8 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 6 of 8 : ERC721Holder.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../IERC721Receiver.sol";

/**
 * @dev Implementation of the {IERC721Receiver} interface.
 *
 * Accepts all token transfers.
 * Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}.
 */
contract ERC721Holder is IERC721Receiver {
    /**
     * @dev See {IERC721Receiver-onERC721Received}.
     *
     * Always returns `IERC721Receiver.onERC721Received.selector`.
     */
    function onERC721Received(
        address,
        address,
        uint256,
        bytes memory
    ) public virtual override returns (bytes4) {
        return this.onERC721Received.selector;
    }
}

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

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 8 of 8 : IERC721Receiver.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

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

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"from","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"to","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"from","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"to","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"_buddyCoreAddr","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":"uint256","name":"buddy","type":"uint256"},{"internalType":"uint256","name":"spender","type":"uint256"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"allowances_keys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"from","type":"uint256"},{"internalType":"uint256","name":"spender","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buddy","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bc","outputs":[{"internalType":"contract IBuddyCore","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buddy","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"from","type":"uint256"}],"name":"clearApprovals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buddy","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"buddyCoreAddr","type":"address"}],"name":"setBuddyCoreAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"from","type":"uint256"},{"internalType":"uint256","name":"to","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"executor","type":"uint256"},{"internalType":"uint256","name":"from","type":"uint256"},{"internalType":"uint256","name":"to","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"from","type":"uint256[]"},{"internalType":"uint256","name":"to","type":"uint256"}],"name":"transferMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260006001556000600255600160ff1b60035534801561002257600080fd5b5061002c3361003e565b6000805460ff60a01b1916905561008e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611cd58061009d6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c8063735babfc116100f95780639cc7f70811610097578063b866c8a411610071578063b866c8a4146103fb578063cca16fa81461040e578063f2fde38b14610421578063f942b00a1461043457600080fd5b80639cc7f708146103b55780639d9376fc146103d5578063b390c0ab146103e857600080fd5b80638b860788116100d35780638b8607881461035c5780638da5cb5b1461036f57806390dd26271461038057806395d89b411461039357600080fd5b8063735babfc1461032e5780638456cb59146103415780638856f7791461034957600080fd5b80633eaaf86b116101665780634efa81dd116101405780634efa81dd146102de5780635c975abb146103015780636694768814610313578063715018a61461032657600080fd5b80633eaaf86b146102ad5780633f4ba83a146102b65780634903b0d1146102be57600080fd5b806318160ddd1161019757806318160ddd1461026c5780631b2ef1ca1461027e578063313ce5671461029357600080fd5b8063021fc3df146101be57806306fdde03146101ee578063150b7a021461021d575b600080fd5b6005546101d1906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61021060405180604001604052806003815260200162476f6f60e81b81525081565b6040516101e591906118f5565b61023b61022b366004611975565b630a85bd0160e11b949350505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101e5565b6001545b6040519081526020016101e5565b61029161028c366004611a55565b61045f565b005b61029b601281565b60405160ff90911681526020016101e5565b61027060015481565b6102916106bd565b6102706102cc366004611a77565b60086020526000908152604090205481565b6102f16102ec366004611a90565b61070f565b60405190151581526020016101e5565b600054600160a01b900460ff166102f1565b610291610321366004611b0b565b6108d1565b61029161099e565b61029161033c366004611a77565b6109f0565b610291610b54565b6102f1610357366004611b2f565b610ba4565b61027061036a366004611a55565b610d28565b6000546001600160a01b03166101d1565b6102f161038e366004611b61565b610d59565b61021060405180604001604052806003815260200162474f4f60e81b81525081565b6102706103c3366004611a77565b60009081526008602052604090205490565b6004546101d1906001600160a01b031681565b6102916103f6366004611a55565b610e11565b6102f1610409366004611b61565b610fd6565b61027061041c366004611a55565b6110f8565b61029161042f366004611b0b565b611198565b610270610442366004611a55565b600660209081526000928352604080842090915290825290205481565b6004546001600160a01b031633146104ad5760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b60448201526064015b60405180910390fd5b600054600160a01b900460ff16156104fa5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104a4565b600254821415801561050d575081600114155b6105595760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204d696e7420746f2074686520426c61636b20486f6c6500000060448201526064016104a4565b600082815260086020526040808220546005549151630844cb9f60e41b8152600481018690529092916001600160a01b03169063844cb9f090602401602060405180830381865afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d69190611b8d565b90508082106106275760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204275646479206174206d61782063617061636974790000000060448201526064016104a4565b806106328484611bbc565b1115610645576106428282611bd4565b92505b82600160008282546106579190611bbc565b90915550506000848152600860205260408120805485929061067a908490611bbc565b909155505060405183815284906000907faf6151f5085accf2d57e1e7bf7601d3b3982e0de7e9a90f032f8554de9c104f69060200160405180910390a350505050565b6000546001600160a01b031633146107055760405162461bcd60e51b81526020600482018190526024820152600080516020611c5d83398151915260448201526064016104a4565b61070d611251565b565b60008054600160a01b900460ff161561075d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104a4565b600082815260086020526040808220546005549151630844cb9f60e41b81526004810186905290916001600160a01b03169063844cb9f090602401602060405180830381865afa1580156107b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d99190611b8d565b6107e39190611bd4565b905060005b848110156108c557600086868381811061080457610804611beb565b9050602002013590508481141561081b57506108b3565b610824816112f7565b6108705760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e65656420617070726f76616c20746f207472616e7366657260448201526064016104a4565b6000818152600860205260409020548381111561088a5750825b6108948185611bd4565b93506108a18287836113f6565b600084116108b05750506108c5565b50505b806108bd81611c01565b9150506107e8565b50600195945050505050565b6000546001600160a01b031633146109195760405162461bcd60e51b81526020600482018190526024820152600080516020611c5d83398151915260448201526064016104a4565b6004546001600160a01b0316156109725760405162461bcd60e51b815260206004820152601660248201527f4275646479206164647220616c7265616479207365740000000000000000000060448201526064016104a4565b600480546001600160a01b039092166001600160a01b0319928316811790915560058054909216179055565b6000546001600160a01b031633146109e65760405162461bcd60e51b81526020600482018190526024820152600080516020611c5d83398151915260448201526064016104a4565b61070d60006117eb565b6004546001600160a01b03163314610a395760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b60448201526064016104a4565b600054600160a01b900460ff1615610a865760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104a4565b60005b600082815260076020526040902054811015610afc57600082815260066020908152604080832060079092528220805483919085908110610acc57610acc611beb565b90600052602060002001548152602001908152602001600020819055508080610af490611c01565b915050610a89565b506000818152600760205260408120610b14916118c3565b6000817f08aaf4f7dd1adfa5bfe7067dea5b4ebd7e119d43257438a9189f37d7044eb09a6000604051610b4991815260200190565b60405180910390a350565b6000546001600160a01b03163314610b9c5760405162461bcd60e51b81526020600482018190526024820152600080516020611c5d83398151915260448201526064016104a4565b61070d61183b565b60008054600160a01b900460ff1615610bf25760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104a4565b610bfb856112f7565b610c475760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e65656420617070726f76616c20746f207472616e7366657260448201526064016104a4565b6000610c5385876110f8565b905084861480610c635750828110155b610caf5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a205370656e64206578636565647320616c6c6f77616e6365000060448201526064016104a4565b848614158015610cc157506003548114155b15610d1d576000858152600660209081526040808320898452825291829020858403908190559151828152889188917f08aaf4f7dd1adfa5bfe7067dea5b4ebd7e119d43257438a9189f37d7044eb09a910160405180910390a3505b6108c58585856113f6565b60076020528160005260406000208181548110610d4457600080fd5b90600052602060002001600091509150505481565b60008054600160a01b900460ff1615610da75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104a4565b610db0846112f7565b610dfc5760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e65656420617070726f76616c20746f207472616e7366657260448201526064016104a4565b610e078484846113f6565b5060019392505050565b600054600160a01b900460ff1615610e5e5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104a4565b600254821415610eb05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204275726e2066726f6d2074686520426c61636b20486f6c650060448201526064016104a4565b610eb9826112f7565b610f055760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204e65656420617070726f76616c20746f206275726e0000000060448201526064016104a4565b60008281526008602052604090205481811015610f6f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a204275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104a4565b6000838152600860205260408120838303905560018054849290610f94908490611bd4565b909155505060405182815260009084907faf6151f5085accf2d57e1e7bf7601d3b3982e0de7e9a90f032f8554de9c104f69060200160405180910390a3505050565b60008054600160a01b900460ff16156110245760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104a4565b61102d846112f7565b6110795760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e65656420617070726f76616c20746f20617070726f76650060448201526064016104a4565b60008481526006602090815260408083208684528252808320859055868352600782528083208054600181018255908452919092200184905551839085907f08aaf4f7dd1adfa5bfe7067dea5b4ebd7e119d43257438a9189f37d7044eb09a906110e69086815260200190565b60405180910390a35060019392505050565b60055460408051638ad6dfdf60e01b815290516000926001600160a01b031691638ad6dfdf9160048083019260209291908290030181865afa158015611142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111669190611b8d565b8214156111765750600354611192565b5060008281526006602090815260408083208484529091529020545b92915050565b6000546001600160a01b031633146111e05760405162461bcd60e51b81526020600482018190526024820152600080516020611c5d83398151915260448201526064016104a4565b6001600160a01b0381166112455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104a4565b61124e816117eb565b50565b600054600160a01b900460ff166112aa5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016104a4565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600554604051637b2c28c560e11b81526004810183905260009133916001600160a01b039091169063f658518a90602401602060405180830381865afa158015611345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113699190611c1c565b6001600160a01b031614806111925750600554604051630836387160e41b81526004810184905233916001600160a01b031690638363871090602401602060405180830381865afa1580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e69190611c1c565b6001600160a01b03161492915050565b600054600160a01b900460ff16156114435760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104a4565b600083815260086020526040902054818110156114b15760405162461bcd60e51b815260206004820152602660248201527f45524332303a205472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104a4565b600554604051630844cb9f60e41b8152600481018590526001600160a01b039091169063844cb9f090602401602060405180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190611b8d565b600084815260086020526040902054611538908490611bbc565b111561159a5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a205472616e7366657220616d6f756e742065786365656473206d60448201526a617820636170616369747960a81b60648201526084016104a4565b60055460405163f6aacfb160e01b8152600481018690526000916001600160a01b03169063f6aacfb190602401602060405180830381865afa1580156115e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116089190611c39565b905060ff8116600281149015611653576040518060400160405280601e81526020017f4d75737420626520756e6c6f636b656420666f722035206d696e75746573000081525061166d565b604051806060016040528060238152602001611c7d602391395b9061168b5760405162461bcd60e51b81526004016104a491906118f5565b5060055460405163f6aacfb160e01b8152600481018690526000916001600160a01b03169063f6aacfb190602401602060405180830381865afa1580156116d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fa9190611c39565b905060ff8116600281149015611745576040518060400160405280601e81526020017f4d75737420626520756e6c6f636b656420666f722035206d696e75746573000081525061175f565b604051806060016040528060238152602001611c7d602391395b9061177d5760405162461bcd60e51b81526004016104a491906118f5565b506000868152600860205260408082208686039055868252812080548692906117a7908490611bbc565b9091555050604051848152859087907faf6151f5085accf2d57e1e7bf7601d3b3982e0de7e9a90f032f8554de9c104f69060200160405180910390a3505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600054600160a01b900460ff16156118885760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104a4565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112da3390565b508054600082559060005260206000209081019061124e91905b808211156118f157600081556001016118dd565b5090565b600060208083528351808285015260005b8181101561192257858101830151858201604001528201611906565b81811115611934576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461124e57600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561198b57600080fd5b84356119968161194a565b935060208501356119a68161194a565b925060408501359150606085013567ffffffffffffffff808211156119ca57600080fd5b818701915087601f8301126119de57600080fd5b8135818111156119f0576119f061195f565b604051601f8201601f19908116603f01168101908382118183101715611a1857611a1861195f565b816040528281528a6020848701011115611a3157600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611a6857600080fd5b50508035926020909101359150565b600060208284031215611a8957600080fd5b5035919050565b600080600060408486031215611aa557600080fd5b833567ffffffffffffffff80821115611abd57600080fd5b818601915086601f830112611ad157600080fd5b813581811115611ae057600080fd5b8760208260051b8501011115611af557600080fd5b6020928301989097509590910135949350505050565b600060208284031215611b1d57600080fd5b8135611b288161194a565b9392505050565b60008060008060808587031215611b4557600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215611b7657600080fd5b505081359360208301359350604090920135919050565b600060208284031215611b9f57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611bcf57611bcf611ba6565b500190565b600082821015611be657611be6611ba6565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415611c1557611c15611ba6565b5060010190565b600060208284031215611c2e57600080fd5b8151611b288161194a565b600060208284031215611c4b57600080fd5b815160ff81168114611b2857600080fdfe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657243616e6e6f7420706572666f726d20616374696f6e73207768696c65206c6f636b6564a26469706673582212205f05580803d524fc11be783b1e99b282b933e81665948938da23df8b7127310f64736f6c634300080a0033

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.