Contract 0x12b54baA8FFcFd6679CcF1AE618ca3006cFcc2aC 2

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x29a486c56ef311fcdf9ebf14d1d696414615252df8b79351203c09effe96a755Transfer407772682023-03-26 4:29:064 days 4 hrs ago0x135a5f27c5d7f31936e1d08b8930de1dc8762fb4 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.002183706229 68.441867668
0xa287641c267e2b88a66556c371a447c1cbf82c6f2e62eed463e4f0d1d3ae92c9Transfer407771192023-03-26 4:23:484 days 4 hrs ago0x135a5f27c5d7f31936e1d08b8930de1dc8762fb4 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.002252665941 61.390579982
0x3bf1b05db0be68bfa0d2383ab0bd70bdf570384c3b5ac8d84b53f9869d043189Transfer406674912023-03-23 7:59:517 days 1 hr ago0xf59c33bb127295fd9a7cdaf05ba38adb54575da2 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.007496771491 153.01407297
0x932698ea01ee8b8d37ceaebdeb06a59b7a4a921a3157d0a95a20c14b2e04fac1Transfer387781982023-02-01 9:25:4156 days 23 hrs ago0x20b0f22afa6b9ec330cf1742a170d9f15ada297e IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.002335381898 73.195696674
0x29f416e6232dff908d8e5234f68648368623affafb3807720d9565ba82b8327dTransfer387780682023-02-01 9:21:0556 days 23 hrs ago0x20b0f22afa6b9ec330cf1742a170d9f15ada297e IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.003015082381 82.19514699
0xdadd0b59b37620d66e8ac386b51095eeb4846b3d863e3fdf4833de598777cb16Transfer344103912022-10-16 9:13:33164 days 23 hrs ago0x494da10027c923550ed6f4f8075bcb6c2b79d159 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.007814161422 244.911973364
0xf4912f14ee513e67abf8be0aedd6cd86463d1270fdbedc1ecd64d7ba2be86212Transfer344103292022-10-16 9:10:09164 days 23 hrs ago0x494da10027c923550ed6f4f8075bcb6c2b79d159 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.014551930902 270.572513147
0x82af182dad3dc72a2d77b0162cdd0da3ae9b7c3bacc19c18e62674d0fa016edeWithdraw330295102022-09-12 22:56:55198 days 10 hrs ago0x35e7abb9af343f765e6d27be858514c326d4318f IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.002183094699 74.956041184
0x13a8f735bed566e59fdebde4e66fac7072894e54a285d47780654b949edbd2c7Transfer317436762022-08-10 21:04:48231 days 12 hrs ago0x7af2738b9a6016ad398b88dc038b49abb90a10c0 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.000970269894 30.410264347
0x2407ae68be357bf01a572cbbc041ce10e013e3e4d7b744b2004b7e8facb14537Transfer317436062022-08-10 21:02:24231 days 12 hrs ago0x7af2738b9a6016ad398b88dc038b49abb90a10c0 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.001643308996 30.55499974
0x47ac1068958a356345f71ac9c8858be65cf8f49c4ac7f9c857dd769f332e02b7Transfer304469442022-07-07 14:51:40265 days 18 hrs ago0xdd983e705b03d19d30af5aed900aab8a6c15531c IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.001470180023 30.000000484
0x711d25f43ff35b3fcf3b56cdc524360d0a1f14dabc9ce6849090745b72d04b08Transfer290141362022-06-01 1:23:32302 days 7 hrs ago0xd53f68c213786bb5b836b6882bbab181f93ef062 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.00120700398 37.830000025
0x827ed115b4157d19e5ad60fd8316e7057e392f368cdbe0818e0d9fdbbda0a8abTransfer287864822022-05-26 9:01:16308 days 3 mins ago0x2153a766c5c25a5a7d9d06b1fa165f8c80517d23 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.001816627892 56.9368737
0xca17e2d3f978c0c3074bb1dfecd14467994d841b6d38bdde136b90dfbbad4e7dTransfer287863062022-05-26 8:55:16308 days 9 mins ago0x2153a766c5c25a5a7d9d06b1fa165f8c80517d23 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.005491515441 102.061395418
0x9ed0e05d660d873cc0289326487c8e0a42decc7de55f22e80873b7ac6b9f7849Transfer287482422022-05-25 10:12:54308 days 22 hrs ago0x65b1d63867828e09116a4b70de6a666d1feca4b7 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.001521509868 31.039819425
0xc13b7571787d10ed3882757073076dfd2f72cf53c7a2e84a8c42164050599f7dTransfer287460682022-05-25 8:53:25309 days 11 mins ago0x7e9133afe3e8c1e040cc2804c3f73ebe0653a5b1 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.001082800572 33.9499772
0x6d49b3ee58d68765228e40964626cac821718a230db9fe4bc14b43eedc754ec9Transfer287458782022-05-25 8:46:53309 days 18 mins ago0x7e9133afe3e8c1e040cc2804c3f73ebe0653a5b1 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.001613102068 30.000038466
0x36eb4e75ea12c2ec0fd0130b9b96eccc0f9fefcc8d82324b32f0e5a3adfb801fTransfer281845332022-05-11 8:51:05323 days 13 mins ago0xd69d10b33ca5c1c54405d099c141839bbc1bf6bd IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.007313142684 199.23562046
0x5fc4ab18800ce5ba5739dc14467c05b82d4668a250fc0a90325338b6db65b9bdTransfer281138672022-05-09 13:56:24324 days 19 hrs ago0x2fa2c0d12b9e8b95a477fa1a0c44a8515082941c IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.008588921177 269.093338469
0x69d77f6a716d55753c655dc29b783c365d39a2efbb141cfdafd8c9016166dfd4Transfer281075252022-05-09 9:58:57324 days 23 hrs ago0xd69d10b33ca5c1c54405d099c141839bbc1bf6bd IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.012992050661 241.514865262
0xb26ac2d160ae48c2d20ad42eb6405c956dfacbe984da468c47beb206d6f2d48dTransfer274757552022-04-23 9:11:43340 days 23 hrs ago0x75cf75e0d4d20b1fc0d2bea7d6559a8fac2cd403 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.001492345515 30.452302079
0x8df8054c3a3bc53d116b332767f99ec992e31357949ead2e0e3026dd642f9991Transfer269741532022-04-10 16:07:29353 days 16 hrs ago0x3f533245da4603998e6b18659f1d1460b5ffee87 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.000957860453 30.021326816
0x285a13aa664278f763dd563ac4e3d70cfaf30cd6379695f42d3bb2152d77420cTransfer259446232022-03-14 20:07:51380 days 12 hrs ago0x518ed81126a66b5af3adf90963c50c5791c85eac IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.001080629532 33.869163554
0x0f2e246d17b50cb38a3b40c96df0e33aada8b052bb9593a55755d8700718c01aTransfer257323752022-03-08 16:48:21386 days 16 hrs ago0x89589cbf5527e1e99a4363cc0e185409c00f7552 IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.001597869053 32.605580003
0xd7503c7a1252ee9626a49b48e06b641e4a458d00953563bda96ce8995869c4fbTransfer255652392022-03-04 8:59:56391 days 4 mins ago0xd69d10b33ca5c1c54405d099c141839bbc1bf6bd IN  0x12b54baa8ffcfd6679ccf1ae618ca3006cfcc2ac0 MATIC0.000849106448 29.196975755
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MChilliSwapToken

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 5 : MChilliSwapToken.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.7.5;

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/math/SafeMath.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";


contract MChilliSwapToken is Ownable , IERC20 {
    using SafeMath for uint256;

    address public childChainManager;

    mapping (address => uint256) private _balances;

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

    mapping (address => bool) private whiteList;

    uint256 private _totalSupply;

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

    constructor(address _childChainManager){
        _decimals = 18;
        _name = "ChilliSwap Token";
        _symbol = "CHLI";
        childChainManager = _childChainManager;
    }

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

    /**
     * @notice Function to set/update chaildChainManager address incase it changes. Can only be called by owner.
     * @param _childChainManager Address of the chaild chain manager contract
     */
    function setChildChainManager(address _childChainManager) public onlyOwner {
        childChainManager = _childChainManager;
    }

    /**
     * @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 isUserwhiteListed() 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 isUserwhiteListed() 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 isUserwhiteListed() 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 isUserwhiteListed() 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 isUserwhiteListed() 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");

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

    function burn(uint256 _amount) external{
       _burn(msg.sender,_amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function checkIsUserWhiteListed(address _user) public view returns(bool){
        return !whiteList[_user];
    }

    function whiteListAddress(address _user ,bool _varaible) external onlyOwner{
         whiteList[_user] = !_varaible;
    }

    modifier isUserwhiteListed(){
        require(!whiteList[msg.sender],"you are not whitelisted");
        _;
    }

    // Matic POS Bridge functions
    /**
     * @notice called when token is deposited on root chain
     * @dev Should be callable only by ChildChainManager
     * Should handle deposit by minting the required amount for user
     * Make sure minting is done only by this function
     * @param user user address for whom deposit is being done
     * @param depositData abi encoded amount
     */
    function deposit(address user, bytes calldata depositData) external {
        require(
            _msgSender() == childChainManager,
            "Only ChildChainManager can deposit"
        );
        uint256 amount = abi.decode(depositData, (uint256));
        _mint(user, amount);
    }

    /**
     * @notice called when user wants to withdraw tokens back to root chain
     * @dev Should burn user's tokens. This transaction will be verified when exiting on root chain
     * @param amount amount of tokens to withdraw
     */
    function withdraw(uint256 amount) external {
        _burn(_msgSender(), amount);
    }
}

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

pragma solidity >=0.6.0 <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 () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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 {
        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 3 of 5 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.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, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

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

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

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

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

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        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) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        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, reverting 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) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

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

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

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * 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);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

File 4 of 5 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <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 5 of 5 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <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 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;
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_childChainManager","type":"address"}],"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":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"checkIsUserWhiteListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"childChainManager","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"user","type":"address"},{"internalType":"bytes","name":"depositData","type":"bytes"}],"name":"deposit","outputs":[],"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":[{"internalType":"address","name":"_childChainManager","type":"address"}],"name":"setChildChainManager","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"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_varaible","type":"bool"}],"name":"whiteListAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200163238038062001632833981810160405260208110156200003757600080fd5b50516000620000456200012a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506008805460ff191660121790556040805180820190915260108082526f21b434b63634a9bbb0b8102a37b5b2b760811b6020909201918252620000d5916006916200012e565b506040805180820190915260048082526343484c4960e01b602090920191825262000103916007916200012e565b50600180546001600160a01b0319166001600160a01b0392909216919091179055620001da565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620001665760008555620001b1565b82601f106200018157805160ff1916838001178555620001b1565b82800160010185558215620001b1579182015b82811115620001b157825182559160200191906001019062000194565b50620001bf929150620001c3565b5090565b5b80821115620001bf5760008155600101620001c4565b61144880620001ea6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063764a81bb116100b8578063a9059cbb1161007c578063a9059cbb146103a9578063c8291d84146103d5578063cf2c52cb146103dd578063dd62ed3e1461045d578063dfad827c1461048b578063f2fde38b146104b157610137565b8063764a81bb146102fd5780638da5cb5b1461032357806395d89b41146103475780639dd219281461034f578063a457c2d71461037d57610137565b8063313ce567116100ff578063313ce56714610268578063395093511461028657806342966c68146102b257806370a08231146102cf578063715018a6146102f557610137565b806306fdde031461013c578063095ea7b3146101b957806318160ddd146101f957806323b872dd146102135780632e1a7d4d14610249575b600080fd5b6101446104d7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360408110156101cf57600080fd5b506001600160a01b03813516906020013561056d565b604080519115158252519081900360200190f35b6102016105e7565b60408051918252519081900360200190f35b6101e56004803603606081101561022957600080fd5b506001600160a01b038135811691602081013590911690604001356105ed565b6102666004803603602081101561025f57600080fd5b50356106d1565b005b6102706106e5565b6040805160ff9092168252519081900360200190f35b6101e56004803603604081101561029c57600080fd5b506001600160a01b0381351690602001356106ee565b610266600480360360208110156102c857600080fd5b5035610799565b610201600480360360208110156102e557600080fd5b50356001600160a01b03166107a3565b6102666107be565b6102666004803603602081101561031357600080fd5b50356001600160a01b031661086a565b61032b6108ee565b604080516001600160a01b039092168252519081900360200190f35b6101446108fd565b6102666004803603604081101561036557600080fd5b506001600160a01b038135169060200135151561095e565b6101e56004803603604081101561039357600080fd5b506001600160a01b0381351690602001356109e9565b6101e5600480360360408110156103bf57600080fd5b506001600160a01b038135169060200135610aae565b61032b610b1f565b610266600480360360408110156103f357600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561041e57600080fd5b82018360208201111561043057600080fd5b8035906020019184600183028401116401000000008311171561045257600080fd5b509092509050610b2e565b6102016004803603604081101561047357600080fd5b506001600160a01b0381358116916020013516610bad565b6101e5600480360360208110156104a157600080fd5b50356001600160a01b0316610bd8565b610266600480360360208110156104c757600080fd5b50356001600160a01b0316610bf7565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105635780601f1061053857610100808354040283529160200191610563565b820191906000526020600020905b81548152906001019060200180831161054657829003601f168201915b5050505050905090565b3360009081526004602052604081205460ff16156105cc576040805162461bcd60e51b81526020600482015260176024820152761e5bdd48185c99481b9bdd081dda1a5d195b1a5cdd1959604a1b604482015290519081900360640190fd5b6105de6105d7610cf9565b8484610cfd565b50600192915050565b60055490565b3360009081526004602052604081205460ff161561064c576040805162461bcd60e51b81526020600482015260176024820152761e5bdd48185c99481b9bdd081dda1a5d195b1a5cdd1959604a1b604482015290519081900360640190fd5b610657848484610de9565b6106c784610663610cf9565b6106c28560405180606001604052806028815260200161131a602891396001600160a01b038a166000908152600360205260408120906106a1610cf9565b6001600160a01b031681526020810191909152604001600020549190610f3b565b610cfd565b5060019392505050565b6106e26106dc610cf9565b82610fd2565b50565b60085460ff1690565b3360009081526004602052604081205460ff161561074d576040805162461bcd60e51b81526020600482015260176024820152761e5bdd48185c99481b9bdd081dda1a5d195b1a5cdd1959604a1b604482015290519081900360640190fd5b6105de610758610cf9565b846106c28560036000610769610cf9565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906110c2565b6106e23382610fd2565b6001600160a01b031660009081526002602052604090205490565b6107c6610cf9565b6001600160a01b03166107d76108ee565b6001600160a01b031614610820576040805162461bcd60e51b81526020600482018190526024820152600080516020611342833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610872610cf9565b6001600160a01b03166108836108ee565b6001600160a01b0316146108cc576040805162461bcd60e51b81526020600482018190526024820152600080516020611342833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105635780601f1061053857610100808354040283529160200191610563565b610966610cf9565b6001600160a01b03166109776108ee565b6001600160a01b0316146109c0576040805162461bcd60e51b81526020600482018190526024820152600080516020611342833981519152604482015290519081900360640190fd5b6001600160a01b039091166000908152600460205260409020805460ff19169115919091179055565b3360009081526004602052604081205460ff1615610a48576040805162461bcd60e51b81526020600482015260176024820152761e5bdd48185c99481b9bdd081dda1a5d195b1a5cdd1959604a1b604482015290519081900360640190fd5b6105de610a53610cf9565b846106c2856040518060600160405280602581526020016113ee6025913960036000610a7d610cf9565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610f3b565b3360009081526004602052604081205460ff1615610b0d576040805162461bcd60e51b81526020600482015260176024820152761e5bdd48185c99481b9bdd081dda1a5d195b1a5cdd1959604a1b604482015290519081900360640190fd5b6105de610b18610cf9565b8484610de9565b6001546001600160a01b031681565b6001546001600160a01b0316610b42610cf9565b6001600160a01b031614610b875760405162461bcd60e51b81526004018080602001828103825260228152602001806113cc6022913960400191505060405180910390fd5b600082826020811015610b9957600080fd5b50359050610ba78482611123565b50505050565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6001600160a01b031660009081526004602052604090205460ff161590565b610bff610cf9565b6001600160a01b0316610c106108ee565b6001600160a01b031614610c59576040805162461bcd60e51b81526020600482018190526024820152600080516020611342833981519152604482015290519081900360640190fd5b6001600160a01b038116610c9e5760405162461bcd60e51b81526004018080602001828103825260268152602001806112ac6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b038316610d425760405162461bcd60e51b81526004018080602001828103825260248152602001806113a86024913960400191505060405180910390fd5b6001600160a01b038216610d875760405162461bcd60e51b81526004018080602001828103825260228152602001806112d26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610e2e5760405162461bcd60e51b81526004018080602001828103825260258152602001806113836025913960400191505060405180910390fd5b6001600160a01b038216610e735760405162461bcd60e51b81526004018080602001828103825260238152602001806112676023913960400191505060405180910390fd5b610eb0816040518060600160405280602681526020016112f4602691396001600160a01b0386166000908152600260205260409020549190610f3b565b6001600160a01b038085166000908152600260205260408082209390935590841681522054610edf90826110c2565b6001600160a01b0380841660008181526002602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610fca5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f8f578181015183820152602001610f77565b50505050905090810190601f168015610fbc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0382166110175760405162461bcd60e51b81526004018080602001828103825260218152602001806113626021913960400191505060405180910390fd5b6110548160405180606001604052806022815260200161128a602291396001600160a01b0385166000908152600260205260409020549190610f3b565b6001600160a01b03831660009081526002602052604090205560055461107a9082611209565b6005556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60008282018381101561111c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661117e576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60055461118b90826110c2565b6005556001600160a01b0382166000908152600260205260409020546111b190826110c2565b6001600160a01b03831660008181526002602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600082821115611260576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734f6e6c79204368696c64436861696e4d616e616765722063616e206465706f73697445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220267de8dd4bd23b028399cda7bd6740df3ca7d2d61e1dc709f20768e3b3ab086564736f6c63430007050033000000000000000000000000a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa

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

000000000000000000000000a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa

-----Decoded View---------------
Arg [0] : _childChainManager (address): 0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa


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