Contract 0xd3Ac016b1B8C80EeAdDe4D186A9138C9324e4189 7

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xea75c31b0ae2de5cfbbba5598f4fcc2dec35be17a35ec9e70426d6559ebb8449Transfer582565372023-03-24 5:31:093 days 20 hrs ago0x1b21b7cd49689e4f645ce68df55455b4f240bd1e IN  Okcash: OK Token0 FTM0.00081689369
0x678dc8d87c66638e9c6bed912b7337f9ae57e5c0b183895f961ae3d770d04546Approve582304022023-03-23 21:10:454 days 4 hrs ago0x256a0f2c2e4e25be77d0fd4fd240367c30b72f51 IN  Okcash: OK Token0 FTM0.001250547441
0x9ef5494067a4b2367da01de91ae5db69c8c4e7fcd54489b5a1dd279bf13bb7dcTransfer578339502023-03-18 8:02:189 days 17 hrs ago0x47033577110b96e012318a67dfee9bc2f16c247d IN  Okcash: OK Token0 FTM0.001440402014
0xcccb76c3a70303ef50c64b79afbabca8bc704d20e30e7db276413e74be2b2ceaTransfer578339362023-03-18 8:01:479 days 17 hrs ago0x205a310ccc9cd26233e65d0e3579dc489defcdf6 IN  Okcash: OK Token0 FTM0.001495279129
0x33a565f368c77228bb53fa7f213a1ad5e4ec7921379d2abfb6f6d85f7e12ba1bTransfer578339002023-03-18 8:00:599 days 17 hrs ago0xfa31bb474fcc7c51f9b454a628b8c80eac82ab36 IN  Okcash: OK Token0 FTM0.00142570753
0x99340160996412f265d934400e0d31696a9f637cccefdfafcab2655b7d29bf3bTransfer578338872023-03-18 8:00:469 days 17 hrs ago0x1bc9fca5c1286cb3fa3abfe7daf32d9b5ba69c11 IN  Okcash: OK Token0 FTM0.00142570753
0x62c748016074decd44a6a8e69dfdbb8e9ed843edf124fca5fe2e43c64ce1d1e4Transfer578338752023-03-18 8:00:309 days 17 hrs ago0x003ffbadd5b041d79ca42b54fdef8efbd6a9826c IN  Okcash: OK Token0 FTM0.00142570753
0xd9b9a2b3996875a4e512abd4208f10f6cab5eda34357b09a47fca90986ed79a4Transfer578338582023-03-18 8:00:149 days 17 hrs ago0x20d1f7e391ad8c498664da2f5b8deb8c865715c9 IN  Okcash: OK Token0 FTM0.00142570753
0x088d65449e46019129f64bf8c6d1a2d84fc1fca0c5939c4d5b0f14a7bbb0bce2Transfer578338402023-03-18 7:59:579 days 17 hrs ago0x165402dc0fdc96d8503637be03091e1a5ea706cd IN  Okcash: OK Token0 FTM0.00142570753
0x21c8b1fbcc50b560e06223b402be957a173cfb4e4576633cc50c4e4b706d30d3Transfer578338262023-03-18 7:59:429 days 17 hrs ago0x6516609bbf57ed4a160517c28a7e9b886e8afb0a IN  Okcash: OK Token0 FTM0.00142570753
0xa712d9fc62169b04fb597767e03c733b8288cd0f833fd07af1d5f2f53c35291dTransfer578338112023-03-18 7:59:289 days 17 hrs ago0x9aeec65a81d6322454fa483898ec54a8f7417dc7 IN  Okcash: OK Token0 FTM0.00142570753
0x6ef9a625c530dc07d8530e4daf3790ded2d85b4582270d537c3b46f533c54a20Transfer578337822023-03-18 7:59:019 days 17 hrs ago0xeaef64bd99b8de9a3c5c340058483b9307ecd9a4 IN  Okcash: OK Token0 FTM0.00142187797
0x4d42b715b113dd642344258d3f3a2d6bf2c4a3a3b0c3595557a723ecd2c45d73Transfer578337472023-03-18 7:58:289 days 17 hrs ago0xa4eff84c98d726124c02c1798b94612ff0ed81a8 IN  Okcash: OK Token0 FTM0.001422424913
0xee311a003efa40d0f012df2cdad0cbbca2f09dc711b25b8ba7f5fef1339ed2eeTransfer578337322023-03-18 7:58:139 days 17 hrs ago0x4b50af5d04478c689cc8e4248ce1588c6939c675 IN  Okcash: OK Token0 FTM0.001423718062
0x530732684eb39085c5661527cdb1c58642e9726e9f6169d74985691d6b75300bTransfer578337172023-03-18 7:57:599 days 17 hrs ago0x42e76f0f725fe0f1494733c95c622b0ae01150b9 IN  Okcash: OK Token0 FTM0.00142570753
0xd88c21ee6963927c2c6fba59ed7a25a1fc7230b231afd78dc0268d7c221b965fTransfer578336962023-03-18 7:57:409 days 17 hrs ago0xe5ca1aa94119d6dba68e228c3ceae136dabd6551 IN  Okcash: OK Token0 FTM0.00142570753
0x1fba43631e42a9c4050d499e6b0552ff9d9d09f1751b46b08209a479f7320278Transfer578336802023-03-18 7:57:239 days 17 hrs ago0xf9cb5dc01e41c67e1c287f5ff75d8bcf24387ab2 IN  Okcash: OK Token0 FTM0.00142570753
0x31cb7733b4450d6fcb312002efc3f6686d5f1326e64943f7fabc0ac4358ab106Transfer578336642023-03-18 7:57:099 days 17 hrs ago0x729f08bac50c0735de8b2c39c3fba1368784e9a7 IN  Okcash: OK Token0 FTM0.00142570753
0xd8387d4933fb89dd8858dd6401d95b98b5d2c8b86653317a259f0341fa16e5e1Transfer578336492023-03-18 7:56:579 days 17 hrs ago0xfc70b0f7c6d57e2f761c97aafbd284dbf199414b IN  Okcash: OK Token0 FTM0.001423957177
0x8df4a5eea09e7db8b92a738b107a097eb0b0e3570fdb2620ccae34d3a07ca67bTransfer578336362023-03-18 7:56:459 days 17 hrs ago0x956e6186d7e8a8dfb6ec1222995af12faabc5c81 IN  Okcash: OK Token0 FTM0.001424552218
0xce9f34c19203cd304d768a80989e7c0fd4823ab92999bc090dde0cf3f045ce51Transfer578336192023-03-18 7:56:319 days 17 hrs ago0x84944089563497fb159b11a689d57dfdbb2282d8 IN  Okcash: OK Token0 FTM0.001425435847
0xde32911844762289b307eff2bb860439a8376be5b09c0e1359dbe488fea01d75Transfer578336032023-03-18 7:56:189 days 17 hrs ago0xd5bc1b45ab42c2796b5202c365482ec357551423 IN  Okcash: OK Token0 FTM0.001427186613
0x724874afd4e2ef2850c1a323bee78143a7fce37e5395261c2aa76f202e450c0dTransfer578335732023-03-18 7:55:439 days 17 hrs ago0x0221dabbdd060ebf2d27c6f2c7fb3da4b1d1515a IN  Okcash: OK Token0 FTM0.001435304429
0xb5c1e10fb239fdedca4cafc1437b48eac9cf3651e36105a290098c0c3580e2baTransfer578335582023-03-18 7:55:259 days 17 hrs ago0xcecaad9aa2d1940b9a80421b6baf1b6d061ffca6 IN  Okcash: OK Token0 FTM0.001436082576
0x80779df0445b6cb7b4fedd6ac6244a30c381779869f75d607603e9c3e84e929cTransfer578335292023-03-18 7:54:529 days 17 hrs ago0x5da7ec93d34ca4ebd4811af892d099af1480de31 IN  Okcash: OK Token0 FTM0.001436082576
[ Download CSV Export 

OVERVIEW

OK is multichain Energy Friendly and open sources Peer-to-Peer Electronic Cash, its design is public, nobody owns or controls Okcash and everyone can take part.

Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xe1252c932832ccb9e535d3ba264713de01d4b2909882530d45e216d870f4c9e6535721052023-01-11 11:17:3075 days 14 hrs ago Okcash: Deployer  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OkcashToken

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Standard Json-Input format)

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

pragma solidity ^0.8.13;

import {ERC20Burnable} from "burnable.sol";
import {ERC20Mintable} from "mintable.sol";
import {ERC20} from "ERC20.sol";

/**
 * Wrapped Okcash
 * Implementation of the Wrapped Okcash
 */
contract OkcashToken is ERC20Mintable, ERC20Burnable {
    constructor() ERC20("Okcash", "OK") {
        _setupDecimals(18);
        //_mint(_msgSender(), 0);
        transferOwnership(0x362f16bcCA3c909DeA88898f406C7D9ffb48361E);
    }

    function _mint(
        address account,
        uint256 amount
    ) internal override onlyOwner {
        super._mint(account, amount);
    }

    function _finishMinting() internal override onlyOwner {
        super._finishMinting();
    }
}

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

pragma solidity ^0.8.0;
import {ERC20} from "ERC20.sol";

abstract contract ERC20Burnable is ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(
            currentAllowance >= amount,
            "ERC20: burn amount exceeds allowance"
        );
        _approve(account, _msgSender(), currentAllowance - amount);
        _burn(account, amount);
    }
}

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

import {Ownable} from "ownable.sol";

import {IERC20} from "IERC20.sol";
pragma solidity ^0.8.0;

contract ERC20 is Ownable, IERC20 {
    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_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view 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 {_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 override 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-getOwner}.
     */
    function getOwner() public view override returns (address) {
        return owner();
    }

    /**
     * @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-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"
        );
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    /**
     * @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-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @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"
        );
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        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);

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += 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 += amount;
        _balances[account] += 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);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= 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 {}
}

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

pragma solidity ^0.8.0;

import {Context} from "context.sol";

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() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

pragma solidity ^0.8.0;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        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;
    }
}

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

pragma solidity ^0.8.0;

/**
 * @dev Interface of the BEP standard.
 */
interface IERC20 {
    /**
     * @dev Returns the token name.
     */
    function name() external view returns (string memory);

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

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

    /**
     * @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 Returns the token owner.
     */
    function getOwner() external view returns (address);

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

pragma solidity ^0.8.0;
import {ERC20} from "ERC20.sol";

abstract contract ERC20Mintable is ERC20 {
    // indicates if minting is finished
    bool private _mintingFinished = false;

    /**
     * @dev Emitted during finish minting
     */
    event MintFinished();

    /**
     * @dev Tokens can be minted only before minting finished.
     */
    modifier canMint() {
        require(!_mintingFinished, "ERC20Mintable: minting is finished");
        _;
    }

    /**
     * @return if minting is finished or not.
     */
    function mintingFinished() public view returns (bool) {
        return _mintingFinished;
    }

    /**
     * @dev Function to mint tokens.
     *
     * WARNING: it allows everyone to mint new tokens. Access controls MUST be defined in derived contracts.
     *
     * @param account The address that will receive the minted tokens
     * @param amount The amount of tokens to mint
     */
    function mint(address account, uint256 amount) public canMint {
        _mint(account, amount);
    }

    /**
     * @dev Function to stop minting new tokens.
     *
     * WARNING: it allows everyone to finish minting. Access controls MUST be defined in derived contracts.
     */
    function finishMinting() public canMint {
        _finishMinting();
    }

    /**
     * @dev Function to stop minting new tokens.
     */
    function _finishMinting() internal virtual {
        _mintingFinished = true;

        emit MintFinished();
    }
}

Settings
{
  "evmVersion": "istanbul",
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "libraries": {
    "okash.sol": {}
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

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":[],"name":"MintFinished","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":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","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":[],"name":"finishMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintingFinished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}]

60806040526006805461ff00191690553480156200001c57600080fd5b506040518060400160405280600681526020016509ed6c6c2e6d60d31b815250604051806040016040528060028152602001614f4b60f01b815250600062000069620000f460201b60201c565b600080546001600160a01b0319166001600160a01b03831690811782556040519293509160008051602062001358833981519152908290a3506004620000b08382620002ae565b506005620000bf8282620002ae565b50506006805460ff1916601217905550620000ee73362f16bcca3c909dea88898f406c7d9ffb48361e620000f8565b6200037a565b3390565b6000546001600160a01b03163314620001585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b038116620001bf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200014f565b600080546040516001600160a01b03808516939216916000805160206200135883398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200023457607f821691505b6020821081036200025557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a957600081815260208120601f850160051c81016020861015620002845750805b601f850160051c820191505b81811015620002a55782815560010162000290565b5050505b505050565b81516001600160401b03811115620002ca57620002ca62000209565b620002e281620002db84546200021f565b846200025b565b602080601f8311600181146200031a5760008415620003015750858301515b600019600386901b1c1916600185901b178555620002a5565b600085815260208120601f198616915b828110156200034b578886015182559484019460019091019084016200032a565b50858210156200036a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610fce806200038a6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad57806395d89b411161007157806395d89b4114610271578063a457c2d714610279578063a9059cbb1461028c578063dd62ed3e1461029f578063f2fde38b146102d857600080fd5b8063715018a61461021857806379cc6790146102205780637d64bcb414610233578063893d20e81461023b5780638da5cb5b1461026057600080fd5b8063313ce567116100f4578063313ce5671461019f57806339509351146101b457806340c10f19146101c757806342966c68146101dc57806370a08231146101ef57600080fd5b806305d2035b1461013157806306fdde0314610152578063095ea7b31461016757806318160ddd1461017a57806323b872dd1461018c575b600080fd5b600654610100900460ff165b60405190151581526020015b60405180910390f35b61015a6102eb565b6040516101499190610d5d565b61013d610175366004610dce565b61037d565b6003545b604051908152602001610149565b61013d61019a366004610df8565b610393565b60065460405160ff9091168152602001610149565b61013d6101c2366004610dce565b610449565b6101da6101d5366004610dce565b610480565b005b6101da6101ea366004610e34565b6104b6565b61017e6101fd366004610e4d565b6001600160a01b031660009081526001602052604090205490565b6101da6104c3565b6101da61022e366004610dce565b610537565b6101da6105bf565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610149565b6000546001600160a01b0316610248565b61015a6105f1565b61013d610287366004610dce565b610600565b61013d61029a366004610dce565b61069b565b61017e6102ad366004610e6f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101da6102e6366004610e4d565b6106a8565b6060600480546102fa90610ea2565b80601f016020809104026020016040519081016040528092919081815260200182805461032690610ea2565b80156103735780601f1061034857610100808354040283529160200191610373565b820191906000526020600020905b81548152906001019060200180831161035657829003601f168201915b5050505050905090565b600061038a338484610792565b50600192915050565b60006103a08484846108b7565b6001600160a01b03841660009081526002602090815260408083203384529091529020548281101561042a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61043e85336104398685610ef2565b610792565b506001949350505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161038a918590610439908690610f09565b600654610100900460ff16156104a85760405162461bcd60e51b815260040161042190610f21565b6104b28282610a8f565b5050565b6104c03382610ac3565b50565b6000546001600160a01b031633146104ed5760405162461bcd60e51b815260040161042190610f63565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061054383336102ad565b9050818110156105a15760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610421565b6105b083336104398585610ef2565b6105ba8383610ac3565b505050565b600654610100900460ff16156105e75760405162461bcd60e51b815260040161042190610f21565b6105ef610c12565b565b6060600580546102fa90610ea2565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156106825760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610421565b61069133856104398685610ef2565b5060019392505050565b600061038a3384846108b7565b6000546001600160a01b031633146106d25760405162461bcd60e51b815260040161042190610f63565b6001600160a01b0381166107375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610421565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166107f45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610421565b6001600160a01b0382166108555760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610421565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661091b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610421565b6001600160a01b03821661097d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610421565b6001600160a01b038316600090815260016020526040902054818110156109f55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610421565b6109ff8282610ef2565b6001600160a01b038086166000908152600160205260408082209390935590851681529081208054849290610a35908490610f09565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a8191815260200190565b60405180910390a350505050565b6000546001600160a01b03163314610ab95760405162461bcd60e51b815260040161042190610f63565b6104b28282610c44565b6001600160a01b038216610b235760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610421565b6001600160a01b03821660009081526001602052604090205481811015610b975760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610421565b610ba18282610ef2565b6001600160a01b03841660009081526001602052604081209190915560038054849290610bcf908490610ef2565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016108aa565b6000546001600160a01b03163314610c3c5760405162461bcd60e51b815260040161042190610f63565b6105ef610d23565b6001600160a01b038216610c9a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610421565b8060036000828254610cac9190610f09565b90915550506001600160a01b03821660009081526001602052604081208054839290610cd9908490610f09565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6006805461ff0019166101001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a1565b600060208083528351808285015260005b81811015610d8a57858101830151858201604001528201610d6e565b81811115610d9c576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610dc957600080fd5b919050565b60008060408385031215610de157600080fd5b610dea83610db2565b946020939093013593505050565b600080600060608486031215610e0d57600080fd5b610e1684610db2565b9250610e2460208501610db2565b9150604084013590509250925092565b600060208284031215610e4657600080fd5b5035919050565b600060208284031215610e5f57600080fd5b610e6882610db2565b9392505050565b60008060408385031215610e8257600080fd5b610e8b83610db2565b9150610e9960208401610db2565b90509250929050565b600181811c90821680610eb657607f821691505b602082108103610ed657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610f0457610f04610edc565b500390565b60008219821115610f1c57610f1c610edc565b500190565b60208082526022908201527f45524332304d696e7461626c653a206d696e74696e672069732066696e697368604082015261195960f21b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea26469706673582212207bad8596d4522a16402001158e638ad0ce60d3515a16b70c54662f38121400f464736f6c634300080f00338be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
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.