AVAX Price: $22.78 (+10.45%)
Gas: 1 nAVAX
 

Overview

AVAX Balance

Avalanche C-Chain LogoAvalanche C-Chain LogoAvalanche C-Chain Logo0 AVAX

AVAX Value

$0.00

Token Holdings

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Convert360293212023-10-04 17:26:58566 days ago1696440418IN
0x861726BF...432b65856
0 AVAX0.0116876326.5
Convert301013102023-05-16 16:56:39707 days ago1684256199IN
0x861726BF...432b65856
0 AVAX0.009946525
Convert301009362023-05-16 16:44:01707 days ago1684255441IN
0x861726BF...432b65856
0 AVAX0.010002425
Convert301007932023-05-16 16:39:15707 days ago1684255155IN
0x861726BF...432b65856
0 AVAX0.01155525
Convert301007412023-05-16 16:37:29707 days ago1684255049IN
0x861726BF...432b65856
0 AVAX0.0140818225
Convert301002732023-05-16 16:21:37707 days ago1684254097IN
0x861726BF...432b65856
0 AVAX0.0156579725
Convert300950782023-05-16 13:24:12707 days ago1684243452IN
0x861726BF...432b65856
0 AVAX0.0110845225
Convert160122452022-06-14 7:37:201044 days ago1655192240IN
0x861726BF...432b65856
0 AVAX0.0075912726
Convert160040132022-06-14 3:10:441044 days ago1655176244IN
0x861726BF...432b65856
0 AVAX0.0077637926.9744742
Convert Multiple78521532021-12-05 19:46:481234 days ago1638733608IN
0x861726BF...432b65856
0 AVAX0.0435649525
Convert Multiple78521452021-12-05 19:46:351234 days ago1638733595IN
0x861726BF...432b65856
0 AVAX0.1673274525
Convert Multiple78484232021-12-05 17:41:391234 days ago1638726099IN
0x861726BF...432b65856
0 AVAX0.0533830225
Convert68665622021-11-12 21:24:011257 days ago1636752241IN
0x861726BF...432b65856
0 AVAX0.0107875525
Convert68286172021-11-11 23:58:381258 days ago1636675118IN
0x861726BF...432b65856
0 AVAX0.0111340725
Convert68286152021-11-11 23:58:331258 days ago1636675113IN
0x861726BF...432b65856
0 AVAX0.0074665525
Convert68286112021-11-11 23:58:261258 days ago1636675106IN
0x861726BF...432b65856
0 AVAX0.0108587225
Convert68286102021-11-11 23:58:211258 days ago1636675101IN
0x861726BF...432b65856
0 AVAX0.0077284725
Convert68286072021-11-11 23:58:151258 days ago1636675095IN
0x861726BF...432b65856
0 AVAX0.0080019225
Convert68286042021-11-11 23:58:091258 days ago1636675089IN
0x861726BF...432b65856
0 AVAX0.0067840225
Convert68237232021-11-11 21:12:141258 days ago1636665134IN
0x861726BF...432b65856
0 AVAX0.0077425225
Convert68237182021-11-11 21:12:051258 days ago1636665125IN
0x861726BF...432b65856
0 AVAX0.0078376725
Convert68237152021-11-11 21:11:571258 days ago1636665117IN
0x861726BF...432b65856
0 AVAX0.010954225
Convert68237102021-11-11 21:11:511258 days ago1636665111IN
0x861726BF...432b65856
0 AVAX0.0105088225
Convert68237072021-11-11 21:11:441258 days ago1636665104IN
0x861726BF...432b65856
0 AVAX0.0067541725
Convert68237042021-11-11 21:11:381258 days ago1636665098IN
0x861726BF...432b65856
0 AVAX0.0111646525
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
JoeMaker

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowscan.xyz on 2021-11-06
*/

// File: contracts/libraries/SafeMath.sol

// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        require((c = a + b) >= b, "SafeMath: Add Overflow");
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {
        require((c = a - b) <= a, "SafeMath: Underflow");
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        require(b == 0 || (c = a * b) / b == a, "SafeMath: Mul Overflow");
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256 c) {
        require(b > 0, "SafeMath: Div by Zero");
        c = a / b;
    }

    function to128(uint256 a) internal pure returns (uint128 c) {
        require(a <= uint128(-1), "SafeMath: uint128 Overflow");
        c = uint128(a);
    }
}

library SafeMath128 {
    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {
        require((c = a + b) >= b, "SafeMath: Add Overflow");
    }

    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {
        require((c = a - b) <= a, "SafeMath: Underflow");
    }
}

// File: contracts/interfaces/IERC20.sol

pragma solidity 0.6.12;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    // EIP 2612
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;
}

// File: contracts/libraries/SafeERC20.sol

pragma solidity 0.6.12;


library SafeERC20 {
    function safeSymbol(IERC20 token) internal view returns (string memory) {
        (bool success, bytes memory data) = address(token).staticcall(
            abi.encodeWithSelector(0x95d89b41)
        );
        return success && data.length > 0 ? abi.decode(data, (string)) : "???";
    }

    function safeName(IERC20 token) internal view returns (string memory) {
        (bool success, bytes memory data) = address(token).staticcall(
            abi.encodeWithSelector(0x06fdde03)
        );
        return success && data.length > 0 ? abi.decode(data, (string)) : "???";
    }

    function safeDecimals(IERC20 token) public view returns (uint8) {
        (bool success, bytes memory data) = address(token).staticcall(
            abi.encodeWithSelector(0x313ce567)
        );
        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;
    }

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 amount
    ) internal {
        (bool success, bytes memory data) = address(token).call(
            abi.encodeWithSelector(0xa9059cbb, to, amount)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "SafeERC20: Transfer failed"
        );
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        uint256 amount
    ) internal {
        (bool success, bytes memory data) = address(token).call(
            abi.encodeWithSelector(0x23b872dd, from, address(this), amount)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "SafeERC20: TransferFrom failed"
        );
    }
}

// File: contracts/traderjoe/interfaces/IJoeERC20.sol


pragma solidity >=0.5.0;

interface IJoeERC20 {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;
}

// File: contracts/traderjoe/interfaces/IJoePair.sol


pragma solidity >=0.5.0;

interface IJoePair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

// File: contracts/traderjoe/interfaces/IJoeFactory.sol


pragma solidity >=0.5.0;

interface IJoeFactory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function migrator() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;

    function setMigrator(address) external;
}

// File: contracts/boringcrypto/BoringOwnable.sol

pragma solidity 0.6.12;

// Audit on 5-Jan-2021 by Keno and BoringCrypto
// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol
// Edited by BoringCrypto

contract BoringOwnableData {
    address public owner;
    address public pendingOwner;
}

contract BoringOwnable is BoringOwnableData {
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /// @notice `owner` defaults to msg.sender on construction.
    constructor() public {
        owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    /// @notice Transfers ownership to `newOwner`. Either directly or claimable by the new pending owner.
    /// Can only be invoked by the current `owner`.
    /// @param newOwner Address of the new owner.
    /// @param direct True if `newOwner` should be set immediately. False if `newOwner` needs to use `claimOwnership`.
    /// @param renounce Allows the `newOwner` to be `address(0)` if `direct` and `renounce` is True. Has no effect otherwise.
    function transferOwnership(
        address newOwner,
        bool direct,
        bool renounce
    ) public onlyOwner {
        if (direct) {
            // Checks
            require(
                newOwner != address(0) || renounce,
                "Ownable: zero address"
            );

            // Effects
            emit OwnershipTransferred(owner, newOwner);
            owner = newOwner;
            pendingOwner = address(0);
        } else {
            // Effects
            pendingOwner = newOwner;
        }
    }

    /// @notice Needs to be called by `pendingOwner` to claim ownership.
    function claimOwnership() public {
        address _pendingOwner = pendingOwner;

        // Checks
        require(
            msg.sender == _pendingOwner,
            "Ownable: caller != pending owner"
        );

        // Effects
        emit OwnershipTransferred(owner, _pendingOwner);
        owner = _pendingOwner;
        pendingOwner = address(0);
    }

    /// @notice Only allows the `owner` to execute the function.
    modifier onlyOwner() {
        require(msg.sender == owner, "Ownable: caller is not the owner");
        _;
    }
}

// File: contracts/JoeMaker.sol


// P1 - P3: OK
pragma solidity 0.6.12;







// JoeMaker is MasterJoe's left hand and kinda a wizard. He can cook up Joe from pretty much anything!
// This contract handles "serving up" rewards for xJoe holders by trading tokens collected from fees for Joe.

// T1 - T4: OK
contract JoeMaker is BoringOwnable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    // V1 - V5: OK
    IJoeFactory public immutable factory;
    //0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac
    // V1 - V5: OK
    address public immutable bar;
    //0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272
    // V1 - V5: OK
    address private immutable joe;
    //0x6B3595068778DD592e39A122f4f5a5cF09C90fE2
    // V1 - V5: OK
    address private immutable wavax;
    //0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

    // V1 - V5: OK
    mapping(address => address) internal _bridges;

    // E1: OK
    event LogBridgeSet(address indexed token, address indexed bridge);
    // E1: OK
    event LogConvert(
        address indexed server,
        address indexed token0,
        address indexed token1,
        uint256 amount0,
        uint256 amount1,
        uint256 amountJOE
    );

    constructor(
        address _factory,
        address _bar,
        address _joe,
        address _wavax
    ) public {
        factory = IJoeFactory(_factory);
        bar = _bar;
        joe = _joe;
        wavax = _wavax;
    }

    // F1 - F10: OK
    // C1 - C24: OK
    function bridgeFor(address token) public view returns (address bridge) {
        bridge = _bridges[token];
        if (bridge == address(0)) {
            bridge = wavax;
        }
    }

    // F1 - F10: OK
    // C1 - C24: OK
    function setBridge(address token, address bridge) external onlyOwner {
        // Checks
        require(
            token != joe && token != wavax && token != bridge,
            "JoeMaker: Invalid bridge"
        );

        // Effects
        _bridges[token] = bridge;
        emit LogBridgeSet(token, bridge);
    }

    // M1 - M5: OK
    // C1 - C24: OK
    // C6: It's not a fool proof solution, but it prevents flash loans, so here it's ok to use tx.origin
    modifier onlyEOA() {
        // Try to make flash-loan exploit harder to do by only allowing externally owned addresses.
        require(msg.sender == tx.origin, "JoeMaker: must use EOA");
        _;
    }

    // F1 - F10: OK
    // F3: _convert is separate to save gas by only checking the 'onlyEOA' modifier once in case of convertMultiple
    // F6: There is an exploit to add lots of JOE to the bar, run convert, then remove the JOE again.
    //     As the size of the JoeBar has grown, this requires large amounts of funds and isn't super profitable anymore
    //     The onlyEOA modifier prevents this being done with a flash loan.
    // C1 - C24: OK
    function convert(address token0, address token1) external onlyEOA() {
        _convert(token0, token1);
    }

    // F1 - F10: OK, see convert
    // C1 - C24: OK
    // C3: Loop is under control of the caller
    function convertMultiple(
        address[] calldata token0,
        address[] calldata token1
    ) external onlyEOA() {
        // TODO: This can be optimized a fair bit, but this is safer and simpler for now
        uint256 len = token0.length;
        for (uint256 i = 0; i < len; i++) {
            _convert(token0[i], token1[i]);
        }
    }

    // F1 - F10: OK
    // C1- C24: OK
    function _convert(address token0, address token1) internal {
        // Interactions
        // S1 - S4: OK
        IJoePair pair = IJoePair(factory.getPair(token0, token1));
        require(address(pair) != address(0), "JoeMaker: Invalid pair");
        // balanceOf: S1 - S4: OK
        // transfer: X1 - X5: OK
        IERC20(address(pair)).safeTransfer(
            address(pair),
            pair.balanceOf(address(this))
        );
        // X1 - X5: OK
        (uint256 amount0, uint256 amount1) = pair.burn(address(this));
        if (token0 != pair.token0()) {
            (amount0, amount1) = (amount1, amount0);
        }
        emit LogConvert(
            msg.sender,
            token0,
            token1,
            amount0,
            amount1,
            _convertStep(token0, token1, amount0, amount1)
        );
    }

    // F1 - F10: OK
    // C1 - C24: OK
    // All safeTransfer, _swap, _toJOE, _convertStep: X1 - X5: OK
    function _convertStep(
        address token0,
        address token1,
        uint256 amount0,
        uint256 amount1
    ) internal returns (uint256 joeOut) {
        // Interactions
        if (token0 == token1) {
            uint256 amount = amount0.add(amount1);
            if (token0 == joe) {
                IERC20(joe).safeTransfer(bar, amount);
                joeOut = amount;
            } else if (token0 == wavax) {
                joeOut = _toJOE(wavax, amount);
            } else {
                address bridge = bridgeFor(token0);
                amount = _swap(token0, bridge, amount, address(this));
                joeOut = _convertStep(bridge, bridge, amount, 0);
            }
        } else if (token0 == joe) {
            // eg. JOE - AVAX
            IERC20(joe).safeTransfer(bar, amount0);
            joeOut = _toJOE(token1, amount1).add(amount0);
        } else if (token1 == joe) {
            // eg. USDT - JOE
            IERC20(joe).safeTransfer(bar, amount1);
            joeOut = _toJOE(token0, amount0).add(amount1);
        } else if (token0 == wavax) {
            // eg. AVAX - USDC
            joeOut = _toJOE(
                wavax,
                _swap(token1, wavax, amount1, address(this)).add(amount0)
            );
        } else if (token1 == wavax) {
            // eg. USDT - AVAX
            joeOut = _toJOE(
                wavax,
                _swap(token0, wavax, amount0, address(this)).add(amount1)
            );
        } else {
            // eg. MIC - USDT
            address bridge0 = bridgeFor(token0);
            address bridge1 = bridgeFor(token1);
            if (bridge0 == token1) {
                // eg. MIC - USDT - and bridgeFor(MIC) = USDT
                joeOut = _convertStep(
                    bridge0,
                    token1,
                    _swap(token0, bridge0, amount0, address(this)),
                    amount1
                );
            } else if (bridge1 == token0) {
                // eg. WBTC - DSD - and bridgeFor(DSD) = WBTC
                joeOut = _convertStep(
                    token0,
                    bridge1,
                    amount0,
                    _swap(token1, bridge1, amount1, address(this))
                );
            } else {
                joeOut = _convertStep(
                    bridge0,
                    bridge1, // eg. USDT - DSD - and bridgeFor(DSD) = WBTC
                    _swap(token0, bridge0, amount0, address(this)),
                    _swap(token1, bridge1, amount1, address(this))
                );
            }
        }
    }

    // F1 - F10: OK
    // C1 - C24: OK
    // All safeTransfer, swap: X1 - X5: OK
    function _swap(
        address fromToken,
        address toToken,
        uint256 amountIn,
        address to
    ) internal returns (uint256 amountOut) {
        // Checks
        // X1 - X5: OK
        IJoePair pair = IJoePair(factory.getPair(fromToken, toToken));
        require(address(pair) != address(0), "JoeMaker: Cannot convert");

        // Interactions
        // X1 - X5: OK
        (uint256 reserve0, uint256 reserve1, ) = pair.getReserves();
        uint256 amountInWithFee = amountIn.mul(997);
        if (fromToken == pair.token0()) {
            amountOut =
                amountIn.mul(997).mul(reserve1) /
                reserve0.mul(1000).add(amountInWithFee);
            IERC20(fromToken).safeTransfer(address(pair), amountIn);
            pair.swap(0, amountOut, to, new bytes(0));
            // TODO: Add maximum slippage?
        } else {
            amountOut =
                amountIn.mul(997).mul(reserve0) /
                reserve1.mul(1000).add(amountInWithFee);
            IERC20(fromToken).safeTransfer(address(pair), amountIn);
            pair.swap(amountOut, 0, to, new bytes(0));
            // TODO: Add maximum slippage?
        }
    }

    // F1 - F10: OK
    // C1 - C24: OK
    function _toJOE(address token, uint256 amountIn)
        internal
        returns (uint256 amountOut)
    {
        // X1 - X5: OK
        amountOut = _swap(token, joe, amountIn, bar);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_bar","type":"address"},{"internalType":"address","name":"_joe","type":"address"},{"internalType":"address","name":"_wavax","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"bridge","type":"address"}],"name":"LogBridgeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"server","type":"address"},{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountJOE","type":"uint256"}],"name":"LogConvert","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"},{"inputs":[],"name":"bar","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"bridgeFor","outputs":[{"internalType":"address","name":"bridge","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"name":"convert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"token0","type":"address[]"},{"internalType":"address[]","name":"token1","type":"address[]"}],"name":"convertMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IJoeFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"bridge","type":"address"}],"name":"setBridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"bool","name":"direct","type":"bool"},{"internalType":"bool","name":"renounce","type":"bool"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

61010060405234801561001157600080fd5b506040516117b33803806117b38339818101604052608081101561003457600080fd5b5080516020820151604080840151606090940151600080546001600160a01b0319163390811782559251949593949192917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160601b0319606094851b811660805292841b831660a05290831b821660c05290911b1660e05260805160601c60a05160601c60c05160601c60e05160601c611650610163600039806105c352806106e15280610cdb5280610d185280610ebd5280610efa5280610f235280610f505280610f8d5280610fb65250806105865280610c455280610c8a5280610d785280610dbd5280610e215280610e6652806110e95250806107965280610cac5280610ddf5280610e88528061110b52508061076352806107bc528061113b52506116506000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a761a93911610066578063a761a939146101f7578063bd1b820c1461021d578063c45a01551461024b578063e30c397814610253578063febb0f7e1461025b5761009e565b8063078dfbe7146100a3578063303e6aa4146100db5780634e71e0c81461019d5780638da5cb5b146101a55780639d22ae8c146101c9575b600080fd5b6100d9600480360360608110156100b957600080fd5b506001600160a01b03813516906020810135151590604001351515610263565b005b6100d9600480360360408110156100f157600080fd5b81019060208101813564010000000081111561010c57600080fd5b82018360208201111561011e57600080fd5b8035906020019184602083028401116401000000008311171561014057600080fd5b91939092909160208101903564010000000081111561015e57600080fd5b82018360208201111561017057600080fd5b8035906020019184602083028401116401000000008311171561019257600080fd5b5090925090506103ab565b6100d9610454565b6101ad610516565b604080516001600160a01b039092168252519081900360200190f35b6100d9600480360360408110156101df57600080fd5b506001600160a01b0381358116916020013516610525565b6101ad6004803603602081101561020d57600080fd5b50356001600160a01b03166106be565b6100d96004803603604081101561023357600080fd5b506001600160a01b0381358116916020013516610706565b6101ad610761565b6101ad610785565b6101ad610794565b6000546001600160a01b031633146102c2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b811561038a576001600160a01b0383161515806102dc5750805b610325576040805162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b604482015290519081900360640190fd5b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b0319918216179091556001805490911690556103a6565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b3332146103f8576040805162461bcd60e51b81526020600482015260166024820152754a6f654d616b65723a206d7573742075736520454f4160501b604482015290519081900360640190fd5b8260005b8181101561044c5761044486868381811061041357fe5b905060200201356001600160a01b031685858481811061042f57fe5b905060200201356001600160a01b03166107b8565b6001016103fc565b505050505050565b6001546001600160a01b03163381146104b4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b031681565b6000546001600160a01b03163314610584576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141580156105f857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156106165750806001600160a01b0316826001600160a01b031614155b610667576040805162461bcd60e51b815260206004820152601860248201527f4a6f654d616b65723a20496e76616c6964206272696467650000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660008181526002602052604080822080546001600160a01b0319169486169485179055517f2e103aa707acc565f9a1547341914802b2bfe977fd79c595209f248ae4b006139190a35050565b6001600160a01b03808216600090815260026020526040902054168061070157507f00000000000000000000000000000000000000000000000000000000000000005b919050565b333214610753576040805162461bcd60e51b81526020600482015260166024820152754a6f654d616b65723a206d7573742075736520454f4160501b604482015290519081900360640190fd5b61075d82826107b8565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a4390584846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561083857600080fd5b505afa15801561084c573d6000803e3d6000fd5b505050506040513d602081101561086257600080fd5b505190506001600160a01b0381166108ba576040805162461bcd60e51b81526020600482015260166024820152752537b2a6b0b5b2b91d1024b73b30b634b2103830b4b960511b604482015290519081900360640190fd5b61094881826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561090b57600080fd5b505afa15801561091f573d6000803e3d6000fd5b505050506040513d602081101561093557600080fd5b50516001600160a01b0384169190610aaf565b600080826001600160a01b03166389afcb44306040518263ffffffff1660e01b815260040180826001600160a01b031681526020019150506040805180830381600087803b15801561099957600080fd5b505af11580156109ad573d6000803e3d6000fd5b505050506040513d60408110156109c357600080fd5b50805160209182015160408051630dfe168160e01b815290519295509093506001600160a01b03861692630dfe168192600480840193829003018186803b158015610a0d57600080fd5b505afa158015610a21573d6000803e3d6000fd5b505050506040513d6020811015610a3757600080fd5b50516001600160a01b03868116911614610a4d57905b6001600160a01b03808516908616337fd06b1d7ed79b664d17472c6f6997b929f1abe463ccccb4e5b6a0038f2f730c158585610a8b8b8b8484610c19565b60408051938452602084019290925282820152519081900360600190a45050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310610b2c5780518252601f199092019160209182019101610b0d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610b8e576040519150601f19603f3d011682016040523d82523d6000602084013e610b93565b606091505b5091509150818015610bc1575080511580610bc15750808060200190516020811015610bbe57600080fd5b50515b610c12576040805162461bcd60e51b815260206004820152601a60248201527f5361666545524332303a205472616e73666572206661696c6564000000000000604482015290519081900360640190fd5b5050505050565b6000836001600160a01b0316856001600160a01b03161415610d76576000610c41848461108a565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161415610cd957610cd16001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610aaf565b809150610d70565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161415610d4457610d3d7f0000000000000000000000000000000000000000000000000000000000000000826110e1565b9150610d70565b6000610d4f876106be565b9050610d5d87828430611136565b9150610d6c8182846000610c19565b9250505b50611082565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161415610e1f57610e046001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000085610aaf565b610e1883610e1286856110e1565b9061108a565b9050611082565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161415610ebb57610ead6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084610aaf565b610e1882610e1287866110e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161415610f4e57610e187f0000000000000000000000000000000000000000000000000000000000000000610f4985610e12887f00000000000000000000000000000000000000000000000000000000000000008830611136565b6110e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161415610fdc57610e187f0000000000000000000000000000000000000000000000000000000000000000610f4984610e12897f00000000000000000000000000000000000000000000000000000000000000008930611136565b6000610fe7866106be565b90506000610ff4866106be565b9050856001600160a01b0316826001600160a01b0316141561102e5761102782876110218a868a30611136565b87610c19565b925061107f565b866001600160a01b0316816001600160a01b0316141561105f5761102787828761105a8a868a30611136565b610c19565b61107c82826110708a868a30611136565b61105a8a868a30611136565b92505b50505b949350505050565b818101818110156110db576040805162461bcd60e51b8152602060048201526016602482015275536166654d6174683a20416464204f766572666c6f7760501b604482015290519081900360640190fd5b92915050565b600061112f837f0000000000000000000000000000000000000000000000000000000000000000847f0000000000000000000000000000000000000000000000000000000000000000611136565b9392505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a4390587876040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156111b757600080fd5b505afa1580156111cb573d6000803e3d6000fd5b505050506040513d60208110156111e157600080fd5b505190506001600160a01b038116611240576040805162461bcd60e51b815260206004820152601860248201527f4a6f654d616b65723a2043616e6e6f7420636f6e766572740000000000000000604482015290519081900360640190fd5b600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561127c57600080fd5b505afa158015611290573d6000803e3d6000fd5b505050506040513d60608110156112a657600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060006112d4876103e56115b5565b9050836001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561130f57600080fd5b505afa158015611323573d6000803e3d6000fd5b505050506040513d602081101561133957600080fd5b50516001600160a01b038a8116911614156114805761135e81610e12856103e86115b5565b6113748361136e8a6103e56115b5565b906115b5565b8161137b57fe5b0494506113926001600160a01b038a168589610aaf565b604080516000808252602082019283905263022c0d9f60e01b835260248201818152604483018990526001600160a01b038a81166064850152608060848501908152845160a48601819052918a169563022c0d9f958c948e9491939092909160c4850191908083838b5b838110156114145781810151838201526020016113fc565b50505050905090810190601f1680156114415780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561146357600080fd5b505af1158015611477573d6000803e3d6000fd5b505050506115a9565b61149081610e12846103e86115b5565b6114a08461136e8a6103e56115b5565b816114a757fe5b0494506114be6001600160a01b038a168589610aaf565b604080516000808252602082019283905263022c0d9f60e01b835260248201888152604483018290526001600160a01b038a81166064850152608060848501908152845160a48601819052918a169563022c0d9f958c95948e9491939092909160c4850191908083838a5b83811015611541578181015183820152602001611529565b50505050905090810190601f16801561156e5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561159057600080fd5b505af11580156115a4573d6000803e3d6000fd5b505050505b50505050949350505050565b60008115806115d0575050808202828282816115cd57fe5b04145b6110db576040805162461bcd60e51b8152602060048201526016602482015275536166654d6174683a204d756c204f766572666c6f7760501b604482015290519081900360640190fdfea2646970667358221220ee1b4d33d15996220d228513c8b6f2a0338fa62e83f6330f9a28795a38819de364736f6c634300060c00330000000000000000000000009ad6c38be94206ca50bb0d90783181662f0cfa1000000000000000000000000057319d41f71e81f3c65f2a47ca4e001ebafd4f330000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a761a93911610066578063a761a939146101f7578063bd1b820c1461021d578063c45a01551461024b578063e30c397814610253578063febb0f7e1461025b5761009e565b8063078dfbe7146100a3578063303e6aa4146100db5780634e71e0c81461019d5780638da5cb5b146101a55780639d22ae8c146101c9575b600080fd5b6100d9600480360360608110156100b957600080fd5b506001600160a01b03813516906020810135151590604001351515610263565b005b6100d9600480360360408110156100f157600080fd5b81019060208101813564010000000081111561010c57600080fd5b82018360208201111561011e57600080fd5b8035906020019184602083028401116401000000008311171561014057600080fd5b91939092909160208101903564010000000081111561015e57600080fd5b82018360208201111561017057600080fd5b8035906020019184602083028401116401000000008311171561019257600080fd5b5090925090506103ab565b6100d9610454565b6101ad610516565b604080516001600160a01b039092168252519081900360200190f35b6100d9600480360360408110156101df57600080fd5b506001600160a01b0381358116916020013516610525565b6101ad6004803603602081101561020d57600080fd5b50356001600160a01b03166106be565b6100d96004803603604081101561023357600080fd5b506001600160a01b0381358116916020013516610706565b6101ad610761565b6101ad610785565b6101ad610794565b6000546001600160a01b031633146102c2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b811561038a576001600160a01b0383161515806102dc5750805b610325576040805162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b604482015290519081900360640190fd5b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b0319918216179091556001805490911690556103a6565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b3332146103f8576040805162461bcd60e51b81526020600482015260166024820152754a6f654d616b65723a206d7573742075736520454f4160501b604482015290519081900360640190fd5b8260005b8181101561044c5761044486868381811061041357fe5b905060200201356001600160a01b031685858481811061042f57fe5b905060200201356001600160a01b03166107b8565b6001016103fc565b505050505050565b6001546001600160a01b03163381146104b4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b031681565b6000546001600160a01b03163314610584576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b7f0000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd6001600160a01b0316826001600160a01b0316141580156105f857507f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b0316826001600160a01b031614155b80156106165750806001600160a01b0316826001600160a01b031614155b610667576040805162461bcd60e51b815260206004820152601860248201527f4a6f654d616b65723a20496e76616c6964206272696467650000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660008181526002602052604080822080546001600160a01b0319169486169485179055517f2e103aa707acc565f9a1547341914802b2bfe977fd79c595209f248ae4b006139190a35050565b6001600160a01b03808216600090815260026020526040902054168061070157507f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c75b919050565b333214610753576040805162461bcd60e51b81526020600482015260166024820152754a6f654d616b65723a206d7573742075736520454f4160501b604482015290519081900360640190fd5b61075d82826107b8565b5050565b7f0000000000000000000000009ad6c38be94206ca50bb0d90783181662f0cfa1081565b6001546001600160a01b031681565b7f00000000000000000000000057319d41f71e81f3c65f2a47ca4e001ebafd4f3381565b60007f0000000000000000000000009ad6c38be94206ca50bb0d90783181662f0cfa106001600160a01b031663e6a4390584846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561083857600080fd5b505afa15801561084c573d6000803e3d6000fd5b505050506040513d602081101561086257600080fd5b505190506001600160a01b0381166108ba576040805162461bcd60e51b81526020600482015260166024820152752537b2a6b0b5b2b91d1024b73b30b634b2103830b4b960511b604482015290519081900360640190fd5b61094881826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561090b57600080fd5b505afa15801561091f573d6000803e3d6000fd5b505050506040513d602081101561093557600080fd5b50516001600160a01b0384169190610aaf565b600080826001600160a01b03166389afcb44306040518263ffffffff1660e01b815260040180826001600160a01b031681526020019150506040805180830381600087803b15801561099957600080fd5b505af11580156109ad573d6000803e3d6000fd5b505050506040513d60408110156109c357600080fd5b50805160209182015160408051630dfe168160e01b815290519295509093506001600160a01b03861692630dfe168192600480840193829003018186803b158015610a0d57600080fd5b505afa158015610a21573d6000803e3d6000fd5b505050506040513d6020811015610a3757600080fd5b50516001600160a01b03868116911614610a4d57905b6001600160a01b03808516908616337fd06b1d7ed79b664d17472c6f6997b929f1abe463ccccb4e5b6a0038f2f730c158585610a8b8b8b8484610c19565b60408051938452602084019290925282820152519081900360600190a45050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310610b2c5780518252601f199092019160209182019101610b0d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610b8e576040519150601f19603f3d011682016040523d82523d6000602084013e610b93565b606091505b5091509150818015610bc1575080511580610bc15750808060200190516020811015610bbe57600080fd5b50515b610c12576040805162461bcd60e51b815260206004820152601a60248201527f5361666545524332303a205472616e73666572206661696c6564000000000000604482015290519081900360640190fd5b5050505050565b6000836001600160a01b0316856001600160a01b03161415610d76576000610c41848461108a565b90507f0000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd6001600160a01b0316866001600160a01b03161415610cd957610cd16001600160a01b037f0000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd167f00000000000000000000000057319d41f71e81f3c65f2a47ca4e001ebafd4f3383610aaf565b809150610d70565b7f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b0316866001600160a01b03161415610d4457610d3d7f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7826110e1565b9150610d70565b6000610d4f876106be565b9050610d5d87828430611136565b9150610d6c8182846000610c19565b9250505b50611082565b7f0000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd6001600160a01b0316856001600160a01b03161415610e1f57610e046001600160a01b037f0000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd167f00000000000000000000000057319d41f71e81f3c65f2a47ca4e001ebafd4f3385610aaf565b610e1883610e1286856110e1565b9061108a565b9050611082565b7f0000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd6001600160a01b0316846001600160a01b03161415610ebb57610ead6001600160a01b037f0000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd167f00000000000000000000000057319d41f71e81f3c65f2a47ca4e001ebafd4f3384610aaf565b610e1882610e1287866110e1565b7f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b0316856001600160a01b03161415610f4e57610e187f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7610f4985610e12887f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c78830611136565b6110e1565b7f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b0316846001600160a01b03161415610fdc57610e187f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7610f4984610e12897f000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c78930611136565b6000610fe7866106be565b90506000610ff4866106be565b9050856001600160a01b0316826001600160a01b0316141561102e5761102782876110218a868a30611136565b87610c19565b925061107f565b866001600160a01b0316816001600160a01b0316141561105f5761102787828761105a8a868a30611136565b610c19565b61107c82826110708a868a30611136565b61105a8a868a30611136565b92505b50505b949350505050565b818101818110156110db576040805162461bcd60e51b8152602060048201526016602482015275536166654d6174683a20416464204f766572666c6f7760501b604482015290519081900360640190fd5b92915050565b600061112f837f0000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd847f00000000000000000000000057319d41f71e81f3c65f2a47ca4e001ebafd4f33611136565b9392505050565b6000807f0000000000000000000000009ad6c38be94206ca50bb0d90783181662f0cfa106001600160a01b031663e6a4390587876040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156111b757600080fd5b505afa1580156111cb573d6000803e3d6000fd5b505050506040513d60208110156111e157600080fd5b505190506001600160a01b038116611240576040805162461bcd60e51b815260206004820152601860248201527f4a6f654d616b65723a2043616e6e6f7420636f6e766572740000000000000000604482015290519081900360640190fd5b600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561127c57600080fd5b505afa158015611290573d6000803e3d6000fd5b505050506040513d60608110156112a657600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060006112d4876103e56115b5565b9050836001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561130f57600080fd5b505afa158015611323573d6000803e3d6000fd5b505050506040513d602081101561133957600080fd5b50516001600160a01b038a8116911614156114805761135e81610e12856103e86115b5565b6113748361136e8a6103e56115b5565b906115b5565b8161137b57fe5b0494506113926001600160a01b038a168589610aaf565b604080516000808252602082019283905263022c0d9f60e01b835260248201818152604483018990526001600160a01b038a81166064850152608060848501908152845160a48601819052918a169563022c0d9f958c948e9491939092909160c4850191908083838b5b838110156114145781810151838201526020016113fc565b50505050905090810190601f1680156114415780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561146357600080fd5b505af1158015611477573d6000803e3d6000fd5b505050506115a9565b61149081610e12846103e86115b5565b6114a08461136e8a6103e56115b5565b816114a757fe5b0494506114be6001600160a01b038a168589610aaf565b604080516000808252602082019283905263022c0d9f60e01b835260248201888152604483018290526001600160a01b038a81166064850152608060848501908152845160a48601819052918a169563022c0d9f958c95948e9491939092909160c4850191908083838a5b83811015611541578181015183820152602001611529565b50505050905090810190601f16801561156e5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561159057600080fd5b505af11580156115a4573d6000803e3d6000fd5b505050505b50505050949350505050565b60008115806115d0575050808202828282816115cd57fe5b04145b6110db576040805162461bcd60e51b8152602060048201526016602482015275536166654d6174683a204d756c204f766572666c6f7760501b604482015290519081900360640190fdfea2646970667358221220ee1b4d33d15996220d228513c8b6f2a0338fa62e83f6330f9a28795a38819de364736f6c634300060c0033

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

0000000000000000000000009ad6c38be94206ca50bb0d90783181662f0cfa1000000000000000000000000057319d41f71e81f3c65f2a47ca4e001ebafd4f330000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7

-----Decoded View---------------
Arg [0] : _factory (address): 0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10
Arg [1] : _bar (address): 0x57319d41F71E81F3c65F2a47CA4e001EbAFd4F33
Arg [2] : _joe (address): 0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd
Arg [3] : _wavax (address): 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000009ad6c38be94206ca50bb0d90783181662f0cfa10
Arg [1] : 00000000000000000000000057319d41f71e81f3c65f2a47ca4e001ebafd4f33
Arg [2] : 0000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd
Arg [3] : 000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7


Deployed Bytecode Sourcemap

12140:8459:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10604:555;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10604:555:0;;;;;;;;;;;;;;;;;:::i;:::-;;14987:360;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14987:360:0;;-1:-1:-1;14987:360:0;-1:-1:-1;14987:360:0;:::i;11241:377::-;;;:::i;9725:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;9725:20:0;;;;;;;;;;;;;;13603:330;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13603:330:0;;;;;;;;;;:::i;13362:191::-;;;;;;;;;;;;;;;;-1:-1:-1;13362:191:0;-1:-1:-1;;;;;13362:191:0;;:::i;14765:111::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14765:111:0;;;;;;;;;;:::i;12270:36::-;;;:::i;9752:27::-;;;:::i;12383:28::-;;;:::i;10604:555::-;11746:5;;-1:-1:-1;;;;;11746:5:0;11732:10;:19;11724:64;;;;;-1:-1:-1;;;11724:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10743:6:::1;10739:413;;;-1:-1:-1::0;;;;;10815:22:0;::::1;::::0;::::1;::::0;:34:::1;;;10841:8;10815:34;10789:117;;;::::0;;-1:-1:-1;;;10789:117:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10789:117:0;;;;;;;;;;;;;::::1;;10973:5;::::0;;10952:37:::1;::::0;-1:-1:-1;;;;;10952:37:0;;::::1;::::0;10973:5;::::1;::::0;10952:37:::1;::::0;::::1;11004:5;:16:::0;;-1:-1:-1;;;;;11004:16:0;::::1;-1:-1:-1::0;;;;;;11004:16:0;;::::1;;::::0;;;;11035:25;;;;::::1;::::0;;10739:413:::1;;;11117:12;:23:::0;;-1:-1:-1;;;;;;11117:23:0::1;-1:-1:-1::0;;;;;11117:23:0;::::1;;::::0;;10739:413:::1;10604:555:::0;;;:::o;14987:360::-;14227:10;14241:9;14227:23;14219:58;;;;;-1:-1:-1;;;14219:58:0;;;;;;;;;;;;-1:-1:-1;;;14219:58:0;;;;;;;;;;;;;;;15225:6;15211:11:::1;15249:91;15273:3;15269:1;:7;15249:91;;;15298:30;15307:6;;15314:1;15307:9;;;;;;;;;;;;;-1:-1:-1::0;;;;;15307:9:0::1;15318:6;;15325:1;15318:9;;;;;;;;;;;;;-1:-1:-1::0;;;;;15318:9:0::1;15298:8;:30::i;:::-;15278:3;;15249:91;;;;14288:1;14987:360:::0;;;;:::o;11241:377::-;11309:12;;-1:-1:-1;;;;;11309:12:0;11375:10;:27;;11353:109;;;;;-1:-1:-1;;;11353:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11521:5;;;11500:42;;-1:-1:-1;;;;;11500:42:0;;;;11521:5;;;11500:42;;;11553:5;:21;;-1:-1:-1;;;;;11553:21:0;;;-1:-1:-1;;;;;;11553:21:0;;;;;;;11585:25;;;;;;;11241:377::o;9725:20::-;;;-1:-1:-1;;;;;9725:20:0;;:::o;13603:330::-;11746:5;;-1:-1:-1;;;;;11746:5:0;11732:10;:19;11724:64;;;;;-1:-1:-1;;;11724:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13733:3:::1;-1:-1:-1::0;;;;;13724:12:0::1;:5;-1:-1:-1::0;;;;;13724:12:0::1;;;:30;;;;;13749:5;-1:-1:-1::0;;;;;13740:14:0::1;:5;-1:-1:-1::0;;;;;13740:14:0::1;;;13724:30;:49;;;;;13767:6;-1:-1:-1::0;;;;;13758:15:0::1;:5;-1:-1:-1::0;;;;;13758:15:0::1;;;13724:49;13702:123;;;::::0;;-1:-1:-1;;;13702:123:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;13858:15:0;;::::1;;::::0;;;:8:::1;:15;::::0;;;;;:24;;-1:-1:-1;;;;;;13858:24:0::1;::::0;;::::1;::::0;;::::1;::::0;;13898:27;::::1;::::0;13858:15;13898:27:::1;13603:330:::0;;:::o;13362:191::-;-1:-1:-1;;;;;13453:15:0;;;13417:14;13453:15;;;:8;:15;;;;;;;13483:20;13479:67;;-1:-1:-1;13529:5:0;13479:67;13362:191;;;:::o;14765:111::-;14227:10;14241:9;14227:23;14219:58;;;;;-1:-1:-1;;;14219:58:0;;;;;;;;;;;;-1:-1:-1;;;14219:58:0;;;;;;;;;;;;;;;14844:24:::1;14853:6;14861;14844:8;:24::i;:::-;14765:111:::0;;:::o;12270:36::-;;;:::o;9752:27::-;;;-1:-1:-1;;;;;9752:27:0;;:::o;12383:28::-;;;:::o;15396:864::-;15515:13;15540:7;-1:-1:-1;;;;;15540:15:0;;15556:6;15564;15540:31;;;;;;;;;;;;;-1:-1:-1;;;;;15540:31:0;;;;;;-1:-1:-1;;;;;15540:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15540:31:0;;-1:-1:-1;;;;;;15591:27:0;;15583:62;;;;;-1:-1:-1;;;15583:62:0;;;;;;;;;;;;-1:-1:-1;;;15583:62:0;;;;;;;;;;;;;;;15725:117;15782:4;15802;-1:-1:-1;;;;;15802:14:0;;15825:4;15802:29;;;;;;;;;;;;;-1:-1:-1;;;;;15802:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15802:29:0;-1:-1:-1;;;;;15725:34:0;;;:117;:34;:117::i;:::-;15878:15;15895;15914:4;-1:-1:-1;;;;;15914:9:0;;15932:4;15914:24;;;;;;;;;;;;;-1:-1:-1;;;;;15914:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15914:24:0;;;;;;;;15963:13;;-1:-1:-1;;;15963:13:0;;;;15914:24;;-1:-1:-1;15914:24:0;;-1:-1:-1;;;;;;15963:11:0;;;;;:13;;;;;;;;;;:11;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15963:13:0;-1:-1:-1;;;;;15953:23:0;;;;;;15949:95;;16015:7;15949:95;-1:-1:-1;;;;;16059:193:0;;;;;;16084:10;16059:193;16151:7;16173;16195:46;16109:6;16130;16151:7;16173;16195:12;:46::i;:::-;16059:193;;;;;;;;;;;;;;;;;;;;;;;;;;15396:864;;;;;:::o;3184:397::-;3372:46;;;-1:-1:-1;;;;;3372:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3372:46:0;-1:-1:-1;;;3372:46:0;;;3338:91;;;;3303:12;;3317:17;;3338:19;;;;3372:46;3338:91;;;3372:46;3338:91;;3372:46;3338:91;;;;;;;;;;-1:-1:-1;;3338:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:127;;;;3462:7;:57;;;;-1:-1:-1;3474:11:0;;:16;;:44;;;3505:4;3494:24;;;;;;;;;;;;;;;-1:-1:-1;3494:24:0;3474:44;3440:133;;;;;-1:-1:-1;;;3440:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3184:397;;;;;:::o;16377:2665::-;16526:14;16592:6;-1:-1:-1;;;;;16582:16:0;:6;-1:-1:-1;;;;;16582:16:0;;16578:2457;;;16615:14;16632:20;:7;16644;16632:11;:20::i;:::-;16615:37;;16681:3;-1:-1:-1;;;;;16671:13:0;:6;-1:-1:-1;;;;;16671:13:0;;16667:431;;;16705:37;-1:-1:-1;;;;;16712:3:0;16705:24;16730:3;16735:6;16705:24;:37::i;:::-;16770:6;16761:15;;16667:431;;;16812:5;-1:-1:-1;;;;;16802:15:0;:6;-1:-1:-1;;;;;16802:15:0;;16798:300;;;16847:21;16854:5;16861:6;16847;:21::i;:::-;16838:30;;16798:300;;;16909:14;16926:17;16936:6;16926:9;:17::i;:::-;16909:34;;16971:44;16977:6;16985;16993;17009:4;16971:5;:44::i;:::-;16962:53;;17043:39;17056:6;17064;17072;17080:1;17043:12;:39::i;:::-;17034:48;;16798:300;;16578:2457;;;;17129:3;-1:-1:-1;;;;;17119:13:0;:6;-1:-1:-1;;;;;17119:13:0;;17115:1920;;;17180:38;-1:-1:-1;;;;;17187:3:0;17180:24;17205:3;17210:7;17180:24;:38::i;:::-;17242:36;17270:7;17242:23;17249:6;17257:7;17242:6;:23::i;:::-;:27;;:36::i;:::-;17233:45;;17115:1920;;;17310:3;-1:-1:-1;;;;;17300:13:0;:6;-1:-1:-1;;;;;17300:13:0;;17296:1739;;;17361:38;-1:-1:-1;;;;;17368:3:0;17361:24;17386:3;17391:7;17361:24;:38::i;:::-;17423:36;17451:7;17423:23;17430:6;17438:7;17423:6;:23::i;17296:1739::-;17491:5;-1:-1:-1;;;;;17481:15:0;:6;-1:-1:-1;;;;;17481:15:0;;17477:1558;;;17554:121;17579:5;17603:57;17652:7;17603:44;17609:6;17617:5;17624:7;17641:4;17603:5;:44::i;:57::-;17554:6;:121::i;17477:1558::-;17707:5;-1:-1:-1;;;;;17697:15:0;:6;-1:-1:-1;;;;;17697:15:0;;17693:1342;;;17770:121;17795:5;17819:57;17868:7;17819:44;17825:6;17833:5;17840:7;17857:4;17819:5;:44::i;17693:1342::-;17955:15;17973:17;17983:6;17973:9;:17::i;:::-;17955:35;;18005:15;18023:17;18033:6;18023:9;:17::i;:::-;18005:35;;18070:6;-1:-1:-1;;;;;18059:17:0;:7;-1:-1:-1;;;;;18059:17:0;;18055:969;;;18169:189;18204:7;18234:6;18263:46;18269:6;18277:7;18286;18303:4;18263:5;:46::i;:::-;18332:7;18169:12;:189::i;:::-;18160:198;;18055:969;;;18395:6;-1:-1:-1;;;;;18384:17:0;:7;-1:-1:-1;;;;;18384:17:0;;18380:644;;;18494:189;18529:6;18558:7;18588;18618:46;18624:6;18632:7;18641;18658:4;18618:5;:46::i;:::-;18494:12;:189::i;18380:644::-;18733:275;18768:7;18798;18874:46;18880:6;18888:7;18897;18914:4;18874:5;:46::i;:::-;18943;18949:6;18957:7;18966;18983:4;18943:5;:46::i;18733:275::-;18724:284;;18380:644;17693:1342;;;16377:2665;;;;;;:::o;256:139::-;349:5;;;344:16;;;;336:51;;;;;-1:-1:-1;;;336:51:0;;;;;;;;;;;;-1:-1:-1;;;336:51:0;;;;;;;;;;;;;;;256:139;;;;:::o;20400:196::-;20485:17;20556:32;20562:5;20569:3;20574:8;20584:3;20556:5;:32::i;:::-;20544:44;20400:196;-1:-1:-1;;;20400:196:0:o;19136:1214::-;19278:17;19351:13;19376:7;-1:-1:-1;;;;;19376:15:0;;19392:9;19403:7;19376:35;;;;;;;;;;;;;-1:-1:-1;;;;;19376:35:0;;;;;;-1:-1:-1;;;;;19376:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19376:35:0;;-1:-1:-1;;;;;;19431:27:0;;19423:64;;;;;-1:-1:-1;;;19423:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19550:16;19568;19590:4;-1:-1:-1;;;;;19590:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19590:18:0;;;;;;;19549:59;;;;;-1:-1:-1;19549:59:0;;-1:-1:-1;19619:23:0;19645:17;:8;19658:3;19645:12;:17::i;:::-;19619:43;;19690:4;-1:-1:-1;;;;;19690:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19690:13:0;-1:-1:-1;;;;;19677:26:0;;;;;;19673:670;;;19800:39;19823:15;19800:18;:8;19813:4;19800:12;:18::i;:39::-;19749:31;19771:8;19749:17;:8;19762:3;19749:12;:17::i;:::-;:21;;:31::i;:::-;:90;;;;;;;-1:-1:-1;19854:55:0;-1:-1:-1;;;;;19854:30:0;;19893:4;19900:8;19854:30;:55::i;:::-;19952:12;;;19934:1;19952:12;;;;;;;;;;-1:-1:-1;;;19924:41:0;;;;;;;;;;;;;;-1:-1:-1;;;;;19924:41:0;;;;;;;;;;;;;;;;;;;;;;:9;;;;;;19937;;19948:2;;19952:12;;19924:41;;;;;;;;19952:12;19924:41;;19952:12;19934:1;19924:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19673:670;;;20122:39;20145:15;20122:18;:8;20135:4;20122:12;:18::i;:39::-;20071:31;20093:8;20071:17;:8;20084:3;20071:12;:17::i;:31::-;:90;;;;;;;-1:-1:-1;20176:55:0;-1:-1:-1;;;;;20176:30:0;;20215:4;20222:8;20176:30;:55::i;:::-;20274:12;;;20267:1;20274:12;;;;;;;;;;-1:-1:-1;;;20246:41:0;;;;;;;;;;;;;;-1:-1:-1;;;;;20246:41:0;;;;;;;;;;;;;;;;;;;;;;:9;;;;;;20256;;20267:1;20270:2;;20274:12;;20246:41;;;;;;;;20274:12;20246:41;;20274:12;20267:1;20246:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19673:670;19136:1214;;;;;;;;;;:::o;547:153::-;605:9;635:6;;;:30;;-1:-1:-1;;650:5:0;;;664:1;659;650:5;659:1;645:15;;;;;:20;635:30;627:65;;;;;-1:-1:-1;;;627:65:0;;;;;;;;;;;;-1:-1:-1;;;627:65:0;;;;;;;;;;;;;

Swarm Source

ipfs://ee1b4d33d15996220d228513c8b6f2a0338fa62e83f6330f9a28795a38819de3

Block Transaction Gas Used Reward
view all blocks ##produced##

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.