Contract 0x7e291890B01E5181f7ecC98D79ffBe12Ad23df9e 1

 
Txn Hash Method
Block
From
To
Value
0x83c31699d77620709e938e31766269b3adfc7ea4dad9bfc5d2e52cad66eda5b4Approve138051132021-12-14 19:11:2210 hrs 14 mins ago0xae3cde129a402c9d860cae48518056a735cc738d IN  Unifty: NIF Token0 Ether0.002340611908 50.354149016
0x9e9c46b7911e5758eb6e515dfb90f629e04db806e2b717b29d87c47844ba6072Approve138045732021-12-14 17:11:1812 hrs 14 mins ago0x311d4f85cd464beabb0729fc0eaee43dd67aaf63 IN  Unifty: NIF Token0 Ether0.003217468873 69.218184566
0x80f6cb7c01227bfd627d774ab40e182033d683ed514ddfa3338310faaae19b62Transfer138031122021-12-14 11:47:2917 hrs 38 mins agoKuCoin 3 IN  Unifty: NIF Token0 Ether0.00179815048851.935143928
0xe18582bd0c6ffcf319356ff4a987037bece6566f23c4dea4339c97b1502984bbTransfer138026062021-12-14 9:56:5019 hrs 28 mins ago0x27b785fcd0076deb4f6ce9de25aac81ad6ae6c28 IN  Unifty: NIF Token0 Ether0.00155017252
0xa1a7ed38003473986c377ed463d5a8e3e091114a8f6a5eee12d8b8ae649e173eTransfer138024062021-12-14 9:13:3320 hrs 12 mins agoGate.io IN  Unifty: NIF Token0 Ether0.00314807893660.878322541
0x987bfd43977e69799a88e731f5ba34106516754b6ed8346814b32bb1161fac7eTransfer138023142021-12-14 8:50:4620 hrs 34 mins ago0x245f2b7cd44db66313573890ab8be328fe9b21e7 IN  Unifty: NIF Token0 Ether0.00140500925147.0926513
0x2c0d61eab0ac3c34430166f4a493577ae628fe3d73f0051a1e51c4200a34da61Transfer138020452021-12-14 7:53:4421 hrs 31 mins agoKuCoin 3 IN  Unifty: NIF Token0 Ether0.00406779301678.645728527
0x132435d2a4855ca0446935a01d469f190be53f2b68467946a7373d7d47bde6e3Transfer138020412021-12-14 7:52:5921 hrs 32 mins agoMXC IN  Unifty: NIF Token0 Ether0.00438712153684.819549065
0xafedcd15c993f1b0fc33b7620120a1cdde24520ebdc3666cdcb9f2b0098827a2Transfer138020342021-12-14 7:52:0721 hrs 33 mins ago0xf79023ce4d93c0f57a9598da1c8ea7e0653fd709 IN  Unifty: NIF Token0 Ether0.00205613169
0xd5b95e3f82ed34314c0bee7cfeeb598df1ffc05505d074c31df2f54816d26b0eTransfer138019582021-12-14 7:33:4621 hrs 51 mins agoMXC IN  Unifty: NIF Token0 Ether0.0031117839760.162480345
0x1e6c501d872e556935bb13555f4942bdce2071a354f0b7b0a89fd93274b91326Transfer138019332021-12-14 7:29:0021 hrs 56 mins agoMXC IN  Unifty: NIF Token0 Ether0.00363826985670.341431403
0xd901b0f3476fd2745a629f5585a4d051e8d261f98e5d1b97ebd7eb382ba27febTransfer138019232021-12-14 7:27:0021 hrs 58 mins agoKuCoin 3 IN  Unifty: NIF Token0 Ether0.00424546403982.080777198
0x60384740efea419331298a7bdf6d3a0982cd4c2579ed5baf3fc4d9666d0069b8Transfer138019102021-12-14 7:24:0822 hrs 1 min agoMXC IN  Unifty: NIF Token0 Ether0.00486196294
0x116cfcec55228df86ed3f62173d87616daaffbd986b0e58e311a211545d91c8fTransfer138019032021-12-14 7:22:4522 hrs 2 mins agoKuCoin 3 IN  Unifty: NIF Token0 Ether0.00430043271483.143528302
0xa453cbe97c9e45b094702ce33ecd1ef59c8246dd3354dcb965d542f4934e6511Transfer138018792021-12-14 7:17:0122 hrs 8 mins agoMXC IN  Unifty: NIF Token0 Ether0.00434271684
0x9cb15520d0a6723dfd80090484401a34cef6588b4525da125b5a4182568f8ac1Transfer138018502021-12-14 7:10:1722 hrs 15 mins ago0xd46d65ccf3d965a8daa5850a54ae5073c9ffca82 IN  Unifty: NIF Token0 Ether0.003723886335 79.402254531
0xee95af001595ff86846aa7bb65e6d71275163ffe9002184e7eaa8722d4e31e3aTransfer138018492021-12-14 7:09:1922 hrs 16 mins agoKuCoin 3 IN  Unifty: NIF Token0 Ether0.0052964352102.4
0x9f820c624f85bc27f756e75523c4ab8cfcd17598df9bceafdd012ae1455ec33dTransfer138017832021-12-14 6:52:2322 hrs 33 mins ago0x1928b1e8517958d60657880f3b9486cf8a9278ba IN  Unifty: NIF Token0 Ether0.003812260724 81.224261727
0xebe479f9388213ba254e2f8ca10735654fa3040bfef4b594598b63525858db33Transfer138017792021-12-14 6:51:3822 hrs 33 mins ago0x1928b1e8517958d60657880f3b9486cf8a9278ba IN  Unifty: NIF Token0 Ether0.003554722989 81.106210401
0xe600744c46cbaa03f70c41935cdd8a315f7f378ed65b4faea7307281c88d848fApprove138017712021-12-14 6:49:3522 hrs 35 mins ago0x1928b1e8517958d60657880f3b9486cf8a9278ba IN  Unifty: NIF Token0 Ether0.003721295552 80.057129545
0x6034436adb1c71a8203c3ff0a55e7a02260b55ed6e0a82c2b5b639b9e45ed829Transfer138017522021-12-14 6:44:1022 hrs 41 mins agoKuCoin 3 IN  Unifty: NIF Token0 Ether0.005737856338110.96007307
0x915eaf7d5140604534091d2e6b998a005e15fac6d99ea857d133a52d2ddc9df4Transfer138017292021-12-14 6:35:2322 hrs 50 mins agoKuCoin 3 IN  Unifty: NIF Token0 Ether0.005385925243104.130178904
0xf2e428b0632c0095e3232518387da469c9bcc8a1d2c139785bd188d21663cc87Approve138014982021-12-14 5:42:5523 hrs 42 mins agoENS Name basedjpegs.eth IN  Unifty: NIF Token0 Ether0.004258572555 91.615699396
0x6f1171611fdce7a0b1f559128f55b1754faea86659f7ef4a374f6687d6af6568Approve138014932021-12-14 5:40:1823 hrs 45 mins agoENS Name basedjpegs.eth IN  Unifty: NIF Token0 Ether0.003247747034 69.869565953
0xb6eb8d1ae24492f073e17833e455fc9e66882154ac03f5c5f226830810f40e5bTransfer138014862021-12-14 5:38:3623 hrs 46 mins agoENS Name dicc.eth IN  Unifty: NIF Token0 Ether0.004175031238 80.737778005
[ Download CSV Export 

OVERVIEW

UNIFTY aims to be a new hub for NFT projects to create, manage, exchange and market NFTs with just a few clicks. No coding or difficult contract interactions required. Users can just create their NFTs and they will be instantly available at OpenSea for trading.

View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Unifty

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-11-12
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;


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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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


/*
 * @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 GSN 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 payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

/**
 * @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 guidelines: functions revert instead
 * of 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 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name, string memory symbol) public {
        _name = name;
        _symbol = symbol;
        _decimals = 18;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view 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 {_setupDecimals} is
     * called.
     *
     * 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 returns (uint8) {
        return _decimals;
    }

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

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view 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);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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].add(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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is 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);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(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:
     *
     * - `to` 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 = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(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);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(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 Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

    /**
     * @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 to 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 { }
}
contract Unifty is ERC20 {

    uint256 public constant INITIAL_SUPPLY = 5000000 * 10**18;
    address private primary;
  
    constructor() public ERC20("Unifty", "NIF") {
        _setupDecimals(18);
        _mint(msg.sender, INITIAL_SUPPLY);
        primary = msg.sender;
    }

}

Contract Security Audit

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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[],"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":"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"}]

60806040523480156200001157600080fd5b5060405180604001604052806006815260200165556e6966747960d01b815250604051806040016040528060038152602001622724a360e91b81525081600390805190602001906200006592919062000259565b5080516200007b90600490602084019062000259565b50506005805460ff19166012908117909155620000999150620000cd565b620000b0336a0422ca8b0a00a425000000620000e3565b60058054610100600160a81b0319163361010002179055620002f5565b6005805460ff191660ff92909216919091179055565b6001600160a01b0382166200013f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200014d60008383620001f2565b6200016981600254620001f760201b620005951790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200019c91839062000595620001f7821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b60008282018381101562000252576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200029c57805160ff1916838001178555620002cc565b82800160010185558215620002cc579182015b82811115620002cc578251825591602001919060010190620002af565b50620002da929150620002de565b5090565b5b80821115620002da5760008155600101620002df565b610a1480620003056000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063395093511161007157806339509351146101ec57806370a082311461021857806395d89b411461023e578063a457c2d714610246578063a9059cbb14610272578063dd62ed3e1461029e576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd146101905780632ff2e9dc146101c6578063313ce567146101ce575b600080fd5b6100c16102cc565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610362565b604080519115158252519081900360200190f35b61017e61037f565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b03813581169160208101359091169060400135610385565b61017e61040c565b6101d661041b565b6040805160ff9092168252519081900360200190f35b6101626004803603604081101561020257600080fd5b506001600160a01b038135169060200135610424565b61017e6004803603602081101561022e57600080fd5b50356001600160a01b0316610472565b6100c161048d565b6101626004803603604081101561025c57600080fd5b506001600160a01b0381351690602001356104ee565b6101626004803603604081101561028857600080fd5b506001600160a01b038135169060200135610556565b61017e600480360360408110156102b457600080fd5b506001600160a01b038135811691602001351661056a565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103585780601f1061032d57610100808354040283529160200191610358565b820191906000526020600020905b81548152906001019060200180831161033b57829003601f168201915b5050505050905090565b600061037661036f6105f6565b84846105fa565b50600192915050565b60025490565b60006103928484846106e6565b6104028461039e6105f6565b6103fd85604051806060016040528060288152602001610949602891396001600160a01b038a166000908152600160205260408120906103dc6105f6565b6001600160a01b031681526020810191909152604001600020549190610841565b6105fa565b5060019392505050565b6a0422ca8b0a00a42500000081565b60055460ff1690565b60006103766104316105f6565b846103fd85600160006104426105f6565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610595565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103585780601f1061032d57610100808354040283529160200191610358565b60006103766104fb6105f6565b846103fd856040518060600160405280602581526020016109ba60259139600160006105256105f6565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610841565b60006103766105636105f6565b84846106e6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000828201838110156105ef576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b03831661063f5760405162461bcd60e51b81526004018080602001828103825260248152602001806109966024913960400191505060405180910390fd5b6001600160a01b0382166106845760405162461bcd60e51b81526004018080602001828103825260228152602001806109016022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661072b5760405162461bcd60e51b81526004018080602001828103825260258152602001806109716025913960400191505060405180910390fd5b6001600160a01b0382166107705760405162461bcd60e51b81526004018080602001828103825260238152602001806108de6023913960400191505060405180910390fd5b61077b8383836108d8565b6107b881604051806060016040528060268152602001610923602691396001600160a01b0386166000908152602081905260409020549190610841565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107e79082610595565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108d05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561089557818101518382015260200161087d565b50505050905090810190601f1680156108c25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209efd28b2826cea955eba777a1e72fc7c2627d4b8722d540813dd948af3724b6f64736f6c634300060c0033

Deployed ByteCode Sourcemap

19860:293:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11037:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13143:169;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13143:169:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12112:100;;;:::i;:::-;;;;;;;;;;;;;;;;13794:321;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13794:321:0;;;;;;;;;;;;;;;;;:::i;19894:57::-;;;:::i;11964:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14524:218;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14524:218:0;;;;;;;;:::i;12275:119::-;;;;;;;;;;;;;;;;-1:-1:-1;12275:119:0;-1:-1:-1;;;;;12275:119:0;;:::i;11239:87::-;;;:::i;15245:269::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15245:269:0;;;;;;;;:::i;12607:175::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12607:175:0;;;;;;;;:::i;12845:151::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12845:151:0;;;;;;;;;;:::i;11037:83::-;11107:5;11100:12;;;;;;;;-1:-1:-1;;11100:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11074:13;;11100:12;;11107:5;;11100:12;;11107:5;11100:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11037:83;:::o;13143:169::-;13226:4;13243:39;13252:12;:10;:12::i;:::-;13266:7;13275:6;13243:8;:39::i;:::-;-1:-1:-1;13300:4:0;13143:169;;;;:::o;12112:100::-;12192:12;;12112:100;:::o;13794:321::-;13900:4;13917:36;13927:6;13935:9;13946:6;13917:9;:36::i;:::-;13964:121;13973:6;13981:12;:10;:12::i;:::-;13995:89;14033:6;13995:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13995:19:0;;;;;;:11;:19;;;;;;14015:12;:10;:12::i;:::-;-1:-1:-1;;;;;13995:33:0;;;;;;;;;;;;-1:-1:-1;13995:33:0;;;:89;:37;:89::i;:::-;13964:8;:121::i;:::-;-1:-1:-1;14103:4:0;13794:321;;;;;:::o;19894:57::-;19935:16;19894:57;:::o;11964:83::-;12030:9;;;;11964:83;:::o;14524:218::-;14612:4;14629:83;14638:12;:10;:12::i;:::-;14652:7;14661:50;14700:10;14661:11;:25;14673:12;:10;:12::i;:::-;-1:-1:-1;;;;;14661:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;14661:25:0;;;:34;;;;;;;;;;;:38;:50::i;12275:119::-;-1:-1:-1;;;;;12368:18:0;12341:7;12368:18;;;;;;;;;;;;12275:119::o;11239:87::-;11311:7;11304:14;;;;;;;;-1:-1:-1;;11304:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11278:13;;11304:14;;11311:7;;11304:14;;11311:7;11304:14;;;;;;;;;;;;;;;;;;;;;;;;15245:269;15338:4;15355:129;15364:12;:10;:12::i;:::-;15378:7;15387:96;15426:15;15387:96;;;;;;;;;;;;;;;;;:11;:25;15399:12;:10;:12::i;:::-;-1:-1:-1;;;;;15387:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;15387:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;12607:175::-;12693:4;12710:42;12720:12;:10;:12::i;:::-;12734:9;12745:6;12710:9;:42::i;12845:151::-;-1:-1:-1;;;;;12961:18:0;;;12934:7;12961:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12845:151::o;904:181::-;962:7;994:5;;;1018:6;;;;1010:46;;;;;-1:-1:-1;;;1010:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1076:1;904:181;-1:-1:-1;;;904:181:0:o;5909:106::-;5997:10;5909:106;:::o;18392:346::-;-1:-1:-1;;;;;18494:19:0;;18486:68;;;;-1:-1:-1;;;18486:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18573:21:0;;18565:68;;;;-1:-1:-1;;;18565:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18646:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18698:32;;;;;;;;;;;;;;;;;18392:346;;;:::o;16004:539::-;-1:-1:-1;;;;;16110:20:0;;16102:70;;;;-1:-1:-1;;;16102:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16191:23:0;;16183:71;;;;-1:-1:-1;;;16183:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16267:47;16288:6;16296:9;16307:6;16267:20;:47::i;:::-;16347:71;16369:6;16347:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16347:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;16327:17:0;;;:9;:17;;;;;;;;;;;:91;;;;16452:20;;;;;;;:32;;16477:6;16452:24;:32::i;:::-;-1:-1:-1;;;;;16429:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;16500:35;;;;;;;16429:20;;16500:35;;;;;;;;;;;;;16004:539;;;:::o;1807:192::-;1893:7;1929:12;1921:6;;;;1913:29;;;;-1:-1:-1;;;1913:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1965:5:0;;;1807:192::o;19763:92::-;;;;:::o

Swarm Source

ipfs://9efd28b2826cea955eba777a1e72fc7c2627d4b8722d540813dd948af3724b6f
Block Transaction Difficulty Gas Used Reward
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.

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.