Contract 0x8ae8be25c23833e0a01aa200403e826f611f9cd2 3

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xbd94b32a5762e70e8e32f12c3c82d1276534338bc5d89e1221c1709a37f4d7b2Transfer257110652023-02-01 22:14:1316 mins ago0xb33ac3404a31a0c1e2a8443fbbfd1bae5375536d IN  Talecraft: CRAFT Token0 AVAX0.00172385 50
0xfdc536d1c54c2a9e9a22f60444d17d726ee21aa4068fbf5cbdd72cf14da83e5fApprove257107112023-02-01 22:03:4026 mins ago0xf5f08ba7f46e2a86b5ef3bfd56c2097c9f4276d7 IN  Talecraft: CRAFT Token0 AVAX0.001241986694 26.825346
0x417e5e06f2251a4fad6520a5e94925868e259a0e333a6cb473937c47db132cb6Approve257106022023-02-01 22:00:0130 mins ago0x8ae18353ffa561be14f5c6012bf53c194dfdfaa7 IN  Talecraft: CRAFT Token0 AVAX0.00072757525
0xf564e20dbd4398dcc1c5b9cffd9f7b09a6083e16fbd33f2f3af0084f33173d25Approve257104942023-02-01 21:56:1834 mins ago0x8ae18353ffa561be14f5c6012bf53c194dfdfaa7 IN  Talecraft: CRAFT Token0 AVAX0.00072757525
0x51951bc02a1375688039f870f484eefb05d64ed3eef9472da584ff258e9973afTransfer257080672023-02-01 20:34:321 hr 55 mins ago0x0d0707963952f2fba59dd06f2b425ace40b492fe IN  Talecraft: CRAFT Token0 AVAX0.001120112532.5
0x57130a69e8e2c3b19af5028b1ba0622940cb6cbebddaa27785997adcc609ffa7Transfer257068122023-02-01 19:53:592 hrs 36 mins ago0xf89d7b9c864f589bbf53a82105107622b35eaa40 IN  Talecraft: CRAFT Token0 AVAX0.002361865337 68.529387422
0x89b63e53566617ceeeebe72884c0541735046eb3a901efc02f488190bd4836d3Transfer257067952023-02-01 19:53:362 hrs 36 mins ago0xf89d7b9c864f589bbf53a82105107622b35eaa40 IN  Talecraft: CRAFT Token0 AVAX0.002102836373 61.034927967
0x6547bbc4a58d7f70f056034343923037a147da31be360142eea7eb6d2b362754Transfer257064732023-02-01 19:45:042 hrs 45 mins agomexc.com IN  Talecraft: CRAFT Token0 AVAX0.00173343020550.312896002
0xd60466286bed9a329775a29b96ee1664e64a30b3a80927e5eccba151e025b056Approve257045532023-02-01 18:44:273 hrs 46 mins ago0x8e0fd6ab040360dd674dff0f0c24308b3b056499 IN  Talecraft: CRAFT Token0 AVAX0.001257849 27
0xbd1bf93b67b9f6ae8f9ddd8bdadcab3c7bc6c16df9705938102ddd047db90a47Transfer257019432023-02-01 17:16:395 hrs 13 mins ago0x8b105bc6b4e5a261b88452d142a61ad276f00a3c IN  Talecraft: CRAFT Token0 AVAX0.000896402 26
0xd1576fcb81ec20836b312795e9d05dbdd92c3a8a3f4428f32aa9f3f476730470Transfer257010922023-02-01 16:48:185 hrs 42 mins ago0x9309079c6913817a52443430d2b9449dc5168e7e IN  Talecraft: CRAFT Token0 AVAX0.0013671085 26.5
0xc3069f97f021aa8ff6d852a86aa10dd7928662b2217c17b59ac10d5cd9b87a9cTransfer256999572023-02-01 16:10:236 hrs 20 mins ago0xb33ac3404a31a0c1e2a8443fbbfd1bae5375536d IN  Talecraft: CRAFT Token0 AVAX0.00172385 50
0xcb74cc008454472f96ec46d5714687bc130604da4a213049e1a0d67f8204fbddApprove256996182023-02-01 15:58:536 hrs 31 mins ago0x8066f740505ae770ab85b643aee29149c66ac5d9 IN  Talecraft: CRAFT Token0 AVAX0.00115717525
0xd791f81c5a32b80077cf0246bc8e4f9838f3cc69b9a12ef022279b56b3a74f5bApprove256993692023-02-01 15:50:366 hrs 39 mins ago0x8066f740505ae770ab85b643aee29149c66ac5d9 IN  Talecraft: CRAFT Token0 AVAX0.00115717525
0x8bff9c028ba1dc549aedb43bc617d70a410ee448168c35d5d54e1bcddcbd1c89Approve256991832023-02-01 15:45:036 hrs 45 mins ago0xf849c3169e095a54ed49f7ba1e94f1102c356988 IN  Talecraft: CRAFT Token0 AVAX0.0012272415 26.5
0x99e62410b683629dbee83112980fa8c2f8a48201ff7b3f06cd981f5be1097b0dTransfer256904232023-02-01 10:52:0711 hrs 38 mins ago0xb33ac3404a31a0c1e2a8443fbbfd1bae5375536d IN  Talecraft: CRAFT Token0 AVAX0.00172385 50
0x2f509b9d08a5c30a1599095ac18890566c9f3b6beb90ff48f9b22621f2bd0300Approve256849482023-02-01 7:49:0514 hrs 41 mins ago0x808515176649ee98f69e9580316425412ad5dd91 IN  Talecraft: CRAFT Token0 AVAX0.0012269235 26.5
0xfdbc37afe8a0876b9613183c53a8ee08a0ed678a7e6f4328f9d407967ad2e6f4Transfer256840722023-02-01 7:19:4515 hrs 10 mins ago0x06435b9bab75b85baaaa75b86b25dcaae2319610 IN  Talecraft: CRAFT Token0 AVAX0.00172385 50
0x8cbed0d821f7b1027018f90d0cb1e7eeac72a37aa72c667bc3fad2b1f5c97ea8Transfer256831522023-02-01 6:49:1715 hrs 41 mins ago0x06435b9bab75b85baaaa75b86b25dcaae2319610 IN  Talecraft: CRAFT Token0 AVAX0.001775336713 51.511293002
0x1f5ff356aa236eabd0dddc99151bd979e08a8dc9283956ea8d8c64eaa12095b1Approve256824002023-02-01 6:24:2016 hrs 6 mins ago0xd74472f429ee04150ab1f75870fc57b72fb4cf54 IN  Talecraft: CRAFT Token0 AVAX0.00078403482 26.94
0x60567cab062a1bc8e900fddd096aa0f7baf23b0d47f8aae9e3571e89fa0d7fcdApprove256823692023-02-01 6:23:1816 hrs 7 mins ago0xd74472f429ee04150ab1f75870fc57b72fb4cf54 IN  Talecraft: CRAFT Token0 AVAX0.0007712295 26.5
0xd350bdd8caa20952e37bf3bb445c44b7b5a94d04edb328d4805cdf3321eaeddcApprove256823542023-02-01 6:22:4816 hrs 7 mins ago0xd74472f429ee04150ab1f75870fc57b72fb4cf54 IN  Talecraft: CRAFT Token0 AVAX0.00086872455 29.85
0xde95bdea61b5b5e07ca962ce6db3ecfda4ef5c28107a07f884b1e335c90a0671Transfer256786252023-02-01 4:17:4018 hrs 12 mins ago0x06435b9bab75b85baaaa75b86b25dcaae2319610 IN  Talecraft: CRAFT Token0 AVAX0.00172385 50
0xc933e159e8eb2e1aa136fe286758f4412e8977647fe13616b308cbe3658c35b2Transfer256786012023-02-01 4:16:5218 hrs 13 mins ago0x12fb1665612a57afad33c5c6c3a33914a2863470 IN  Talecraft: CRAFT Token0 AVAX0.0013667905 26.5
0x8bf432c11b1f0ceaa66aefa58fda7986d758cfc2b85ea50718a76f114f84c3c0Transfer256691072023-01-31 22:58:5023 hrs 31 mins ago0xdee665c5207e5c797d806dc4c6f1b3d2dda3ef29 IN  Talecraft: CRAFT Token0 AVAX0.00172385 50
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x92515901cEb031D771F4F5487f36C01FB978dBA9

Contract Name:
PHI

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 6 : 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 2 of 6 : ERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

pragma solidity ^0.8.0;

/**
 * @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 6 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

File 5 of 6 : 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 6 of 6 : PHI.sol
// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.5;

import "OpenZeppelin/[email protected]/contracts/token/ERC20/IERC20.sol";
import "OpenZeppelin/[email protected]/contracts/token/ERC20/ERC20.sol";
import "OpenZeppelin/[email protected]/contracts/access/Ownable.sol";

contract PHI is ERC20, Ownable {
    constructor() ERC20("CRAFT", "CRAFT") {
        _mint(msg.sender, 30_000_000 ether);
    }

    function burn(uint256 value) external {
        _burn(_msgSender(), value);
    }
}

Settings
{
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "evmVersion": "istanbul",
  "remappings": [
    "OpenZeppelin=/home/user/.brownie/packages/OpenZeppelin"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  }
}

Contract ABI

[{"inputs":[],"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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","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":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060408051808201825260058082526410d490519560da1b6020808401828152855180870190965292855284015281519192916200005291600391620001e0565b50805162000068906004906020840190620001e0565b505050620000856200007f620000a260201b60201c565b620000a6565b6200009c336a18d0bf423c03d8de000000620000f8565b620002ea565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620001535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000167919062000286565b90915550506001600160a01b038216600090815260208190526040812080548392906200019690849062000286565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001ee90620002ad565b90600052602060002090601f0160209004810192826200021257600085556200025d565b82601f106200022d57805160ff19168380011785556200025d565b828001600101855582156200025d579182015b828111156200025d57825182559160200191906001019062000240565b506200026b9291506200026f565b5090565b5b808211156200026b576000815560010162000270565b60008219821115620002a857634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620002c257607f821691505b60208210811415620002e457634e487b7160e01b600052602260045260246000fd5b50919050565b610c6780620002fa6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d7146101eb578063a9059cbb146101fe578063dd62ed3e14610211578063f2fde38b1461024a57600080fd5b806370a0823114610197578063715018a6146101c05780638da5cb5b146101c857806395d89b41146101e357600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806342966c681461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261025d565b60405161010f9190610b5c565b60405180910390f35b61012b610126366004610b19565b6102ef565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b366004610add565b610305565b6040516012815260200161010f565b61012b61017d366004610b19565b6103b4565b610195610190366004610b43565b6103f0565b005b61013f6101a5366004610a88565b6001600160a01b031660009081526020819052604090205490565b6101956103fd565b6005546040516001600160a01b03909116815260200161010f565b610102610463565b61012b6101f9366004610b19565b610472565b61012b61020c366004610b19565b61050b565b61013f61021f366004610aaa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610195610258366004610a88565b610518565b60606003805461026c90610be0565b80601f016020809104026020016040519081016040528092919081815260200182805461029890610be0565b80156102e55780601f106102ba576101008083540402835291602001916102e5565b820191906000526020600020905b8154815290600101906020018083116102c857829003601f168201915b5050505050905090565b60006102fc3384846105e0565b50600192915050565b6000610312848484610705565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561039c5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103a985338584036105e0565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102fc9185906103eb908690610bb1565b6105e0565b6103fa33826108d4565b50565b6005546001600160a01b031633146104575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610393565b6104616000610a1a565b565b60606004805461026c90610be0565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156104f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610393565b61050133858584036105e0565b5060019392505050565b60006102fc338484610705565b6005546001600160a01b031633146105725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610393565b6001600160a01b0381166105d75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610393565b6103fa81610a1a565b6001600160a01b0383166106425760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610393565b6001600160a01b0382166106a35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610393565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166107695760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610393565b6001600160a01b0382166107cb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610393565b6001600160a01b038316600090815260208190526040902054818110156108435760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610393565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061087a908490610bb1565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108c691815260200190565b60405180910390a350505050565b6001600160a01b0382166109345760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610393565b6001600160a01b038216600090815260208190526040902054818110156109a85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610393565b6001600160a01b03831660009081526020819052604081208383039055600280548492906109d7908490610bc9565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016106f8565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80356001600160a01b0381168114610a8357600080fd5b919050565b600060208284031215610a9a57600080fd5b610aa382610a6c565b9392505050565b60008060408385031215610abd57600080fd5b610ac683610a6c565b9150610ad460208401610a6c565b90509250929050565b600080600060608486031215610af257600080fd5b610afb84610a6c565b9250610b0960208501610a6c565b9150604084013590509250925092565b60008060408385031215610b2c57600080fd5b610b3583610a6c565b946020939093013593505050565b600060208284031215610b5557600080fd5b5035919050565b600060208083528351808285015260005b81811015610b8957858101830151858201604001528201610b6d565b81811115610b9b576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610bc457610bc4610c1b565b500190565b600082821015610bdb57610bdb610c1b565b500390565b600181811c90821680610bf457607f821691505b60208210811415610c1557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea264697066735822122038b29aa4948be48c763cca99a06a888e87c440a2ebe75e405639a1a956522c1164736f6c63430008050033

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