Contract 0x9d5565dA88e596730522CbC5a918d2A89dbC16d9 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x6a14ac93c050e398df3fa58ff879f0d101693344be1e849209abe3ce75c4bda2Approve318484822022-08-13 15:54:265 hrs 21 mins ago0xbf818a60cfdad077e71d39aa41de0b73cbee6e8b IN  OpenOcean: OOE Token0 MATIC0.0023131550
0x34f2dc076306fe5ed9126426d01b6d81a31ce4ec0df673e10325b8b604eece9dApprove318007102022-08-12 8:50:041 day 12 hrs ago0xa1e66374c23d71eacd7d5d3d79660ff9199eda68 IN  OpenOcean: OOE Token0 MATIC0.0023131550
0xafdff6fb0710cd701ee76bb974f58286231dc41785fb0a4ff0564db6ee559220Approve317969272022-08-12 6:35:241 day 14 hrs ago0x024fbd36161b9c00759fe8b0909ca89b9272aced IN  OpenOcean: OOE Token0 MATIC0.001396604379 30.009333665
0xa635dc2d996a9d18597bbabc4dbf2d0413ef940fb0a2d4a7668c66998b71426eTransfer317963302022-08-12 6:14:541 day 15 hrs ago0x35b383efa16dbf569998ce2e4889b1dc6923c0b6 IN  OpenOcean: OOE Token0 MATIC0.001599183787 31.04970075
0xc9d6610d9cf760183e2dc3be5b60308086d2692218255477a2a0c7edf453d5f2Approve317916112022-08-12 3:11:171 day 18 hrs ago0x985e988aa1152077dbaa0c908c8125df0e2a6e68 IN  OpenOcean: OOE Token0 MATIC0.00349042575
0xe6f5126319dbf722fdbaf57e9006b547326c366dcd32c3e7def4bd6ad39d81f0Approve317897112022-08-12 2:01:451 day 19 hrs ago0x3e2bd9e81971ae87aa6f69c8ee903922ef653010 IN  OpenOcean: OOE Token0 MATIC0.00161836535
0xe2bff99bc4818545da20acc2e536ba0cd7514fe1d8ac9e00b48618511dbe9bf7Approve317651632022-08-11 10:30:252 days 10 hrs ago0xb178a94e621577c1a47cfd796a2b69efdc2fa0a8 IN  OpenOcean: OOE Token0 MATIC0.00144270931
0x461b949bf2438974ae9c755c70bf693db063557a33742137d1245f04e531673aApprove317620112022-08-11 8:35:412 days 12 hrs ago0x80ec895a464e8ea51d76c301027961817b8e45d2 IN  OpenOcean: OOE Token0 MATIC0.001681032379 36.120938993
0x2f76030d6f59b117a152d02cd86ac2e136f3ef4cee00fb27e515680a7f7b7783Approve317554312022-08-11 4:30:072 days 16 hrs ago0x7dc42bf2150f7c9196a3738e2e86ec17a0a45052 IN  OpenOcean: OOE Token0 MATIC0.00146597850731.500000163
0x19f6b7c36c0196c25b1992baf9fac16f2e9f0c45b4cbc2d24bae2aec6c6c4dddApprove317511472022-08-11 1:52:112 days 19 hrs ago0xd65c385bc45e0a568324df03a86603f6e23f00c8 IN  OpenOcean: OOE Token0 MATIC0.00349042575
0xc9fd6d939143c474575d775db2325744acea33c1bc933b00dd1c921d84f141b8Transfer317398082022-08-10 18:23:353 days 2 hrs ago0x60d7bbdb557e148b26bafcc193b5690490a0eb3b IN  OpenOcean: OOE Token0 MATIC0.001449041042 31.010123311
0xc74c320dcd2af8e5304bbfd19254ee9e9cb6495093a559febfda1bb6880b861eApprove317352172022-08-10 15:04:163 days 6 hrs ago0x0b871389caa3796691741d73e8bcb5bda59f5de6 IN  OpenOcean: OOE Token0 MATIC0.045009044024 1,542.726444723
0x995d18d3d3e34fdaae84c82c41919021a600d3cea1239fba8ff3b9e7efa4feadTransfer317347332022-08-10 14:42:123 days 6 hrs ago0x9d19ba5bdcb52710d475ac04b3c09294c60bccb7 IN  OpenOcean: OOE Token0 MATIC0.00385924055 82.589465634
0x89e020b8a1457e0bcbf3d68bac587e6cf2b97edd77ea718cf8b00c6b7816a4faApprove317339312022-08-10 14:01:463 days 7 hrs ago0xb5f5a5485a38bea56b3c40ae222132af23194670 IN  OpenOcean: OOE Token0 MATIC0.00309794633866.566671792
0x91f56e2fb7f8894467d66083e408935c9cb7a91fdf111f94b25ce59675100fa9Approve317333362022-08-10 13:38:443 days 7 hrs ago0x00966d0d39e4588d4a5aefcdc8e5662f82b695f7 IN  OpenOcean: OOE Token0 MATIC0.020655784921443.838177053
0xd158c25d7832be57d4d24687d1fece9f44f82d3274b55939c8a9d09fd2d67593Approve317307422022-08-10 11:52:543 days 9 hrs ago0x7b1aa5fbddfb965c869d6e57c4a2b11f8e4d5979 IN  OpenOcean: OOE Token0 MATIC0.00236002551
0x807e3f5e13a5df0ea2c71cf9c9795dcf8efe0f47f4f78ea7793af01beddea8f0Approve317306162022-08-10 11:48:063 days 9 hrs ago0x22fcf2a760a53952ddf911f8db2897de247d9fb9 IN  OpenOcean: OOE Token0 MATIC0.00349042575
0x08e8b3c6a762bdae56d7faa4082681f953165bf134658b45c00781bda305e883Approve317305782022-08-10 11:44:183 days 9 hrs ago0x09be8cbde81f2329a70bf4ad945da0994ab99e1b IN  OpenOcean: OOE Token0 MATIC0.00349042575
0xf734add815caedda68be7d43462657f1c3034660c8cfc51b4ddabfe68e7591e2Transfer317295962022-08-10 11:07:003 days 10 hrs ago0x71c501ad58f998866c779aa9e15082662ce95474 IN  OpenOcean: OOE Token0 MATIC0.002764083633 59.152620139
0x0693dc491de8d52e7bcc0a5a4b3f1cf5deea59e885a49a28c31c0cfac01928ffApprove317295432022-08-10 11:03:283 days 10 hrs ago0xa7f2353aa72b9ab97065ec710b5aae9df1f4025d IN  OpenOcean: OOE Token0 MATIC0.00349042575
0x6e43a4f63ae62f61ca9e2bd69cb635856c809fae40ea5f9f04260d5f0e7d7b39Approve317288352022-08-10 10:32:263 days 10 hrs ago0xc1a394adccf27410c3a740ecb0b47e238fae2ffd IN  OpenOcean: OOE Token0 MATIC0.00349042575
0xb79f8483ab9b8e1185af4f7e8a4209517ff2d94a28549e2226daa1126657d3c4Approve317272142022-08-10 9:32:243 days 11 hrs ago0x6ae08c45c6c6368cbe772d84c162634517a08dd4 IN  OpenOcean: OOE Token0 MATIC0.0023131550
0x33c12718038ca3e1606b1c570c833ee9aeb4f889557ed0dcf4f0733fc326916eApprove317258542022-08-10 8:38:383 days 12 hrs ago0x80c5c311eb9e2965a0ea789f40eaa896b5adb41c IN  OpenOcean: OOE Token0 MATIC0.00349042575
0xb6ffab54efe64de5464aec7d27a48dfad2d4b8889d0f1bf5306a40ed18ce94c7Approve317241592022-08-10 7:27:273 days 13 hrs ago0xb72d80202e0ca680a7dce81cb59b5312c1bcc33f IN  OpenOcean: OOE Token0 MATIC0.0023131550
0x2ab8500e644eea3077a75a4ec4c71dd46f47d27a389c53b57621ab015d5a855fApprove317239212022-08-10 7:19:193 days 13 hrs ago0xb72d80202e0ca680a7dce81cb59b5312c1bcc33f IN  OpenOcean: OOE Token0 MATIC0.0023131550
[ Download CSV Export 

OVERVIEW

OpenOcean is a full CeFi and DeFi aggregator that aggregates mainstream DEXes on public chains and mainstream CEXes.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OOE

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-08-13
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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

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


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

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

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



/**
 * @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, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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


/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
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) {
        unchecked {
            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) {
        unchecked {
            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) {
        unchecked {
            // 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) {
        unchecked {
            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) {
        unchecked {
            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) {
        return a + b;
    }

    /**
     * @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 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) {
        return a * b;
    }

    /**
     * @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.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        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) {
        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) {
        unchecked {
            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.
     *
     * 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) {
        unchecked {
            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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}





contract OOE is ERC20, Ownable {

    using SafeMath for uint256;
    // keeping it for checking, whether deposit being called by valid address or not
    address public childChainManagerProxy;
    uint constant maxSupply = (10 ** 9) * (10 ** 18);

    constructor(string memory name, string memory symbol, address _childChainManagerProxy) ERC20(name, symbol) {
        childChainManagerProxy = _childChainManagerProxy;
    }

    // being proxified smart contract, most probably childChainManagerProxy contract's address
    // is not going to change ever, but still, lets keep it
    function updateChildChainManager(address newChildChainManagerProxy) external onlyOwner {
        require(newChildChainManagerProxy != address(0), "Bad ChildChainManagerProxy address");
        childChainManagerProxy = newChildChainManagerProxy;
    }

    function deposit(address user, bytes calldata depositData) external {
        require(msg.sender == childChainManagerProxy, "not allowed to deposit");

        uint256 amount = abi.decode(depositData, (uint256));
        require(totalSupply() + amount <= maxSupply, "maxSupply exceeded");

        // `amount` token getting minted here & equal amount got locked in RootChainManager
        _mint(user, amount);
    }

    function withdraw(uint256 amount) external {
        _burn(msg.sender, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"_childChainManagerProxy","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":[],"name":"childChainManagerProxy","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":[],"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":"newChildChainManagerProxy","type":"address"}],"name":"updateChildChainManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200184838038062001848833981016040819052620000349162000258565b8251839083906200004d906003906020850190620000ff565b50805162000063906004906020840190620000ff565b505050620000806200007a620000a960201b60201c565b620000ad565b600680546001600160a01b0319166001600160a01b039290921691909117905550620003349050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200010d90620002e1565b90600052602060002090601f0160209004810192826200013157600085556200017c565b82601f106200014c57805160ff19168380011785556200017c565b828001600101855582156200017c579182015b828111156200017c5782518255916020019190600101906200015f565b506200018a9291506200018e565b5090565b5b808211156200018a57600081556001016200018f565b600082601f830112620001b6578081fd5b81516001600160401b0380821115620001d357620001d36200031e565b604051601f8301601f19908116603f01168101908282118183101715620001fe57620001fe6200031e565b816040528381526020925086838588010111156200021a578485fd5b8491505b838210156200023d57858201830151818301840152908201906200021e565b838211156200024e57848385830101525b9695505050505050565b6000806000606084860312156200026d578283fd5b83516001600160401b038082111562000284578485fd5b6200029287838801620001a5565b94506020860151915080821115620002a8578384fd5b50620002b786828701620001a5565b604086015190935090506001600160a01b0381168114620002d6578182fd5b809150509250925092565b600181811c90821680620002f657607f821691505b602082108114156200031857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61150480620003446000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806370a08231116100b2578063a457c2d711610081578063cf2c52cb11610066578063cf2c52cb146102ba578063dd62ed3e146102cd578063f2fde38b1461031357600080fd5b8063a457c2d714610294578063a9059cbb146102a757600080fd5b806370a0823114610230578063715018a6146102665780638da5cb5b1461026e57806395d89b411461028c57600080fd5b80632e1a7d4d1161010957806339509351116100ee57806339509351146101c5578063445a6797146101d857806362f629e7146101eb57600080fd5b80632e1a7d4d146101a1578063313ce567146101b657600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b610143610326565b60405161015091906113ab565b60405180910390f35b61016c61016736600461136a565b6103b8565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c3660046112b1565b6103ce565b6101b46101af366004611393565b6104b9565b005b60405160128152602001610150565b61016c6101d336600461136a565b6104c6565b6101b46101e636600461125e565b61050f565b60065461020b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610150565b61018061023e36600461125e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101b461067a565b60055473ffffffffffffffffffffffffffffffffffffffff1661020b565b610143610707565b61016c6102a236600461136a565b610716565b61016c6102b536600461136a565b6107ee565b6101b46102c83660046112ec565b6107fb565b6101806102db36600461127f565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101b461032136600461125e565b610925565b6060600380546103359061144b565b80601f01602080910402602001604051908101604052809291908181526020018280546103619061144b565b80156103ae5780601f10610383576101008083540402835291602001916103ae565b820191906000526020600020905b81548152906001019060200180831161039157829003601f168201915b5050505050905090565b60006103c5338484610a52565b50600192915050565b60006103db848484610c06565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338452909152902054828110156104a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6104ae8533858403610a52565b506001949350505050565b6104c33382610eb9565b50565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103c591859061050a90869061141c565b610a52565b60055473ffffffffffffffffffffffffffffffffffffffff163314610590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610498565b73ffffffffffffffffffffffffffffffffffffffff8116610633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f426164204368696c64436861696e4d616e6167657250726f787920616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610498565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff1633146106fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610498565b610705600061109e565b565b6060600480546103359061144b565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156107d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610498565b6107e43385858403610a52565b5060019392505050565b60006103c5338484610c06565b60065473ffffffffffffffffffffffffffffffffffffffff16331461087c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6e6f7420616c6c6f77656420746f206465706f736974000000000000000000006044820152606401610498565b600061088a82840184611393565b90506b033b2e3c9fd0803ce8000000816108a360025490565b6108ad919061141c565b1115610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6d6178537570706c7920657863656564656400000000000000000000000000006044820152606401610498565b61091f8482611115565b50505050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610498565b73ffffffffffffffffffffffffffffffffffffffff8116610a49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610498565b6104c38161109e565b73ffffffffffffffffffffffffffffffffffffffff8316610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610498565b73ffffffffffffffffffffffffffffffffffffffff8216610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610498565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610ca9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610498565b73ffffffffffffffffffffffffffffffffffffffff8216610d4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610498565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610498565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610e4690849061141c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eac91815260200190565b60405180910390a361091f565b73ffffffffffffffffffffffffffffffffffffffff8216610f5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610498565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015611012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610498565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040812083830390556002805484929061104e908490611434565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610bf9565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff8216611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610498565b80600260008282546111a4919061141c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040812080548392906111de90849061141c565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125957600080fd5b919050565b60006020828403121561126f578081fd5b61127882611235565b9392505050565b60008060408385031215611291578081fd5b61129a83611235565b91506112a860208401611235565b90509250929050565b6000806000606084860312156112c5578081fd5b6112ce84611235565b92506112dc60208501611235565b9150604084013590509250925092565b600080600060408486031215611300578283fd5b61130984611235565b9250602084013567ffffffffffffffff80821115611325578384fd5b818601915086601f830112611338578384fd5b813581811115611346578485fd5b876020828501011115611357578485fd5b6020830194508093505050509250925092565b6000806040838503121561137c578182fd5b61138583611235565b946020939093013593505050565b6000602082840312156113a4578081fd5b5035919050565b6000602080835283518082850152825b818110156113d7578581018301518582016040015282016113bb565b818111156113e85783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000821982111561142f5761142f61149f565b500190565b6000828210156114465761144661149f565b500390565b600181811c9082168061145f57607f821691505b60208210811415611499577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220640e9cc9b5773c1de49bb0ab6584449626d7a1f916b4bf7797707b3082bc8b8664736f6c63430008040033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa00000000000000000000000000000000000000000000000000000000000000094f70656e4f6365616e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034f4f450000000000000000000000000000000000000000000000000000000000

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa00000000000000000000000000000000000000000000000000000000000000094f70656e4f6365616e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034f4f450000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): OpenOcean
Arg [1] : symbol (string): OOE
Arg [2] : _childChainManagerProxy (address): 0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 000000000000000000000000a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [4] : 4f70656e4f6365616e0000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [6] : 4f4f450000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

24953:1382:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8273:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10440:169;;;;;;:::i;:::-;;:::i;:::-;;;2614:14:1;;2607:22;2589:41;;2577:2;2562:18;10440:169:0;2544:92:1;9393:108:0;9481:12;;9393:108;;;9328:25:1;;;9316:2;9301:18;9393:108:0;9283:76:1;11091:492:0;;;;;;:::i;:::-;;:::i;26245:87::-;;;;;;:::i;:::-;;:::i;:::-;;9235:93;;;9318:2;9506:36:1;;9494:2;9479:18;9235:93:0;9461:87:1;11992:215:0;;;;;;:::i;:::-;;:::i;25552:253::-;;;;;;:::i;:::-;;:::i;25112:37::-;;;;;;;;;;;;2394:42:1;2382:55;;;2364:74;;2352:2;2337:18;25112:37:0;2319:125:1;9564:127:0;;;;;;:::i;:::-;9665:18;;9638:7;9665:18;;;;;;;;;;;;9564:127;2376:94;;;:::i;1725:87::-;1798:6;;;;1725:87;;8492:104;;;:::i;12710:413::-;;;;;;:::i;:::-;;:::i;9904:175::-;;;;;;:::i;:::-;;:::i;25813:424::-;;;;;;:::i;:::-;;:::i;10142:151::-;;;;;;:::i;:::-;10258:18;;;;10231:7;10258:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10142:151;2625:192;;;;;;:::i;:::-;;:::i;8273:100::-;8327:13;8360:5;8353:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8273:100;:::o;10440:169::-;10523:4;10540:39;681:10;10563:7;10572:6;10540:8;:39::i;:::-;-1:-1:-1;10597:4:0;10440:169;;;;:::o;11091:492::-;11231:4;11248:36;11258:6;11266:9;11277:6;11248:9;:36::i;:::-;11324:19;;;11297:24;11324:19;;;:11;:19;;;;;;;;681:10;11324:33;;;;;;;;11376:26;;;;11368:79;;;;;;;6284:2:1;11368:79:0;;;6266:21:1;6323:2;6303:18;;;6296:30;6362:34;6342:18;;;6335:62;6433:10;6413:18;;;6406:38;6461:19;;11368:79:0;;;;;;;;;11483:57;11492:6;681:10;11533:6;11514:16;:25;11483:8;:57::i;:::-;-1:-1:-1;11571:4:0;;11091:492;-1:-1:-1;;;;11091:492:0:o;26245:87::-;26299:25;26305:10;26317:6;26299:5;:25::i;:::-;26245:87;:::o;11992:215::-;681:10;12080:4;12129:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;12080:4;;12097:80;;12120:7;;12129:47;;12166:10;;12129:47;:::i;:::-;12097:8;:80::i;25552:253::-;1798:6;;1945:23;1798:6;681:10;1945:23;1937:68;;;;;;;7044:2:1;1937:68:0;;;7026:21:1;;;7063:18;;;7056:30;7122:34;7102:18;;;7095:62;7174:18;;1937:68:0;7016:182:1;1937:68:0;25658:39:::1;::::0;::::1;25650:86;;;::::0;::::1;::::0;;4317:2:1;25650:86:0::1;::::0;::::1;4299:21:1::0;4356:2;4336:18;;;4329:30;4395:34;4375:18;;;4368:62;4466:4;4446:18;;;4439:32;4488:19;;25650:86:0::1;4289:224:1::0;25650:86:0::1;25747:22;:50:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;25552:253::o;2376:94::-;1798:6;;1945:23;1798:6;681:10;1945:23;1937:68;;;;;;;7044:2:1;1937:68:0;;;7026:21:1;;;7063:18;;;7056:30;7122:34;7102:18;;;7095:62;7174:18;;1937:68:0;7016:182:1;1937:68:0;2441:21:::1;2459:1;2441:9;:21::i;:::-;2376:94::o:0;8492:104::-;8548:13;8581:7;8574:14;;;;;:::i;12710:413::-;681:10;12803:4;12847:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;12900:35;;;;12892:85;;;;;;;8618:2:1;12892:85:0;;;8600:21:1;8657:2;8637:18;;;8630:30;8696:34;8676:18;;;8669:62;8767:7;8747:18;;;8740:35;8792:19;;12892:85:0;8590:227:1;12892:85:0;13013:67;681:10;13036:7;13064:15;13045:16;:34;13013:8;:67::i;:::-;-1:-1:-1;13111:4:0;;12710:413;-1:-1:-1;;;12710:413:0:o;9904:175::-;9990:4;10007:42;681:10;10031:9;10042:6;10007:9;:42::i;25813:424::-;25914:22;;;;25900:10;:36;25892:71;;;;;;;6693:2:1;25892:71:0;;;6675:21:1;6732:2;6712:18;;;6705:30;6771:24;6751:18;;;6744:52;6813:18;;25892:71:0;6665:172:1;25892:71:0;25976:14;25993:34;;;;26004:11;25993:34;:::i;:::-;25976:51;;25182:22;26062:6;26046:13;9481:12;;;9393:108;26046:13;:22;;;;:::i;:::-;:35;;26038:66;;;;;;;5937:2:1;26038:66:0;;;5919:21:1;5976:2;5956:18;;;5949:30;6015:20;5995:18;;;5988:48;6053:18;;26038:66:0;5909:168:1;26038:66:0;26210:19;26216:4;26222:6;26210:5;:19::i;:::-;25813:424;;;;:::o;2625:192::-;1798:6;;1945:23;1798:6;681:10;1945:23;1937:68;;;;;;;7044:2:1;1937:68:0;;;7026:21:1;;;7063:18;;;7056:30;7122:34;7102:18;;;7095:62;7174:18;;1937:68:0;7016:182:1;1937:68:0;2714:22:::1;::::0;::::1;2706:73;;;::::0;::::1;::::0;;4720:2:1;2706:73:0::1;::::0;::::1;4702:21:1::0;4759:2;4739:18;;;4732:30;4798:34;4778:18;;;4771:62;4869:8;4849:18;;;4842:36;4895:19;;2706:73:0::1;4692:228:1::0;2706:73:0::1;2790:19;2800:8;2790:9;:19::i;16394:380::-:0;16530:19;;;16522:68;;;;;;;8213:2:1;16522:68:0;;;8195:21:1;8252:2;8232:18;;;8225:30;8291:34;8271:18;;;8264:62;8362:6;8342:18;;;8335:34;8386:19;;16522:68:0;8185:226:1;16522:68:0;16609:21;;;16601:68;;;;;;;5127:2:1;16601:68:0;;;5109:21:1;5166:2;5146:18;;;5139:30;5205:34;5185:18;;;5178:62;5276:4;5256:18;;;5249:32;5298:19;;16601:68:0;5099:224:1;16601:68:0;16682:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16734:32;;9328:25:1;;;16734:32:0;;9301:18:1;16734:32:0;;;;;;;;16394:380;;;:::o;13613:733::-;13753:20;;;13745:70;;;;;;;7807:2:1;13745:70:0;;;7789:21:1;7846:2;7826:18;;;7819:30;7885:34;7865:18;;;7858:62;7956:7;7936:18;;;7929:35;7981:19;;13745:70:0;7779:227:1;13745:70:0;13834:23;;;13826:71;;;;;;;3510:2:1;13826:71:0;;;3492:21:1;3549:2;3529:18;;;3522:30;3588:34;3568:18;;;3561:62;3659:5;3639:18;;;3632:33;3682:19;;13826:71:0;3482:225:1;13826:71:0;13994:17;;;13970:21;13994:17;;;;;;;;;;;14030:23;;;;14022:74;;;;;;;5530:2:1;14022:74:0;;;5512:21:1;5569:2;5549:18;;;5542:30;5608:34;5588:18;;;5581:62;5679:8;5659:18;;;5652:36;5705:19;;14022:74:0;5502:228:1;14022:74:0;14132:17;;;;:9;:17;;;;;;;;;;;14152:22;;;14132:42;;14196:20;;;;;;;;:30;;14168:6;;14132:9;14196:30;;14168:6;;14196:30;:::i;:::-;;;;;;;;14261:9;14244:35;;14253:6;14244:35;;;14272:6;14244:35;;;;9328:25:1;;9316:2;9301:18;;9283:76;14244:35:0;;;;;;;;14292:46;15365:591;;15449:21;;;15441:67;;;;;;;7405:2:1;15441:67:0;;;7387:21:1;7444:2;7424:18;;;7417:30;7483:34;7463:18;;;7456:62;7554:3;7534:18;;;7527:31;7575:19;;15441:67:0;7377:223:1;15441:67:0;15608:18;;;15583:22;15608:18;;;;;;;;;;;15645:24;;;;15637:71;;;;;;;3914:2:1;15637:71:0;;;3896:21:1;3953:2;3933:18;;;3926:30;3992:34;3972:18;;;3965:62;4063:4;4043:18;;;4036:32;4085:19;;15637:71:0;3886:224:1;15637:71:0;15744:18;;;:9;:18;;;;;;;;;;15765:23;;;15744:44;;15810:12;:22;;15782:6;;15744:9;15810:22;;15782:6;;15810:22;:::i;:::-;;;;-1:-1:-1;;15850:37:0;;9328:25:1;;;15876:1:0;;15850:37;;;;;;9316:2:1;9301:18;15850:37:0;9283:76:1;2825:173:0;2900:6;;;;2917:17;;;;;;;;;;;2950:40;;2900:6;;;2917:17;2900:6;;2950:40;;2881:16;;2950:40;2825:173;;:::o;14633:399::-;14717:21;;;14709:65;;;;;;;9024:2:1;14709:65:0;;;9006:21:1;9063:2;9043:18;;;9036:30;9102:33;9082:18;;;9075:61;9153:18;;14709:65:0;8996:181:1;14709:65:0;14865:6;14849:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;14882:18:0;;;:9;:18;;;;;;;;;;:28;;14904:6;;14882:9;:28;;14904:6;;14882:28;:::i;:::-;;;;-1:-1:-1;;14926:37:0;;9328:25:1;;;14926:37:0;;;;14943:1;;14926:37;;9316:2:1;9301:18;14926:37:0;;;;;;;14633:399;;:::o;14:196:1:-;82:20;;142:42;131:54;;121:65;;111:2;;200:1;197;190:12;111:2;63:147;;;:::o;215:196::-;274:6;327:2;315:9;306:7;302:23;298:32;295:2;;;348:6;340;333:22;295:2;376:29;395:9;376:29;:::i;:::-;366:39;285:126;-1:-1:-1;;;285:126:1:o;416:270::-;484:6;492;545:2;533:9;524:7;520:23;516:32;513:2;;;566:6;558;551:22;513:2;594:29;613:9;594:29;:::i;:::-;584:39;;642:38;676:2;665:9;661:18;642:38;:::i;:::-;632:48;;503:183;;;;;:::o;691:338::-;768:6;776;784;837:2;825:9;816:7;812:23;808:32;805:2;;;858:6;850;843:22;805:2;886:29;905:9;886:29;:::i;:::-;876:39;;934:38;968:2;957:9;953:18;934:38;:::i;:::-;924:48;;1019:2;1008:9;1004:18;991:32;981:42;;795:234;;;;;:::o;1034:715::-;1113:6;1121;1129;1182:2;1170:9;1161:7;1157:23;1153:32;1150:2;;;1203:6;1195;1188:22;1150:2;1231:29;1250:9;1231:29;:::i;:::-;1221:39;;1311:2;1300:9;1296:18;1283:32;1334:18;1375:2;1367:6;1364:14;1361:2;;;1396:6;1388;1381:22;1361:2;1439:6;1428:9;1424:22;1414:32;;1484:7;1477:4;1473:2;1469:13;1465:27;1455:2;;1511:6;1503;1496:22;1455:2;1556;1543:16;1582:2;1574:6;1571:14;1568:2;;;1603:6;1595;1588:22;1568:2;1653:7;1648:2;1639:6;1635:2;1631:15;1627:24;1624:37;1621:2;;;1679:6;1671;1664:22;1621:2;1715;1711;1707:11;1697:21;;1737:6;1727:16;;;;;1140:609;;;;;:::o;1754:264::-;1822:6;1830;1883:2;1871:9;1862:7;1858:23;1854:32;1851:2;;;1904:6;1896;1889:22;1851:2;1932:29;1951:9;1932:29;:::i;:::-;1922:39;2008:2;1993:18;;;;1980:32;;-1:-1:-1;;;1841:177:1:o;2023:190::-;2082:6;2135:2;2123:9;2114:7;2110:23;2106:32;2103:2;;;2156:6;2148;2141:22;2103:2;-1:-1:-1;2184:23:1;;2093:120;-1:-1:-1;2093:120:1:o;2641:662::-;2753:4;2782:2;2811;2800:9;2793:21;2843:6;2837:13;2886:6;2881:2;2870:9;2866:18;2859:34;2911:4;2924:140;2938:6;2935:1;2932:13;2924:140;;;3033:14;;;3029:23;;3023:30;2999:17;;;3018:2;2995:26;2988:66;2953:10;;2924:140;;;3082:6;3079:1;3076:13;3073:2;;;3152:4;3147:2;3138:6;3127:9;3123:22;3119:31;3112:45;3073:2;-1:-1:-1;3219:2:1;3207:15;3224:66;3203:88;3188:104;;;;3294:2;3184:113;;2762:541;-1:-1:-1;;;2762:541:1:o;9553:128::-;9593:3;9624:1;9620:6;9617:1;9614:13;9611:2;;;9630:18;;:::i;:::-;-1:-1:-1;9666:9:1;;9601:80::o;9686:125::-;9726:4;9754:1;9751;9748:8;9745:2;;;9759:18;;:::i;:::-;-1:-1:-1;9796:9:1;;9735:76::o;9816:437::-;9895:1;9891:12;;;;9938;;;9959:2;;10013:4;10005:6;10001:17;9991:27;;9959:2;10066;10058:6;10055:14;10035:18;10032:38;10029:2;;;10103:77;10100:1;10093:88;10204:4;10201:1;10194:15;10232:4;10229:1;10222:15;10029:2;;9871:382;;;:::o;10258:184::-;10310:77;10307:1;10300:88;10407:4;10404:1;10397:15;10431:4;10428:1;10421:15

Swarm Source

ipfs://640e9cc9b5773c1de49bb0ab6584449626d7a1f916b4bf7797707b3082bc8b86
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.