Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,637 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Swap | 20453269 | 102 days ago | IN | 0.007 ETH | 0.00009177 | ||||
Cross | 20408349 | 108 days ago | IN | 0 ETH | 0.00014703 | ||||
Cross | 20408349 | 108 days ago | IN | 0 ETH | 0.00014703 | ||||
Swap | 15882331 | 743 days ago | IN | 0 ETH | 0.00476546 | ||||
Cross | 15882316 | 743 days ago | IN | 0.5 ETH | 0.0015006 | ||||
Cross | 15882256 | 743 days ago | IN | 0.61 ETH | 0.00105968 | ||||
Cross | 15882145 | 743 days ago | IN | 0 ETH | 0.00160161 | ||||
Cross | 15882112 | 743 days ago | IN | 0.07935582 ETH | 0.00120035 | ||||
Swap | 15882085 | 743 days ago | IN | 1.29 ETH | 0.00252035 | ||||
Cross | 15882081 | 743 days ago | IN | 0 ETH | 0.00187536 | ||||
Cross | 15882053 | 743 days ago | IN | 0.1 ETH | 0.00096394 | ||||
Cross | 15882028 | 743 days ago | IN | 0.15 ETH | 0.00120035 | ||||
Swap | 15882028 | 743 days ago | IN | 0.23 ETH | 0.00234754 | ||||
Cross | 15882023 | 743 days ago | IN | 0.1226532 ETH | 0.00119639 | ||||
Swap | 15882011 | 743 days ago | IN | 0 ETH | 0.00392827 | ||||
Cross | 15881996 | 743 days ago | IN | 0.124 ETH | 0.00120035 | ||||
Cross | 15881964 | 743 days ago | IN | 0.052 ETH | 0.0009796 | ||||
Swap | 15881874 | 743 days ago | IN | 0.06475234 ETH | 0.00323169 | ||||
Cross | 15881865 | 743 days ago | IN | 0 ETH | 0.00187885 | ||||
Cross | 15881828 | 743 days ago | IN | 0.4 ETH | 0.00100796 | ||||
Swap | 15881787 | 743 days ago | IN | 0 ETH | 0.00437344 | ||||
Swap | 15881786 | 743 days ago | IN | 0 ETH | 0.00256448 | ||||
Cross | 15881769 | 743 days ago | IN | 0 ETH | 0.0016883 | ||||
Cross | 15881766 | 743 days ago | IN | 0 ETH | 0.00187558 | ||||
Cross | 15881764 | 743 days ago | IN | 0 ETH | 0.00187558 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20453269 | 102 days ago | 0.006979 ETH | ||||
16074867 | 716 days ago | 0.07491766 ETH | ||||
15882316 | 743 days ago | 0.499 ETH | ||||
15882256 | 743 days ago | 0.60878 ETH | ||||
15882112 | 743 days ago | 0.07919711 ETH | ||||
15882085 | 743 days ago | 1.28613 ETH | ||||
15882053 | 743 days ago | 0.0998 ETH | ||||
15882028 | 743 days ago | 0.1497 ETH | ||||
15882028 | 743 days ago | 0.22931 ETH | ||||
15882023 | 743 days ago | 0.12240789 ETH | ||||
15881996 | 743 days ago | 0.123752 ETH | ||||
15881964 | 743 days ago | 0.051896 ETH | ||||
15881874 | 743 days ago | 0.06455809 ETH | ||||
15881828 | 743 days ago | 0.3992 ETH | ||||
15881754 | 743 days ago | 8.1754 ETH | ||||
15881681 | 743 days ago | 0.19053641 ETH | ||||
15881653 | 743 days ago | 0.11229055 ETH | ||||
15881594 | 743 days ago | 0.0998 ETH | ||||
15881507 | 743 days ago | 0.00500113 ETH | ||||
15881464 | 743 days ago | 0.0997 ETH | ||||
15881433 | 743 days ago | 0.50898 ETH | ||||
15881398 | 743 days ago | 0.08982 ETH | ||||
15881327 | 743 days ago | 0.20307762 ETH | ||||
15881317 | 743 days ago | 0.587697 ETH | ||||
15881298 | 743 days ago | 0.0516964 ETH |
Loading...
Loading
Contract Name:
TransitSwapRouter
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./libraries/ReentrancyGuard.sol"; import "./libraries/RevertReasonParser.sol"; import "./libraries/TransferHelper.sol"; import "./libraries/TransitStructs.sol"; import "./libraries/Ownable.sol"; import "./libraries/Pausable.sol"; import "./libraries/SafeMath.sol"; import "./interfaces/IERC20.sol"; import "./interfaces/ITransitSwapFees.sol"; contract TransitSwapRouter is Ownable, ReentrancyGuard, Pausable { using SafeMath for uint256; address private _transit_swap; address private _transit_cross; address private _transit_fees; //default: Pre-trade fee model mapping(uint8 => bool) private _swap_type_mode; event Receipt(address from, uint256 amount); event Withdraw(address indexed token, address indexed executor, address indexed recipient, uint amount); event ChangeTransitSwap(address indexed previousTransit, address indexed newTransit); event ChangeTransitCross(address indexed previousTransit, address indexed newTransit); event ChangeTransitFees(address indexed previousTransitFees, address indexed newTransitFees); event ChangeSwapTypeMode(uint8[] types, bool[] newModes); event TransitSwapped(address indexed srcToken, address indexed dstToken, address indexed dstReceiver, address trader, bool feeMode, uint256 amount, uint256 returnAmount, uint256 minReturnAmount, uint256 fee, uint256 toChainID, string channel, uint256 time); constructor(address transitSwap_, address transitCross_, address transitFees_, address executor) Ownable (executor) { _transit_swap = transitSwap_; _transit_cross = transitCross_; _transit_fees = transitFees_; } receive() external payable { emit Receipt(msg.sender, msg.value); } function transitSwap() external view returns (address) { return _transit_swap; } function transitCross() external view returns (address) { return _transit_cross; } function transitFees() external view returns (address) { return _transit_fees; } function swapTypeMode(uint8 swapType) external view returns (bool) { return _swap_type_mode[swapType]; } function changeTransitSwap(address newTransit) external onlyExecutor { address oldTransit = _transit_swap; _transit_swap = newTransit; emit ChangeTransitSwap(oldTransit, newTransit); } function changeTransitCross(address newTransit) external onlyExecutor { address oldTransit = _transit_cross; _transit_cross = newTransit; emit ChangeTransitCross(oldTransit, newTransit); } function changeTransitFees(address newTransitFees) external onlyExecutor { address oldTransitFees = _transit_fees; _transit_fees = newTransitFees; emit ChangeTransitFees(oldTransitFees, newTransitFees); } function changeSwapTypeMode(uint8[] memory swapTypes) external onlyExecutor { bool[] memory newModes = new bool[](swapTypes.length); for (uint index; index < swapTypes.length; index++) { _swap_type_mode[swapTypes[index]] = !_swap_type_mode[swapTypes[index]]; newModes[index] = _swap_type_mode[swapTypes[index]]; } emit ChangeSwapTypeMode(swapTypes, newModes); } function changePause(bool paused) external onlyExecutor { if (paused) { _pause(); } else { _unpause(); } } function _beforeSwap(bool preTradeModel, TransitStructs.TransitSwapDescription calldata desc) private returns (uint256 swapAmount, uint256 fee, uint256 beforeBalance) { if (preTradeModel) { fee = ITransitSwapFees(_transit_fees).getFeeRate(msg.sender, desc.amount, desc.swapType, desc.channel); } if (TransferHelper.isETH(desc.srcToken)) { require(msg.value == desc.amount, "TransitSwap: invalid msg.value"); swapAmount = desc.amount.sub(fee); } else { if (preTradeModel) { TransferHelper.safeTransferFrom(desc.srcToken, msg.sender, address(this), desc.amount); TransferHelper.safeTransfer(desc.srcToken, desc.srcReceiver, desc.amount.sub(fee)); } else { TransferHelper.safeTransferFrom(desc.srcToken, msg.sender, desc.srcReceiver, desc.amount); } } if (TransferHelper.isETH(desc.dstToken)) { if (preTradeModel) { beforeBalance = desc.dstReceiver.balance; } else { if (desc.swapType == uint8(TransitStructs.SwapTypes.swap)) { beforeBalance = IERC20(desc.wrappedNative).balanceOf(address(this)); } else { beforeBalance = address(this).balance; } } } else { if (preTradeModel) { beforeBalance = IERC20(desc.dstToken).balanceOf(desc.dstReceiver); } else { beforeBalance = IERC20(desc.dstToken).balanceOf(address(this)); } } } function _afterSwap(bool preTradeModel, TransitStructs.TransitSwapDescription calldata desc, uint256 beforeBalance) private returns (uint256 returnAmount, uint256 fee) { if (TransferHelper.isETH(desc.dstToken)) { if (preTradeModel) { returnAmount = desc.dstReceiver.balance.sub(beforeBalance); require(returnAmount >= desc.minReturnAmount, "TransitSwap: insufficient return amount"); } else { if (desc.swapType == uint8(TransitStructs.SwapTypes.swap)) { returnAmount = IERC20(desc.wrappedNative).balanceOf(address(this)).sub(beforeBalance); TransferHelper.safeWithdraw(desc.wrappedNative, returnAmount); } else { returnAmount = address(this).balance.sub(beforeBalance); } fee = ITransitSwapFees(_transit_fees).getFeeRate(msg.sender, returnAmount, desc.swapType, desc.channel); returnAmount = returnAmount.sub(fee); require(returnAmount >= desc.minReturnAmount, "TransitSwap: insufficient return amount"); TransferHelper.safeTransferETH(desc.dstReceiver, returnAmount); } } else { if (preTradeModel) { returnAmount = IERC20(desc.dstToken).balanceOf(desc.dstReceiver).sub(beforeBalance); require(returnAmount >= desc.minReturnAmount, "TransitSwap: insufficient return amount"); } else { returnAmount = IERC20(desc.dstToken).balanceOf(address(this)).sub(beforeBalance); fee = ITransitSwapFees(_transit_fees).getFeeRate(msg.sender, returnAmount, desc.swapType, desc.channel); returnAmount = returnAmount.sub(fee); uint256 receiverBeforeBalance = IERC20(desc.dstToken).balanceOf(desc.dstReceiver); TransferHelper.safeTransfer(desc.dstToken, desc.dstReceiver, returnAmount); returnAmount = IERC20(desc.dstToken).balanceOf(desc.dstReceiver).sub(receiverBeforeBalance); require(returnAmount >= desc.minReturnAmount, "TransitSwap: insufficient return amount"); } } } function swap(TransitStructs.TransitSwapDescription calldata desc, TransitStructs.CallbytesDescription calldata callbytesDesc) external payable nonReentrant whenNotPaused { require(callbytesDesc.calldatas.length > 0, "TransitSwap: data should be not zero"); require(desc.amount > 0, "TransitSwap: amount should be greater than 0"); require(desc.dstReceiver != address(0), "TransitSwap: receiver should be not address(0)"); require(desc.minReturnAmount > 0, "TransitSwap: minReturnAmount should be greater than 0"); if (callbytesDesc.flag == uint8(TransitStructs.Flag.aggregate)) { require(desc.srcToken == callbytesDesc.srcToken, "TransitSwap: invalid callbytesDesc"); } bool preTradeModel = !_swap_type_mode[desc.swapType]; (uint256 swapAmount, uint256 fee, uint256 beforeBalance) = _beforeSwap(preTradeModel, desc); { //bytes4(keccak256(bytes('callbytes(TransitStructs.CallbytesDescription)'))); (bool success, bytes memory result) = _transit_swap.call{value:swapAmount}(abi.encodeWithSelector(0xccbe4007, callbytesDesc)); if (!success) { revert(RevertReasonParser.parse(result,"TransitSwap:")); } } (uint256 returnAmount, uint256 postFee) = _afterSwap(preTradeModel, desc, beforeBalance); if (postFee > fee) { fee = postFee; } _emitTransit(desc, preTradeModel, fee, returnAmount); } function _beforeCross(TransitStructs.TransitSwapDescription calldata desc) private returns (uint256 swapAmount, uint256 fee, uint256 beforeBalance) { fee = ITransitSwapFees(_transit_fees).getFeeRate(msg.sender, desc.amount, desc.swapType, desc.channel); if (TransferHelper.isETH(desc.srcToken)) { require(msg.value == desc.amount, "TransitSwap: invalid msg.value"); swapAmount = desc.amount.sub(fee); } else { beforeBalance = IERC20(desc.srcToken).balanceOf(_transit_cross); if (fee == 0) { TransferHelper.safeTransferFrom(desc.srcToken, msg.sender, _transit_cross, desc.amount); } else { TransferHelper.safeTransferFrom(desc.srcToken, msg.sender, address(this), desc.amount); TransferHelper.safeTransfer(desc.srcToken, _transit_cross, desc.amount.sub(fee)); } } } function cross(TransitStructs.TransitSwapDescription calldata desc, TransitStructs.CallbytesDescription calldata callbytesDesc) external payable nonReentrant whenNotPaused { require(callbytesDesc.calldatas.length > 0, "TransitSwap: data should be not zero"); require(desc.amount > 0, "TransitSwap: amount should be greater than 0"); require(desc.srcToken == callbytesDesc.srcToken, "TransitSwap: invalid callbytesDesc"); (uint256 swapAmount, uint256 fee, uint256 beforeBalance) = _beforeCross(desc); { //bytes4(keccak256(bytes('callbytes(TransitStructs.CallbytesDescription)'))); (bool success, bytes memory result) = _transit_cross.call{value:swapAmount}(abi.encodeWithSelector(0xccbe4007, callbytesDesc)); if (!success) { revert(RevertReasonParser.parse(result,"TransitSwap:")); } } if (!TransferHelper.isETH(desc.srcToken)) { require(IERC20(desc.srcToken).balanceOf(_transit_cross) >= beforeBalance, "TransitSwap: invalid cross"); } _emitTransit(desc, true, fee, 0); } function _emitTransit(TransitStructs.TransitSwapDescription calldata desc, bool preTradeModel, uint256 fee, uint256 returnAmount) private { emit TransitSwapped( desc.srcToken, desc.dstToken, desc.dstReceiver, msg.sender, preTradeModel, desc.amount, returnAmount, desc.minReturnAmount, fee, desc.toChainID, desc.channel, block.timestamp ); } function withdrawTokens(address[] memory tokens, address recipient) external onlyExecutor { for(uint index; index < tokens.length; index++) { uint amount; if(TransferHelper.isETH(tokens[index])) { amount = address(this).balance; TransferHelper.safeTransferETH(recipient, amount); } else { amount = IERC20(tokens[index]).balanceOf(address(this)); TransferHelper.safeTransferWithoutRequire(tokens[index], recipient, amount); } emit Withdraw(tokens[index], msg.sender, recipient, amount); } } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.9; interface ITransitSwapFees { function getFeeRate(address trader, uint256 tradeAmount, uint8 swapType, string memory channel) external view returns (uint payFees); }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.9; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function name() external view returns (string memory); function symbol() external view returns (string memory); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0; library SafeMath { function add(uint x, uint y) internal pure returns (uint z) { require((z = x + y) >= x, 'ds-math-add-overflow'); } function sub(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x, 'ds-math-sub-underflow'); } function mul(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow'); } function div(uint x, uint y) internal pure returns (uint z) { require(y != 0 , 'ds-math-div-zero'); z = x / y; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(msg.sender); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(msg.sender); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) // Add executor extension pragma solidity ^0.8.0; /** * @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 { address private _owner; address private _pendingOwner; address private _executor; address private _pendingExecutor; bool internal _initialized; event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event ExecutorshipTransferStarted(address indexed previousExecutor, address indexed newExecutor); event ExecutorshipTransferred(address indexed previousExecutor, address indexed newExecutor); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor(address newExecutor) { require(!_initialized, "Ownable: initialized"); _transferOwnership(msg.sender); _transferExecutorship(newExecutor); _initialized = true; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Throws if called by any account other than the executor. */ modifier onlyExecutor() { _checkExecutor(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Returns the address of the current executor. */ function executor() public view virtual returns (address) { return _executor; } /** * @dev Returns the address of the pending owner. */ function pendingOwner() public view virtual returns (address) { return _pendingOwner; } /** * @dev Returns the address of the pending executor. */ function pendingExecutor() public view virtual returns (address) { return _pendingExecutor; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == msg.sender, "Ownable: caller is not the owner"); } /** * @dev Throws if the sender is not the executor. */ function _checkExecutor() internal view virtual { require(executor() == msg.sender, "Ownable: caller is not the executor"); } /** * @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 { _transferOwnership(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 { _pendingOwner = newOwner; emit OwnershipTransferStarted(owner(), newOwner); } /** * @dev Transfers executorship of the contract to a new account (`newExecutor`). * Can only be called by the current executor. */ function transferExecutorship(address newExecutor) public virtual onlyExecutor { _pendingExecutor = newExecutor; emit ExecutorshipTransferStarted(executor(), newExecutor); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { delete _pendingOwner; address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } function _transferExecutorship(address newExecutor) internal virtual { delete _pendingExecutor; address oldExecutor = _executor; _executor = newExecutor; emit ExecutorshipTransferred(oldExecutor, newExecutor); } function acceptOwnership() external { address sender = msg.sender; require(pendingOwner() == sender, "Ownable: caller is not the new owner"); _transferOwnership(sender); } function acceptExecutorship() external { address sender = msg.sender; require(pendingExecutor() == sender, "Ownable: caller is not the new executor"); _transferExecutorship(sender); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; library TransitStructs { enum SwapTypes {aggregatePreMode, aggregatePostMode, swap, cross} enum Flag {aggregate, swap, cross} struct TransitSwapDescription { uint8 swapType; address srcToken; address dstToken; address srcReceiver; address dstReceiver; uint256 amount; uint256 minReturnAmount; string channel; uint256 toChainID; address wrappedNative; } struct CallbytesDescription { uint8 flag; address srcToken; bytes calldatas; } struct AggregateDescription { address dstToken; address receiver; uint[] amounts; uint[] needTransfer; address[] callers; address[] approveProxy; bytes[] calls; } struct SwapDescription { address[][] paths; address[][] pairs; uint[] fees; address receiver; uint deadline; } struct CrossDescription { address caller; uint256 amount; bool needWrapped; bytes calls; } function decodeAggregateDesc(bytes calldata calldatas) internal pure returns (AggregateDescription memory desc) { desc = abi.decode(calldatas, (AggregateDescription)); } function decodeSwapDesc(bytes calldata calldatas) internal pure returns (SwapDescription memory desc) { desc = abi.decode(calldatas, (SwapDescription)); } function decodeCrossDesc(bytes calldata calldatas) internal pure returns (CrossDescription memory desc) { desc = abi.decode(calldatas, (CrossDescription)); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0; library TransferHelper { address private constant _ETH_ADDRESS = address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE); address private constant _ZERO_ADDRESS = address(0); function isETH(address token) internal pure returns (bool) { return (token == _ZERO_ADDRESS || token == _ETH_ADDRESS); } function safeApprove(address token, address to, uint value) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED'); } function safeTransfer(address token, address to, uint value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_TOKEN_FAILED'); } function safeTransferWithoutRequire(address token, address to, uint256 value) internal returns (bool) { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); return (success && (data.length == 0 || abi.decode(data, (bool)))); } function safeTransferFrom(address token, address from, address to, uint value) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED'); } function safeTransferETH(address to, uint value) internal { // solium-disable-next-line (bool success,) = to.call{value:value}(new bytes(0)); require(success, 'TransferHelper: TRANSFER_FAILED'); } function safeDeposit(address wrapped, uint value) internal { // bytes4(keccak256(bytes('deposit()'))); (bool success, bytes memory data) = wrapped.call{value:value}(abi.encodeWithSelector(0xd0e30db0)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: DEPOSIT_FAILED'); } function safeWithdraw(address wrapped, uint value) internal { // bytes4(keccak256(bytes('withdraw(uint256 wad)'))); (bool success, bytes memory data) = wrapped.call{value:0}(abi.encodeWithSelector(0x2e1a7d4d, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: WITHDRAW_FAILED'); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0; library RevertReasonParser { function parse(bytes memory data, string memory prefix) internal pure returns (string memory) { // https://solidity.readthedocs.io/en/latest/control-structures.html#revert // We assume that revert reason is abi-encoded as Error(string) // 68 = 4-byte selector 0x08c379a0 + 32 bytes offset + 32 bytes length if (data.length >= 68 && data[0] == "\x08" && data[1] == "\xc3" && data[2] == "\x79" && data[3] == "\xa0") { string memory reason; // solhint-disable no-inline-assembly assembly { // 68 = 32 bytes data length + 4-byte selector + 32 bytes offset reason := add(data, 68) } /* revert reason is padded up to 32 bytes with ABI encoder: Error(string) also sometimes there is extra 32 bytes of zeros padded in the end: https://github.com/ethereum/solidity/issues/10170 because of that we can't check for equality and instead check that string length + extra 68 bytes is less than overall data length */ require(data.length >= 68 + bytes(reason).length, "Invalid revert reason"); return string(abi.encodePacked(prefix, "Error(", reason, ")")); } // 36 = 4-byte selector 0x4e487b71 + 32 bytes integer else if (data.length == 36 && data[0] == "\x4e" && data[1] == "\x48" && data[2] == "\x7b" && data[3] == "\x71") { uint256 code; // solhint-disable no-inline-assembly assembly { // 36 = 32 bytes data length + 4-byte selector code := mload(add(data, 36)) } return string(abi.encodePacked(prefix, "Panic(", _toHex(code), ")")); } return string(abi.encodePacked(prefix, "Unknown(", _toHex(data), ")")); } function _toHex(uint256 value) private pure returns(string memory) { return _toHex(abi.encodePacked(value)); } function _toHex(bytes memory data) private pure returns(string memory) { bytes16 alphabet = 0x30313233343536373839616263646566; bytes memory str = new bytes(2 + data.length * 2); str[0] = "0"; str[1] = "x"; for (uint256 i = 0; i < data.length; i++) { str[2 * i + 2] = alphabet[uint8(data[i] >> 4)]; str[2 * i + 3] = alphabet[uint8(data[i] & 0x0f)]; } return string(str); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"transitSwap_","type":"address"},{"internalType":"address","name":"transitCross_","type":"address"},{"internalType":"address","name":"transitFees_","type":"address"},{"internalType":"address","name":"executor","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8[]","name":"types","type":"uint8[]"},{"indexed":false,"internalType":"bool[]","name":"newModes","type":"bool[]"}],"name":"ChangeSwapTypeMode","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTransit","type":"address"},{"indexed":true,"internalType":"address","name":"newTransit","type":"address"}],"name":"ChangeTransitCross","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTransitFees","type":"address"},{"indexed":true,"internalType":"address","name":"newTransitFees","type":"address"}],"name":"ChangeTransitFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousTransit","type":"address"},{"indexed":true,"internalType":"address","name":"newTransit","type":"address"}],"name":"ChangeTransitSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousExecutor","type":"address"},{"indexed":true,"internalType":"address","name":"newExecutor","type":"address"}],"name":"ExecutorshipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousExecutor","type":"address"},{"indexed":true,"internalType":"address","name":"newExecutor","type":"address"}],"name":"ExecutorshipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Receipt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"srcToken","type":"address"},{"indexed":true,"internalType":"address","name":"dstToken","type":"address"},{"indexed":true,"internalType":"address","name":"dstReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"trader","type":"address"},{"indexed":false,"internalType":"bool","name":"feeMode","type":"bool"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"returnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"},{"indexed":false,"internalType":"string","name":"channel","type":"string"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"TransitSwapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"acceptExecutorship","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"}],"name":"changePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8[]","name":"swapTypes","type":"uint8[]"}],"name":"changeSwapTypeMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTransit","type":"address"}],"name":"changeTransitCross","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTransitFees","type":"address"}],"name":"changeTransitFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTransit","type":"address"}],"name":"changeTransitSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint8","name":"swapType","type":"uint8"},{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"address","name":"dstToken","type":"address"},{"internalType":"address","name":"srcReceiver","type":"address"},{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"string","name":"channel","type":"string"},{"internalType":"uint256","name":"toChainID","type":"uint256"},{"internalType":"address","name":"wrappedNative","type":"address"}],"internalType":"struct TransitStructs.TransitSwapDescription","name":"desc","type":"tuple"},{"components":[{"internalType":"uint8","name":"flag","type":"uint8"},{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"bytes","name":"calldatas","type":"bytes"}],"internalType":"struct TransitStructs.CallbytesDescription","name":"callbytesDesc","type":"tuple"}],"name":"cross","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"executor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingExecutor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint8","name":"swapType","type":"uint8"},{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"address","name":"dstToken","type":"address"},{"internalType":"address","name":"srcReceiver","type":"address"},{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"string","name":"channel","type":"string"},{"internalType":"uint256","name":"toChainID","type":"uint256"},{"internalType":"address","name":"wrappedNative","type":"address"}],"internalType":"struct TransitStructs.TransitSwapDescription","name":"desc","type":"tuple"},{"components":[{"internalType":"uint8","name":"flag","type":"uint8"},{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"bytes","name":"calldatas","type":"bytes"}],"internalType":"struct TransitStructs.CallbytesDescription","name":"callbytesDesc","type":"tuple"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapType","type":"uint8"}],"name":"swapTypeMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newExecutor","type":"address"}],"name":"transferExecutorship","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transitCross","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transitFees","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transitSwap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200338a3803806200338a8339810160408190526200003491620001e4565b6003548190600160a01b900460ff1615620000955760405162461bcd60e51b815260206004820152601460248201527f4f776e61626c653a20696e697469616c697a6564000000000000000000000000604482015260640160405180910390fd5b620000a03362000110565b620000ab816200016a565b50506003805460ff60a01b1916600160a01b1790556001600455600580546001600160a01b03948516610100026001600160a81b0319909116179055600680549284166001600160a01b03199384161790556007805491909316911617905562000241565b600180546001600160a01b0319908116909155600080546001600160a01b03848116938216841783556040519116929183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600380546001600160a01b0319908116909155600280546001600160a01b0384811693821684179092556040519116919082907f88436636ea40d5bb1bcc55ff9cd54788af71da886f4147a87f199adcca733d4d90600090a35050565b80516001600160a01b0381168114620001df57600080fd5b919050565b60008060008060808587031215620001fb57600080fd5b6200020685620001c7565b93506200021660208601620001c7565b92506200022660408601620001c7565b91506200023660608601620001c7565b905092959194509250565b61313980620002516000396000f3fe6080604052600436106101395760003560e01c8063afed2d0e116100ab578063c6c465521161006f578063c6c465521461036f578063d63234e01461038f578063dc69bbad146103ad578063e30c3978146103cd578063e8e1bc5d146103eb578063f2fde38b1461040b57600080fd5b8063afed2d0e146102cb578063c10bea5c146102eb578063c34c08e5146102fe578063c3dc51fe1461031c578063c58dff5c1461033c57600080fd5b8063715018a6116100fd578063715018a61461022d57806379ba509714610242578063845b1f77146102575780638da5cb5b1461027a57806394752e821461029857806394d3d793146102b657600080fd5b8063017efb281461017d5780630e8cc7051461019257806351205349146101b25780635c975abb146101e95780635d4fead31461020d57600080fd5b3661017857604080513381523460208201527f7784f8d436dc514f0690e472c7e2d7f660a73e504c69b2350f6be5a5f02432ef910160405180910390a1005b600080fd5b61019061018b366004612ac0565b61042b565b005b34801561019e57600080fd5b506101906101ad366004612931565b61070b565b3480156101be57600080fd5b506007546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101f557600080fd5b5060055460ff165b60405190151581526020016101e0565b34801561021957600080fd5b50610190610228366004612a86565b61089e565b34801561023957600080fd5b506101906108bf565b34801561024e57600080fd5b506101906108d3565b34801561026357600080fd5b5060055461010090046001600160a01b03166101cc565b34801561028657600080fd5b506000546001600160a01b03166101cc565b3480156102a457600080fd5b506006546001600160a01b03166101cc565b3480156102c257600080fd5b50610190610952565b3480156102d757600080fd5b506101906102e636600461290f565b6109d5565b6101906102f9366004612ac0565b610a46565b34801561030a57600080fd5b506002546001600160a01b03166101cc565b34801561032857600080fd5b506101906103373660046129e7565b610d6b565b34801561034857600080fd5b506101fd610357366004612b4d565b60ff9081166000908152600860205260409020541690565b34801561037b57600080fd5b5061019061038a36600461290f565b610f03565b34801561039b57600080fd5b506003546001600160a01b03166101cc565b3480156103b957600080fd5b506101906103c836600461290f565b610f5d565b3480156103d957600080fd5b506001546001600160a01b03166101cc565b3480156103f757600080fd5b5061019061040636600461290f565b610fbf565b34801561041757600080fd5b5061019061042636600461290f565b611019565b61043361108a565b61043b6110e4565b600061044a6040830183612f7b565b9050116104725760405162461bcd60e51b815260040161046990612e1f565b60405180910390fd5b60008260a00135116104965760405162461bcd60e51b815260040161046990612dd3565b6104a6604082016020830161290f565b6001600160a01b03166104bf604084016020850161290f565b6001600160a01b0316146104e55760405162461bcd60e51b815260040161046990612eaa565b60008060006104f38561112a565b600654604051939650919450925060009182916001600160a01b031690869063ccbe400790610526908a90602401612eec565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161055f9190612b91565b60006040518083038185875af1925050503d806000811461059c576040519150601f19603f3d011682016040523d82523d6000602084013e6105a1565b606091505b5091509150816105f2576105d9816040518060400160405280600c81526020016b2a3930b739b4ba29bbb0b81d60a11b81525061136f565b60405162461bcd60e51b81526004016104699190612da0565b5061060d9050610608604087016020880161290f565b6115e6565b6106ec5780610622604087016020880161290f565b6006546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a082319060240160206040518083038186803b15801561066657600080fd5b505afa15801561067a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069e9190612b34565b10156106ec5760405162461bcd60e51b815260206004820152601a60248201527f5472616e736974537761703a20696e76616c69642063726f73730000000000006044820152606401610469565b6106fa85600184600061161f565b5050506107076001600455565b5050565b6107136116d4565b60005b8251811015610899576000610743848381518110610736576107366130c9565b60200260200101516115e6565b156107595750476107548382611749565b610816565b83828151811061076b5761076b6130c9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b1580156107b657600080fd5b505afa1580156107ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ee9190612b34565b9050610814848381518110610805576108056130c9565b60200260200101518483611806565b505b826001600160a01b0316336001600160a01b031685848151811061083c5761083c6130c9565b60200260200101516001600160a01b03167f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f78460405161087e91815260200190565b60405180910390a4508061089181613098565b915050610716565b505050565b6108a66116d4565b80156108b7576108b46118f0565b50565b6108b461193b565b6108c761197d565b6108d160006119e6565b565b33806108e76001546001600160a01b031690565b6001600160a01b0316146109495760405162461bcd60e51b8152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206e6577206f6044820152633bb732b960e11b6064820152608401610469565b6108b4816119e6565b33806109666003546001600160a01b031690565b6001600160a01b0316146109cc5760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206e657720656044820152663c32b1baba37b960c91b6064820152608401610469565b6108b481611a40565b6109dd6116d4565b600380546001600160a01b0383166001600160a01b03199091168117909155610a0e6002546001600160a01b031690565b6001600160a01b03167fdd01547fc40682edc3cd8d164d53f5a1ae6b46138a83f045658ed760823ddba860405160405180910390a350565b610a4e61108a565b610a566110e4565b6000610a656040830183612f7b565b905011610a845760405162461bcd60e51b815260040161046990612e1f565b60008260a0013511610aa85760405162461bcd60e51b815260040161046990612dd3565b6000610aba60a084016080850161290f565b6001600160a01b03161415610b285760405162461bcd60e51b815260206004820152602e60248201527f5472616e736974537761703a2072656365697665722073686f756c642062652060448201526d6e6f74206164647265737328302960901b6064820152608401610469565b60008260c0013511610b9a5760405162461bcd60e51b815260206004820152603560248201527f5472616e736974537761703a206d696e52657475726e416d6f756e742073686f6044820152740756c642062652067726561746572207468616e203605c1b6064820152608401610469565b6000610ba96020830183612b4d565b60ff161415610c0157610bc2604082016020830161290f565b6001600160a01b0316610bdb604084016020850161290f565b6001600160a01b031614610c015760405162461bcd60e51b815260040161046990612eaa565b6000600881610c136020860186612b4d565b60ff908116825260208201929092526040016000908120549091161591508080610c3d8487611a9d565b925092509250600080600560019054906101000a90046001600160a01b03166001600160a01b03168563ccbe400789604051602401610c7c9190612eec565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051610cb59190612b91565b60006040518083038185875af1925050503d8060008114610cf2576040519150601f19603f3d011682016040523d82523d6000602084013e610cf7565b606091505b509150915081610d2f576105d9816040518060400160405280600c81526020016b2a3930b739b4ba29bbb0b81d60a11b81525061136f565b5050600080610d3f868985611e2d565b9150915083811115610d4f578093505b610d5b8887868561161f565b5050505050506107076001600455565b610d736116d4565b6000815167ffffffffffffffff811115610d8f57610d8f6130df565b604051908082528060200260200182016040528015610db8578160200160208202803683370190505b50905060005b8251811015610ec55760086000848381518110610ddd57610ddd6130c9565b602002602001015160ff1660ff16815260200190815260200160002060009054906101000a900460ff161560086000858481518110610e1e57610e1e6130c9565b602002602001015160ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060086000848381518110610e6757610e676130c9565b602002602001015160ff1660ff16815260200190815260200160002060009054906101000a900460ff16828281518110610ea357610ea36130c9565b9115156020928302919091019091015280610ebd81613098565b915050610dbe565b507f5e69b8fb6404283a560ee2205dc0f225019578c56e3a6c52137e0aa995235b668282604051610ef7929190612d20565b60405180910390a15050565b610f0b6116d4565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907faf855a7e4074e8930caf657b3505942d4ba0e69b6b6e63553c653d7b1ffcc06190600090a35050565b610f656116d4565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907fbc071769e275808816d09db519c1888c355f7557cb63095ce21e26a97a5f0e9c90600090a35050565b610fc76116d4565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907ff2ef974bc2aedf0c322b1a97e8627e85114a789cadf8d172b5efb5d6c1d94f8d90600090a35050565b61102161197d565b600180546001600160a01b0383166001600160a01b031990911681179091556110526000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600260045414156110dd5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610469565b6002600455565b60055460ff16156108d15760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610469565b600754600090819081906001600160a01b03166319fa763a3360a08701356111556020890189612b4d565b61116260e08a018a612f7b565b6040518663ffffffff1660e01b8152600401611182959493929190612ce4565b60206040518083038186803b15801561119a57600080fd5b505afa1580156111ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d29190612b34565b91506111e7610608604086016020870161290f565b15611254578360a00135341461123f5760405162461bcd60e51b815260206004820152601e60248201527f5472616e736974537761703a20696e76616c6964206d73672e76616c756500006044820152606401610469565b61124d60a0850135836122bc565b9250611368565b611264604085016020860161290f565b6006546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a082319060240160206040518083038186803b1580156112a857600080fd5b505afa1580156112bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e09190612b34565b905081611317576113126112fa604086016020870161290f565b60065433906001600160a01b031660a0880135612312565b611368565b61133661132a604086016020870161290f565b33308760a00135612312565b611368611349604086016020870161290f565b6006546001600160a01b031661136360a0880135866122bc565b612442565b9193909250565b606060448351101580156113a8575082600081518110611391576113916130c9565b6020910101516001600160f81b031916600160fb1b145b80156113d95750826001815181106113c2576113c26130c9565b6020910101516001600160f81b03191660c360f81b145b801561140a5750826002815181106113f3576113f36130c9565b6020910101516001600160f81b031916607960f81b145b801561143b575082600381518110611424576114246130c9565b6020910101516001600160f81b031916600560fd1b145b156114c557604483810180519091611453919061301e565b8451101561149b5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103932bb32b93a103932b0b9b7b760591b6044820152606401610469565b82816040516020016114ae929190612c4d565b6040516020818303038152906040529150506115e0565b825160241480156114fb5750826000815181106114e4576114e46130c9565b6020910101516001600160f81b031916602760f91b145b801561152c575082600181518110611515576115156130c9565b6020910101516001600160f81b031916600960fb1b145b801561155d575082600281518110611546576115466130c9565b6020910101516001600160f81b031916607b60f81b145b801561158e575082600381518110611577576115776130c9565b6020910101516001600160f81b031916607160f81b145b156115b3576024830151826115a28261256b565b6040516020016114ae929190612bad565b816115bd84612593565b6040516020016115ce929190612bfc565b60405160208183030381529060405290505b92915050565b60006001600160a01b03821615806115e057506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1492915050565b61162f60a085016080860161290f565b6001600160a01b0316611648606086016040870161290f565b6001600160a01b0316611661604087016020880161290f565b6001600160a01b03167f7055e3d08e2c20429c6b162f3e3bee3f426d59896e66084c3580dc353e54129d33878960a00135878b60c001358a8d61010001358e8060e001906116af9190612f7b565b426040516116c69a99989796959493929190612c82565b60405180910390a450505050565b336116e76002546001600160a01b031690565b6001600160a01b0316146108d15760405162461bcd60e51b815260206004820152602360248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652065786563756044820152623a37b960e91b6064820152608401610469565b604080516000808252602082019092526001600160a01b0384169083906040516117739190612b91565b60006040518083038185875af1925050503d80600081146117b0576040519150601f19603f3d011682016040523d82523d6000602084013e6117b5565b606091505b50509050806108995760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610469565b6000806000856001600160a01b031663a9059cbb86866040516024016118419291906001600160a01b03929092168252602082015260400190565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161187a9190612b91565b6000604051808303816000865af19150503d80600081146118b7576040519150601f19603f3d011682016040523d82523d6000602084013e6118bc565b606091505b50915091508180156118e65750805115806118e65750808060200190518101906118e69190612aa3565b9695505050505050565b6118f86110e4565b6005805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020015b60405180910390a1565b61194361277b565b6005805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602001611931565b336119906000546001600160a01b031690565b6001600160a01b0316146108d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610469565b600180546001600160a01b0319908116909155600080546001600160a01b03848116938216841783556040519116929183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600380546001600160a01b0319908116909155600280546001600160a01b0384811693821684179092556040519116919082907f88436636ea40d5bb1bcc55ff9cd54788af71da886f4147a87f199adcca733d4d90600090a35050565b60008060008415611b4c576007546001600160a01b03166319fa763a3360a0870135611acc6020890189612b4d565b611ad960e08a018a612f7b565b6040518663ffffffff1660e01b8152600401611af9959493929190612ce4565b60206040518083038186803b158015611b1157600080fd5b505afa158015611b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b499190612b34565b91505b611b5f610608604086016020870161290f565b15611bcc578360a001353414611bb75760405162461bcd60e51b815260206004820152601e60248201527f5472616e736974537761703a20696e76616c6964206d73672e76616c756500006044820152606401610469565b611bc560a0850135836122bc565b9250611c49565b8415611c1b57611be561132a604086016020870161290f565b611c16611bf8604086016020870161290f565b611c08608087016060880161290f565b61136360a0880135866122bc565b611c49565b611c49611c2e604086016020870161290f565b33611c3f608088016060890161290f565b8760a00135612312565b611c5c610608606086016040870161290f565b15611d3a578415611c8857611c7760a085016080860161290f565b6001600160a01b0316319050611e26565b6002611c976020860186612b4d565b60ff161415611d3357611cb26101408501610120860161290f565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a08231906024015b60206040518083038186803b158015611cf457600080fd5b505afa158015611d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2c9190612b34565b9050611e26565b5047611e26565b8415611d9a57611d50606085016040860161290f565b6001600160a01b03166370a08231611d6e60a087016080880161290f565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401611cdc565b611daa606085016040860161290f565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b158015611deb57600080fd5b505afa158015611dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e239190612b34565b90505b9250925092565b600080611e43610608606086016040870161290f565b15612062578415611e9d57611e7283611e6260a087016080880161290f565b6001600160a01b031631906122bc565b91508360c00135821015611e985760405162461bcd60e51b815260040161046990612e63565b6122b4565b6002611eac6020860186612b4d565b60ff161415611f6d57611f4b83611ecb6101408701610120880161290f565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a08231906024015b60206040518083038186803b158015611f0d57600080fd5b505afa158015611f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f459190612b34565b906122bc565b9150611f68611f626101408601610120870161290f565b836127c4565b611f7a565b611f7747846122bc565b91505b6007546001600160a01b03166319fa763a3384611f9a6020890189612b4d565b611fa760e08a018a612f7b565b6040518663ffffffff1660e01b8152600401611fc7959493929190612ce4565b60206040518083038186803b158015611fdf57600080fd5b505afa158015611ff3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120179190612b34565b905061202382826122bc565b91508360c001358210156120495760405162461bcd60e51b815260040161046990612e63565b611e9861205c60a086016080870161290f565b83611749565b84156120c657611e728361207c606087016040880161290f565b6001600160a01b03166370a0823161209a60a0890160808a0161290f565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401611ef5565b6120da83611ecb606087016040880161290f565b6007549092506001600160a01b03166319fa763a33846120fd6020890189612b4d565b61210a60e08a018a612f7b565b6040518663ffffffff1660e01b815260040161212a959493929190612ce4565b60206040518083038186803b15801561214257600080fd5b505afa158015612156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217a9190612b34565b905061218682826122bc565b9150600061219a606086016040870161290f565b6001600160a01b03166370a082316121b860a088016080890161290f565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b1580156121f757600080fd5b505afa15801561220b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222f9190612b34565b905061225a612244606087016040880161290f565b61225460a088016080890161290f565b85612442565b61228c8161226e606088016040890161290f565b6001600160a01b03166370a0823161209a60a08a0160808b0161290f565b92508460c001358310156122b25760405162461bcd60e51b815260040161046990612e63565b505b935093915050565b6000826122c98382613055565b91508111156115e05760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b6044820152606401610469565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916123769190612b91565b6000604051808303816000865af19150503d80600081146123b3576040519150601f19603f3d011682016040523d82523d6000602084013e6123b8565b606091505b50915091508180156123e25750805115806123e25750808060200190518101906123e29190612aa3565b61243a5760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b6064820152608401610469565b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161249e9190612b91565b6000604051808303816000865af19150503d80600081146124db576040519150601f19603f3d011682016040523d82523d6000602084013e6124e0565b606091505b509150915081801561250a57508051158061250a57508080602001905181019061250a9190612aa3565b6125645760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657248656c7065723a205452414e534645525f544f4b454e5f46604482015264105253115160da1b6064820152608401610469565b5050505050565b60606115e08260405160200161258391815260200190565b6040516020818303038152906040525b80516060906f181899199a1a9b1b9c1cb0b131b232b360811b906000906125bb906002613036565b6125c690600261301e565b67ffffffffffffffff8111156125de576125de6130df565b6040519080825280601f01601f191660200182016040528015612608576020820181803683370190505b509050600360fc1b81600081518110612623576126236130c9565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612652576126526130c9565b60200101906001600160f81b031916908160001a90535060005b84518110156127735782600486838151811061268a5761268a6130c9565b01602001516001600160f81b031916901c60f81c601081106126ae576126ae6130c9565b1a60f81b826126be836002613036565b6126c990600261301e565b815181106126d9576126d96130c9565b60200101906001600160f81b031916908160001a90535082858281518110612703576127036130c9565b60209101015160f81c600f166010811061271f5761271f6130c9565b1a60f81b8261272f836002613036565b61273a90600361301e565b8151811061274a5761274a6130c9565b60200101906001600160f81b031916908160001a9053508061276b81613098565b91505061266c565b509392505050565b60055460ff166108d15760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610469565b600080836001600160a01b03166000632e1a7d4d856040516024016127eb91815260200190565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516128249190612b91565b60006040518083038185875af1925050503d8060008114612861576040519150601f19603f3d011682016040523d82523d6000602084013e612866565b606091505b50915091508180156128905750805115806128905750808060200190518101906128909190612aa3565b6128dc5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a2057495448445241575f4641494c4544006044820152606401610469565b50505050565b80356001600160a01b03811681146128f957600080fd5b919050565b803560ff811681146128f957600080fd5b60006020828403121561292157600080fd5b61292a826128e2565b9392505050565b6000806040838503121561294457600080fd5b823567ffffffffffffffff81111561295b57600080fd5b8301601f8101851361296c57600080fd5b8035602061298161297c83612ffa565b612fc9565b80838252828201915082850189848660051b88010111156129a157600080fd5b600095505b848610156129cb576129b7816128e2565b8352600195909501949183019183016129a6565b5095506129db90508682016128e2565b93505050509250929050565b600060208083850312156129fa57600080fd5b823567ffffffffffffffff811115612a1157600080fd5b8301601f81018513612a2257600080fd5b8035612a3061297c82612ffa565b80828252848201915084840188868560051b8701011115612a5057600080fd5b600094505b83851015612a7a57612a66816128fe565b835260019490940193918501918501612a55565b50979650505050505050565b600060208284031215612a9857600080fd5b813561292a816130f5565b600060208284031215612ab557600080fd5b815161292a816130f5565b60008060408385031215612ad357600080fd5b823567ffffffffffffffff80821115612aeb57600080fd5b908401906101408287031215612b0057600080fd5b90925060208401359080821115612b1657600080fd5b50830160608186031215612b2957600080fd5b809150509250929050565b600060208284031215612b4657600080fd5b5051919050565b600060208284031215612b5f57600080fd5b61292a826128fe565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008251612ba381846020870161306c565b9190910192915050565b60008351612bbf81846020880161306c565b650a0c2dcd2c6560d31b9083019081528351612be281600684016020880161306c565b602960f81b60069290910191820152600701949350505050565b60008351612c0e81846020880161306c565b670aadcd6dcdeeedc560c31b9083019081528351612c3381600884016020880161306c565b602960f81b60089290910191820152600901949350505050565b60008351612c5f81846020880161306c565b6508ae4e4dee4560d31b9083019081528351612be281600684016020880161306c565b600061012060018060a01b038d1683528b151560208401528a60408401528960608401528860808401528760a08401528660c08401528060e0840152612ccb8184018688612b68565b915050826101008301529b9a5050505050505050505050565b60018060a01b038616815284602082015260ff84166040820152608060608201526000612d15608083018486612b68565b979650505050505050565b604080825283519082018190526000906020906060840190828701845b82811015612d5c57815160ff1684529284019290840190600101612d3d565b5050508381038285015284518082528583019183019060005b81811015612d93578351151583529284019291840191600101612d75565b5090979650505050505050565b6020815260008251806020840152612dbf81604085016020870161306c565b601f01601f19169190910160400192915050565b6020808252602c908201527f5472616e736974537761703a20616d6f756e742073686f756c6420626520677260408201526b06561746572207468616e20360a41b606082015260800190565b60208082526024908201527f5472616e736974537761703a20646174612073686f756c64206265206e6f74206040820152637a65726f60e01b606082015260800190565b60208082526027908201527f5472616e736974537761703a20696e73756666696369656e742072657475726e60408201526608185b5bdd5b9d60ca1b606082015260800190565b60208082526022908201527f5472616e736974537761703a20696e76616c69642063616c6c62797465734465604082015261736360f01b606082015260800190565b6020815260ff612efb836128fe565b16602082015260018060a01b03612f14602084016128e2565b16604082015260006040830135601e19843603018112612f3357600080fd5b8301803567ffffffffffffffff811115612f4c57600080fd5b803603851315612f5b57600080fd5b606080850152612f72608085018260208501612b68565b95945050505050565b6000808335601e19843603018112612f9257600080fd5b83018035915067ffffffffffffffff821115612fad57600080fd5b602001915036819003821315612fc257600080fd5b9250929050565b604051601f8201601f1916810167ffffffffffffffff81118282101715612ff257612ff26130df565b604052919050565b600067ffffffffffffffff821115613014576130146130df565b5060051b60200190565b60008219821115613031576130316130b3565b500190565b6000816000190483118215151615613050576130506130b3565b500290565b600082821015613067576130676130b3565b500390565b60005b8381101561308757818101518382015260200161306f565b838111156128dc5750506000910152565b60006000198214156130ac576130ac6130b3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80151581146108b457600080fdfea26469706673582212202568280db7122de81915bbff6786f79470fb83608b7e6bb39a932810629f779c64736f6c63430008070033000000000000000000000000f7a2f863299c17dfa11cd8a14e7c7dca92f315b90000000000000000000000008755773dc777b9f9b2e2c86402a03f099f8236910000000000000000000000001f6e41c47349634fe261403a18f8515546f58826000000000000000000000000490494393fb90599365c1303e486afe52bbab866
Deployed Bytecode
0x6080604052600436106101395760003560e01c8063afed2d0e116100ab578063c6c465521161006f578063c6c465521461036f578063d63234e01461038f578063dc69bbad146103ad578063e30c3978146103cd578063e8e1bc5d146103eb578063f2fde38b1461040b57600080fd5b8063afed2d0e146102cb578063c10bea5c146102eb578063c34c08e5146102fe578063c3dc51fe1461031c578063c58dff5c1461033c57600080fd5b8063715018a6116100fd578063715018a61461022d57806379ba509714610242578063845b1f77146102575780638da5cb5b1461027a57806394752e821461029857806394d3d793146102b657600080fd5b8063017efb281461017d5780630e8cc7051461019257806351205349146101b25780635c975abb146101e95780635d4fead31461020d57600080fd5b3661017857604080513381523460208201527f7784f8d436dc514f0690e472c7e2d7f660a73e504c69b2350f6be5a5f02432ef910160405180910390a1005b600080fd5b61019061018b366004612ac0565b61042b565b005b34801561019e57600080fd5b506101906101ad366004612931565b61070b565b3480156101be57600080fd5b506007546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101f557600080fd5b5060055460ff165b60405190151581526020016101e0565b34801561021957600080fd5b50610190610228366004612a86565b61089e565b34801561023957600080fd5b506101906108bf565b34801561024e57600080fd5b506101906108d3565b34801561026357600080fd5b5060055461010090046001600160a01b03166101cc565b34801561028657600080fd5b506000546001600160a01b03166101cc565b3480156102a457600080fd5b506006546001600160a01b03166101cc565b3480156102c257600080fd5b50610190610952565b3480156102d757600080fd5b506101906102e636600461290f565b6109d5565b6101906102f9366004612ac0565b610a46565b34801561030a57600080fd5b506002546001600160a01b03166101cc565b34801561032857600080fd5b506101906103373660046129e7565b610d6b565b34801561034857600080fd5b506101fd610357366004612b4d565b60ff9081166000908152600860205260409020541690565b34801561037b57600080fd5b5061019061038a36600461290f565b610f03565b34801561039b57600080fd5b506003546001600160a01b03166101cc565b3480156103b957600080fd5b506101906103c836600461290f565b610f5d565b3480156103d957600080fd5b506001546001600160a01b03166101cc565b3480156103f757600080fd5b5061019061040636600461290f565b610fbf565b34801561041757600080fd5b5061019061042636600461290f565b611019565b61043361108a565b61043b6110e4565b600061044a6040830183612f7b565b9050116104725760405162461bcd60e51b815260040161046990612e1f565b60405180910390fd5b60008260a00135116104965760405162461bcd60e51b815260040161046990612dd3565b6104a6604082016020830161290f565b6001600160a01b03166104bf604084016020850161290f565b6001600160a01b0316146104e55760405162461bcd60e51b815260040161046990612eaa565b60008060006104f38561112a565b600654604051939650919450925060009182916001600160a01b031690869063ccbe400790610526908a90602401612eec565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161055f9190612b91565b60006040518083038185875af1925050503d806000811461059c576040519150601f19603f3d011682016040523d82523d6000602084013e6105a1565b606091505b5091509150816105f2576105d9816040518060400160405280600c81526020016b2a3930b739b4ba29bbb0b81d60a11b81525061136f565b60405162461bcd60e51b81526004016104699190612da0565b5061060d9050610608604087016020880161290f565b6115e6565b6106ec5780610622604087016020880161290f565b6006546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a082319060240160206040518083038186803b15801561066657600080fd5b505afa15801561067a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069e9190612b34565b10156106ec5760405162461bcd60e51b815260206004820152601a60248201527f5472616e736974537761703a20696e76616c69642063726f73730000000000006044820152606401610469565b6106fa85600184600061161f565b5050506107076001600455565b5050565b6107136116d4565b60005b8251811015610899576000610743848381518110610736576107366130c9565b60200260200101516115e6565b156107595750476107548382611749565b610816565b83828151811061076b5761076b6130c9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b1580156107b657600080fd5b505afa1580156107ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ee9190612b34565b9050610814848381518110610805576108056130c9565b60200260200101518483611806565b505b826001600160a01b0316336001600160a01b031685848151811061083c5761083c6130c9565b60200260200101516001600160a01b03167f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f78460405161087e91815260200190565b60405180910390a4508061089181613098565b915050610716565b505050565b6108a66116d4565b80156108b7576108b46118f0565b50565b6108b461193b565b6108c761197d565b6108d160006119e6565b565b33806108e76001546001600160a01b031690565b6001600160a01b0316146109495760405162461bcd60e51b8152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206e6577206f6044820152633bb732b960e11b6064820152608401610469565b6108b4816119e6565b33806109666003546001600160a01b031690565b6001600160a01b0316146109cc5760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206e657720656044820152663c32b1baba37b960c91b6064820152608401610469565b6108b481611a40565b6109dd6116d4565b600380546001600160a01b0383166001600160a01b03199091168117909155610a0e6002546001600160a01b031690565b6001600160a01b03167fdd01547fc40682edc3cd8d164d53f5a1ae6b46138a83f045658ed760823ddba860405160405180910390a350565b610a4e61108a565b610a566110e4565b6000610a656040830183612f7b565b905011610a845760405162461bcd60e51b815260040161046990612e1f565b60008260a0013511610aa85760405162461bcd60e51b815260040161046990612dd3565b6000610aba60a084016080850161290f565b6001600160a01b03161415610b285760405162461bcd60e51b815260206004820152602e60248201527f5472616e736974537761703a2072656365697665722073686f756c642062652060448201526d6e6f74206164647265737328302960901b6064820152608401610469565b60008260c0013511610b9a5760405162461bcd60e51b815260206004820152603560248201527f5472616e736974537761703a206d696e52657475726e416d6f756e742073686f6044820152740756c642062652067726561746572207468616e203605c1b6064820152608401610469565b6000610ba96020830183612b4d565b60ff161415610c0157610bc2604082016020830161290f565b6001600160a01b0316610bdb604084016020850161290f565b6001600160a01b031614610c015760405162461bcd60e51b815260040161046990612eaa565b6000600881610c136020860186612b4d565b60ff908116825260208201929092526040016000908120549091161591508080610c3d8487611a9d565b925092509250600080600560019054906101000a90046001600160a01b03166001600160a01b03168563ccbe400789604051602401610c7c9190612eec565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051610cb59190612b91565b60006040518083038185875af1925050503d8060008114610cf2576040519150601f19603f3d011682016040523d82523d6000602084013e610cf7565b606091505b509150915081610d2f576105d9816040518060400160405280600c81526020016b2a3930b739b4ba29bbb0b81d60a11b81525061136f565b5050600080610d3f868985611e2d565b9150915083811115610d4f578093505b610d5b8887868561161f565b5050505050506107076001600455565b610d736116d4565b6000815167ffffffffffffffff811115610d8f57610d8f6130df565b604051908082528060200260200182016040528015610db8578160200160208202803683370190505b50905060005b8251811015610ec55760086000848381518110610ddd57610ddd6130c9565b602002602001015160ff1660ff16815260200190815260200160002060009054906101000a900460ff161560086000858481518110610e1e57610e1e6130c9565b602002602001015160ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060086000848381518110610e6757610e676130c9565b602002602001015160ff1660ff16815260200190815260200160002060009054906101000a900460ff16828281518110610ea357610ea36130c9565b9115156020928302919091019091015280610ebd81613098565b915050610dbe565b507f5e69b8fb6404283a560ee2205dc0f225019578c56e3a6c52137e0aa995235b668282604051610ef7929190612d20565b60405180910390a15050565b610f0b6116d4565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907faf855a7e4074e8930caf657b3505942d4ba0e69b6b6e63553c653d7b1ffcc06190600090a35050565b610f656116d4565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907fbc071769e275808816d09db519c1888c355f7557cb63095ce21e26a97a5f0e9c90600090a35050565b610fc76116d4565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907ff2ef974bc2aedf0c322b1a97e8627e85114a789cadf8d172b5efb5d6c1d94f8d90600090a35050565b61102161197d565b600180546001600160a01b0383166001600160a01b031990911681179091556110526000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600260045414156110dd5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610469565b6002600455565b60055460ff16156108d15760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610469565b600754600090819081906001600160a01b03166319fa763a3360a08701356111556020890189612b4d565b61116260e08a018a612f7b565b6040518663ffffffff1660e01b8152600401611182959493929190612ce4565b60206040518083038186803b15801561119a57600080fd5b505afa1580156111ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d29190612b34565b91506111e7610608604086016020870161290f565b15611254578360a00135341461123f5760405162461bcd60e51b815260206004820152601e60248201527f5472616e736974537761703a20696e76616c6964206d73672e76616c756500006044820152606401610469565b61124d60a0850135836122bc565b9250611368565b611264604085016020860161290f565b6006546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a082319060240160206040518083038186803b1580156112a857600080fd5b505afa1580156112bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e09190612b34565b905081611317576113126112fa604086016020870161290f565b60065433906001600160a01b031660a0880135612312565b611368565b61133661132a604086016020870161290f565b33308760a00135612312565b611368611349604086016020870161290f565b6006546001600160a01b031661136360a0880135866122bc565b612442565b9193909250565b606060448351101580156113a8575082600081518110611391576113916130c9565b6020910101516001600160f81b031916600160fb1b145b80156113d95750826001815181106113c2576113c26130c9565b6020910101516001600160f81b03191660c360f81b145b801561140a5750826002815181106113f3576113f36130c9565b6020910101516001600160f81b031916607960f81b145b801561143b575082600381518110611424576114246130c9565b6020910101516001600160f81b031916600560fd1b145b156114c557604483810180519091611453919061301e565b8451101561149b5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103932bb32b93a103932b0b9b7b760591b6044820152606401610469565b82816040516020016114ae929190612c4d565b6040516020818303038152906040529150506115e0565b825160241480156114fb5750826000815181106114e4576114e46130c9565b6020910101516001600160f81b031916602760f91b145b801561152c575082600181518110611515576115156130c9565b6020910101516001600160f81b031916600960fb1b145b801561155d575082600281518110611546576115466130c9565b6020910101516001600160f81b031916607b60f81b145b801561158e575082600381518110611577576115776130c9565b6020910101516001600160f81b031916607160f81b145b156115b3576024830151826115a28261256b565b6040516020016114ae929190612bad565b816115bd84612593565b6040516020016115ce929190612bfc565b60405160208183030381529060405290505b92915050565b60006001600160a01b03821615806115e057506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1492915050565b61162f60a085016080860161290f565b6001600160a01b0316611648606086016040870161290f565b6001600160a01b0316611661604087016020880161290f565b6001600160a01b03167f7055e3d08e2c20429c6b162f3e3bee3f426d59896e66084c3580dc353e54129d33878960a00135878b60c001358a8d61010001358e8060e001906116af9190612f7b565b426040516116c69a99989796959493929190612c82565b60405180910390a450505050565b336116e76002546001600160a01b031690565b6001600160a01b0316146108d15760405162461bcd60e51b815260206004820152602360248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652065786563756044820152623a37b960e91b6064820152608401610469565b604080516000808252602082019092526001600160a01b0384169083906040516117739190612b91565b60006040518083038185875af1925050503d80600081146117b0576040519150601f19603f3d011682016040523d82523d6000602084013e6117b5565b606091505b50509050806108995760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610469565b6000806000856001600160a01b031663a9059cbb86866040516024016118419291906001600160a01b03929092168252602082015260400190565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161187a9190612b91565b6000604051808303816000865af19150503d80600081146118b7576040519150601f19603f3d011682016040523d82523d6000602084013e6118bc565b606091505b50915091508180156118e65750805115806118e65750808060200190518101906118e69190612aa3565b9695505050505050565b6118f86110e4565b6005805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020015b60405180910390a1565b61194361277b565b6005805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602001611931565b336119906000546001600160a01b031690565b6001600160a01b0316146108d15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610469565b600180546001600160a01b0319908116909155600080546001600160a01b03848116938216841783556040519116929183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600380546001600160a01b0319908116909155600280546001600160a01b0384811693821684179092556040519116919082907f88436636ea40d5bb1bcc55ff9cd54788af71da886f4147a87f199adcca733d4d90600090a35050565b60008060008415611b4c576007546001600160a01b03166319fa763a3360a0870135611acc6020890189612b4d565b611ad960e08a018a612f7b565b6040518663ffffffff1660e01b8152600401611af9959493929190612ce4565b60206040518083038186803b158015611b1157600080fd5b505afa158015611b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b499190612b34565b91505b611b5f610608604086016020870161290f565b15611bcc578360a001353414611bb75760405162461bcd60e51b815260206004820152601e60248201527f5472616e736974537761703a20696e76616c6964206d73672e76616c756500006044820152606401610469565b611bc560a0850135836122bc565b9250611c49565b8415611c1b57611be561132a604086016020870161290f565b611c16611bf8604086016020870161290f565b611c08608087016060880161290f565b61136360a0880135866122bc565b611c49565b611c49611c2e604086016020870161290f565b33611c3f608088016060890161290f565b8760a00135612312565b611c5c610608606086016040870161290f565b15611d3a578415611c8857611c7760a085016080860161290f565b6001600160a01b0316319050611e26565b6002611c976020860186612b4d565b60ff161415611d3357611cb26101408501610120860161290f565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a08231906024015b60206040518083038186803b158015611cf457600080fd5b505afa158015611d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2c9190612b34565b9050611e26565b5047611e26565b8415611d9a57611d50606085016040860161290f565b6001600160a01b03166370a08231611d6e60a087016080880161290f565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401611cdc565b611daa606085016040860161290f565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b158015611deb57600080fd5b505afa158015611dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e239190612b34565b90505b9250925092565b600080611e43610608606086016040870161290f565b15612062578415611e9d57611e7283611e6260a087016080880161290f565b6001600160a01b031631906122bc565b91508360c00135821015611e985760405162461bcd60e51b815260040161046990612e63565b6122b4565b6002611eac6020860186612b4d565b60ff161415611f6d57611f4b83611ecb6101408701610120880161290f565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a08231906024015b60206040518083038186803b158015611f0d57600080fd5b505afa158015611f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f459190612b34565b906122bc565b9150611f68611f626101408601610120870161290f565b836127c4565b611f7a565b611f7747846122bc565b91505b6007546001600160a01b03166319fa763a3384611f9a6020890189612b4d565b611fa760e08a018a612f7b565b6040518663ffffffff1660e01b8152600401611fc7959493929190612ce4565b60206040518083038186803b158015611fdf57600080fd5b505afa158015611ff3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120179190612b34565b905061202382826122bc565b91508360c001358210156120495760405162461bcd60e51b815260040161046990612e63565b611e9861205c60a086016080870161290f565b83611749565b84156120c657611e728361207c606087016040880161290f565b6001600160a01b03166370a0823161209a60a0890160808a0161290f565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401611ef5565b6120da83611ecb606087016040880161290f565b6007549092506001600160a01b03166319fa763a33846120fd6020890189612b4d565b61210a60e08a018a612f7b565b6040518663ffffffff1660e01b815260040161212a959493929190612ce4565b60206040518083038186803b15801561214257600080fd5b505afa158015612156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217a9190612b34565b905061218682826122bc565b9150600061219a606086016040870161290f565b6001600160a01b03166370a082316121b860a088016080890161290f565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b1580156121f757600080fd5b505afa15801561220b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222f9190612b34565b905061225a612244606087016040880161290f565b61225460a088016080890161290f565b85612442565b61228c8161226e606088016040890161290f565b6001600160a01b03166370a0823161209a60a08a0160808b0161290f565b92508460c001358310156122b25760405162461bcd60e51b815260040161046990612e63565b505b935093915050565b6000826122c98382613055565b91508111156115e05760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b6044820152606401610469565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916123769190612b91565b6000604051808303816000865af19150503d80600081146123b3576040519150601f19603f3d011682016040523d82523d6000602084013e6123b8565b606091505b50915091508180156123e25750805115806123e25750808060200190518101906123e29190612aa3565b61243a5760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b6064820152608401610469565b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161249e9190612b91565b6000604051808303816000865af19150503d80600081146124db576040519150601f19603f3d011682016040523d82523d6000602084013e6124e0565b606091505b509150915081801561250a57508051158061250a57508080602001905181019061250a9190612aa3565b6125645760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657248656c7065723a205452414e534645525f544f4b454e5f46604482015264105253115160da1b6064820152608401610469565b5050505050565b60606115e08260405160200161258391815260200190565b6040516020818303038152906040525b80516060906f181899199a1a9b1b9c1cb0b131b232b360811b906000906125bb906002613036565b6125c690600261301e565b67ffffffffffffffff8111156125de576125de6130df565b6040519080825280601f01601f191660200182016040528015612608576020820181803683370190505b509050600360fc1b81600081518110612623576126236130c9565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612652576126526130c9565b60200101906001600160f81b031916908160001a90535060005b84518110156127735782600486838151811061268a5761268a6130c9565b01602001516001600160f81b031916901c60f81c601081106126ae576126ae6130c9565b1a60f81b826126be836002613036565b6126c990600261301e565b815181106126d9576126d96130c9565b60200101906001600160f81b031916908160001a90535082858281518110612703576127036130c9565b60209101015160f81c600f166010811061271f5761271f6130c9565b1a60f81b8261272f836002613036565b61273a90600361301e565b8151811061274a5761274a6130c9565b60200101906001600160f81b031916908160001a9053508061276b81613098565b91505061266c565b509392505050565b60055460ff166108d15760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610469565b600080836001600160a01b03166000632e1a7d4d856040516024016127eb91815260200190565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516128249190612b91565b60006040518083038185875af1925050503d8060008114612861576040519150601f19603f3d011682016040523d82523d6000602084013e612866565b606091505b50915091508180156128905750805115806128905750808060200190518101906128909190612aa3565b6128dc5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a2057495448445241575f4641494c4544006044820152606401610469565b50505050565b80356001600160a01b03811681146128f957600080fd5b919050565b803560ff811681146128f957600080fd5b60006020828403121561292157600080fd5b61292a826128e2565b9392505050565b6000806040838503121561294457600080fd5b823567ffffffffffffffff81111561295b57600080fd5b8301601f8101851361296c57600080fd5b8035602061298161297c83612ffa565b612fc9565b80838252828201915082850189848660051b88010111156129a157600080fd5b600095505b848610156129cb576129b7816128e2565b8352600195909501949183019183016129a6565b5095506129db90508682016128e2565b93505050509250929050565b600060208083850312156129fa57600080fd5b823567ffffffffffffffff811115612a1157600080fd5b8301601f81018513612a2257600080fd5b8035612a3061297c82612ffa565b80828252848201915084840188868560051b8701011115612a5057600080fd5b600094505b83851015612a7a57612a66816128fe565b835260019490940193918501918501612a55565b50979650505050505050565b600060208284031215612a9857600080fd5b813561292a816130f5565b600060208284031215612ab557600080fd5b815161292a816130f5565b60008060408385031215612ad357600080fd5b823567ffffffffffffffff80821115612aeb57600080fd5b908401906101408287031215612b0057600080fd5b90925060208401359080821115612b1657600080fd5b50830160608186031215612b2957600080fd5b809150509250929050565b600060208284031215612b4657600080fd5b5051919050565b600060208284031215612b5f57600080fd5b61292a826128fe565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008251612ba381846020870161306c565b9190910192915050565b60008351612bbf81846020880161306c565b650a0c2dcd2c6560d31b9083019081528351612be281600684016020880161306c565b602960f81b60069290910191820152600701949350505050565b60008351612c0e81846020880161306c565b670aadcd6dcdeeedc560c31b9083019081528351612c3381600884016020880161306c565b602960f81b60089290910191820152600901949350505050565b60008351612c5f81846020880161306c565b6508ae4e4dee4560d31b9083019081528351612be281600684016020880161306c565b600061012060018060a01b038d1683528b151560208401528a60408401528960608401528860808401528760a08401528660c08401528060e0840152612ccb8184018688612b68565b915050826101008301529b9a5050505050505050505050565b60018060a01b038616815284602082015260ff84166040820152608060608201526000612d15608083018486612b68565b979650505050505050565b604080825283519082018190526000906020906060840190828701845b82811015612d5c57815160ff1684529284019290840190600101612d3d565b5050508381038285015284518082528583019183019060005b81811015612d93578351151583529284019291840191600101612d75565b5090979650505050505050565b6020815260008251806020840152612dbf81604085016020870161306c565b601f01601f19169190910160400192915050565b6020808252602c908201527f5472616e736974537761703a20616d6f756e742073686f756c6420626520677260408201526b06561746572207468616e20360a41b606082015260800190565b60208082526024908201527f5472616e736974537761703a20646174612073686f756c64206265206e6f74206040820152637a65726f60e01b606082015260800190565b60208082526027908201527f5472616e736974537761703a20696e73756666696369656e742072657475726e60408201526608185b5bdd5b9d60ca1b606082015260800190565b60208082526022908201527f5472616e736974537761703a20696e76616c69642063616c6c62797465734465604082015261736360f01b606082015260800190565b6020815260ff612efb836128fe565b16602082015260018060a01b03612f14602084016128e2565b16604082015260006040830135601e19843603018112612f3357600080fd5b8301803567ffffffffffffffff811115612f4c57600080fd5b803603851315612f5b57600080fd5b606080850152612f72608085018260208501612b68565b95945050505050565b6000808335601e19843603018112612f9257600080fd5b83018035915067ffffffffffffffff821115612fad57600080fd5b602001915036819003821315612fc257600080fd5b9250929050565b604051601f8201601f1916810167ffffffffffffffff81118282101715612ff257612ff26130df565b604052919050565b600067ffffffffffffffff821115613014576130146130df565b5060051b60200190565b60008219821115613031576130316130b3565b500190565b6000816000190483118215151615613050576130506130b3565b500290565b600082821015613067576130676130b3565b500390565b60005b8381101561308757818101518382015260200161306f565b838111156128dc5750506000910152565b60006000198214156130ac576130ac6130b3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80151581146108b457600080fdfea26469706673582212202568280db7122de81915bbff6786f79470fb83608b7e6bb39a932810629f779c64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f7a2f863299c17dfa11cd8a14e7c7dca92f315b90000000000000000000000008755773dc777b9f9b2e2c86402a03f099f8236910000000000000000000000001f6e41c47349634fe261403a18f8515546f58826000000000000000000000000490494393fb90599365c1303e486afe52bbab866
-----Decoded View---------------
Arg [0] : transitSwap_ (address): 0xf7A2f863299C17dfA11CD8a14e7c7DCA92f315B9
Arg [1] : transitCross_ (address): 0x8755773dc777B9F9B2E2c86402A03F099F823691
Arg [2] : transitFees_ (address): 0x1F6E41c47349634Fe261403A18F8515546f58826
Arg [3] : executor (address): 0x490494393fb90599365c1303E486AfE52BBab866
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000f7a2f863299c17dfa11cd8a14e7c7dca92f315b9
Arg [1] : 0000000000000000000000008755773dc777b9f9b2e2c86402a03f099f823691
Arg [2] : 0000000000000000000000001f6e41c47349634fe261403a18f8515546f58826
Arg [3] : 000000000000000000000000490494393fb90599365c1303e486afe52bbab866
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
BSC | 63.70% | $0.009053 | 463,360.8915 | $4,194.57 | |
BSC | 5.33% | $0.03002 | 11,694.9809 | $351.08 | |
BSC | 2.55% | $0.006896 | 24,378.326 | $168.12 | |
BSC | 1.57% | $89,125.38 | 0.00115905 | $103.3 | |
BSC | 1.52% | $2.83 | 35.421 | $100.24 | |
BSC | 0.98% | $0.087484 | 735.8915 | $64.38 | |
BSC | 0.94% | $3.95 | 15.719 | $62.02 | |
BSC | 0.86% | $0.000025 | 2,260,737.0381 | $56.77 | |
BSC | 0.63% | $0.999963 | 41.3676 | $41.37 | |
BSC | 0.57% | $0.002589 | 14,465.6247 | $37.46 | |
BSC | 0.53% | $8.39 | 4.1442 | $34.78 | |
BSC | 0.39% | $636.08 | 0.0404 | $25.68 | |
BSC | 0.38% | $83.16 | 0.2983 | $24.81 | |
BSC | 0.30% | $0.642544 | 30.8725 | $19.84 | |
BSC | 0.28% | $21.98 | 0.8512 | $18.71 | |
BSC | 0.25% | $214.99 | 0.0752 | $16.17 | |
BSC | 0.23% | $1.84 | 8.3268 | $15.32 | |
BSC | 0.22% | $0.000205 | 71,936.3708 | $14.71 | |
BSC | 0.22% | <$0.000001 | 15,306,388,863.4125 | $14.7 | |
BSC | 0.22% | $0.002692 | 5,406.1308 | $14.56 | |
BSC | 0.15% | $4.93 | 2.0415 | $10.06 | |
BSC | 0.09% | <$0.000001 | 7,523,285,261.766 | $6.02 | |
BSC | 0.09% | $0.0091 | 626.9752 | $5.71 | |
BSC | 0.09% | $0.161598 | 35.1513 | $5.68 | |
BSC | 0.08% | $5.48 | 0.9691 | $5.31 | |
BSC | 0.08% | $0.998912 | 5.1055 | $5.1 | |
BSC | 0.08% | $0.000001 | 3,951,776.4537 | $4.98 | |
BSC | 0.06% | $0.147903 | 28.9192 | $4.28 | |
BSC | 0.05% | $0.028801 | 124.2614 | $3.58 | |
BSC | 0.05% | $0.000001 | 2,400,000 | $3.09 | |
BSC | 0.04% | <$0.000001 | 71,006,433.1887 | $2.96 | |
BSC | 0.04% | <$0.000001 | 2,822,000,088.2853 | $2.82 | |
BSC | 0.04% | $0.766819 | 3.6027 | $2.76 | |
BSC | 0.04% | <$0.000001 | 67,176,130.8352 | $2.67 | |
BSC | 0.04% | $0.135472 | 18.993 | $2.57 | |
BSC | 0.03% | $7.58 | 0.2815 | $2.13 | |
BSC | 0.03% | $0.000537 | 3,895.9812 | $2.09 | |
BSC | 0.03% | $2.16 | 0.9536 | $2.06 | |
BSC | 0.03% | $0.002329 | 856.1557 | $1.99 | |
BSC | 0.03% | $0.000313 | 6,119.871 | $1.91 | |
BSC | 0.03% | $0.182721 | 9.15 | $1.67 | |
BSC | 0.02% | $0.165511 | 9.7854 | $1.62 | |
BSC | 0.02% | $0.017088 | 74.8046 | $1.28 | |
BSC | 0.02% | $635.7 | 0.00191094 | $1.21 | |
BSC | 0.02% | $13.32 | 0.087 | $1.16 | |
BSC | 0.02% | $0.000001 | 1,094,764.0365 | $1.11 | |
BSC | 0.02% | $0.000416 | 2,639.1934 | $1.1 | |
BSC | 0.02% | $0.004626 | 234.4716 | $1.08 | |
BSC | 0.02% | $0.20131 | 5.3609 | $1.08 | |
BSC | 0.02% | $0.999695 | 1.0493 | $1.05 | |
BSC | 0.02% | <$0.000001 | 477,900,359.0479 | $1.01 | |
BSC | 0.01% | $0.00891 | 107.5923 | $0.9586 | |
BSC | 0.01% | $0.015504 | 55.0945 | $0.8541 | |
BSC | 0.01% | <$0.000001 | 5,187,161.906 | $0.8413 | |
BSC | 0.01% | $0.046028 | 17.0512 | $0.7848 | |
BSC | 0.01% | $3.97 | 0.1857 | $0.7369 | |
BSC | 0.01% | $0.000165 | 4,198.9865 | $0.6948 | |
BSC | 0.01% | $0.062062 | 10.6569 | $0.6613 | |
BSC | <0.01% | $0.001047 | 600 | $0.6283 | |
BSC | <0.01% | $0.002508 | 249.137 | $0.6248 | |
BSC | <0.01% | $0.557751 | 1.0202 | $0.569 | |
BSC | <0.01% | $0.001848 | 300 | $0.5545 | |
BSC | <0.01% | $0.001526 | 300.6277 | $0.4586 | |
BSC | <0.01% | $1 | 0.4298 | $0.4302 | |
BSC | <0.01% | $0.004608 | 92.1331 | $0.4245 | |
BSC | <0.01% | $0.013469 | 30.244 | $0.4073 | |
BSC | <0.01% | $0.029909 | 13.5849 | $0.4063 | |
BSC | <0.01% | $0.001169 | 345.2912 | $0.4036 | |
BSC | <0.01% | $2.93 | 0.1327 | $0.389 | |
BSC | <0.01% | $0.004132 | 93.9645 | $0.3882 | |
BSC | <0.01% | $0.153934 | 2.484 | $0.3823 | |
BSC | <0.01% | $0.008499 | 42.0765 | $0.3576 | |
BSC | <0.01% | $0.001803 | 196.0487 | $0.3535 | |
BSC | <0.01% | $0.101794 | 3.1103 | $0.3166 | |
BSC | <0.01% | $0.033763 | 8.982 | $0.3032 | |
BSC | <0.01% | $0.542463 | 0.5484 | $0.2974 | |
BSC | <0.01% | $0.002696 | 108.9856 | $0.2938 | |
BSC | <0.01% | $0.284548 | 1 | $0.2845 | |
BSC | <0.01% | $0.000115 | 2,212.9919 | $0.2552 | |
BSC | <0.01% | $0.020261 | 12.1653 | $0.2464 | |
BSC | <0.01% | $0.005941 | 39.9045 | $0.237 | |
BSC | <0.01% | $0.000995 | 234.6285 | $0.2335 | |
BSC | <0.01% | <$0.000001 | 71,624,669.4848 | $0.2005 | |
BSC | <0.01% | $0.261965 | 0.754 | $0.1975 | |
BSC | <0.01% | $0.146468 | 1.2404 | $0.1816 | |
BSC | <0.01% | $0.000424 | 426.3924 | $0.1807 | |
BSC | <0.01% | $0.012207 | 14.4614 | $0.1765 | |
BSC | <0.01% | $0.057085 | 3.0362 | $0.1733 | |
BSC | <0.01% | $0.00324 | 53.3311 | $0.1727 | |
BSC | <0.01% | <$0.000001 | 7,036,607.3786 | $0.1706 | |
BSC | <0.01% | $0.005279 | 30.9605 | $0.1634 | |
BSC | <0.01% | $0.011779 | 13.797 | $0.1625 | |
BSC | <0.01% | $0.004563 | 35.5167 | $0.162 | |
BSC | <0.01% | $0.130343 | 1.1524 | $0.1502 | |
BSC | <0.01% | $0.000007 | 22,138.8298 | $0.1467 | |
BSC | <0.01% | $0.000944 | 151.6376 | $0.1432 | |
BSC | <0.01% | $6.86 | 0.0206 | $0.1415 | |
BSC | <0.01% | $0.248755 | 0.54 | $0.1343 | |
BSC | <0.01% | $0.137183 | 0.8996 | $0.1234 | |
BSC | <0.01% | $0.000014 | 8,740.7929 | $0.1223 | |
BSC | <0.01% | $1 | 0.1099 | $0.11 | |
BSC | <0.01% | $0.000207 | 496.382 | $0.1025 | |
POL | 7.86% | $1 | 515.7979 | $517.35 | |
POL | 1.26% | $1 | 83.065 | $83.23 | |
POL | 1.17% | $3,133.37 | 0.0245 | $76.77 | |
POL | 0.57% | $1.89 | 19.9803 | $37.76 | |
POL | 0.28% | $0.274932 | 68.1731 | $18.74 | |
POL | 0.12% | $1 | 7.5798 | $7.59 | |
POL | 0.11% | $0.006354 | 1,173 | $7.45 | |
POL | 0.10% | $0.363881 | 17.6778 | $6.43 | |
POL | <0.01% | $165 | 0.0015114 | $0.2493 | |
POL | <0.01% | $0.048025 | 2.721 | $0.1306 | |
POL | <0.01% | $0.038895 | 2.9269 | $0.1138 | |
POL | <0.01% | <$0.000001 | 6,988,856.8506 | $0.1132 | |
POL | <0.01% | $0.000025 | 4,298.0768 | $0.1079 | |
ETH | 0.95% | $0.000025 | 2,501,064.2832 | $62.8 | |
ETH | 0.36% | $0.001211 | 19,510.5188 | $23.63 | |
ETH | 0.35% | $0.000001 | 22,075,996.1837 | $22.98 | |
ETH | 0.19% | $0.50308 | 24.3226 | $12.24 | |
ETH | 0.14% | $0.000001 | 9,136,558.8462 | $9.41 | |
ETH | 0.14% | $0.370011 | 24.8883 | $9.21 | |
ETH | 0.12% | $1 | 7.7778 | $7.79 | |
ETH | 0.10% | $0.000508 | 13,239.4165 | $6.73 | |
ETH | 0.10% | <$0.000001 | 84,111,742.394 | $6.49 | |
ETH | 0.08% | $0.328754 | 15.6915 | $5.16 | |
ETH | 0.06% | $0.483939 | 8.3846 | $4.06 | |
ETH | 0.06% | $3,131.46 | 0.00123988 | $3.88 | |
ETH | 0.06% | $0.068565 | 55.3536 | $3.8 | |
ETH | 0.04% | $1 | 2.7222 | $2.73 | |
ETH | 0.04% | <$0.000001 | 19,963,276.7667 | $2.65 | |
ETH | 0.03% | $0.000496 | 4,592.8372 | $2.28 | |
ETH | 0.03% | <$0.000001 | 1,382,220,359.3416 | $2.18 | |
ETH | 0.03% | $17.81 | 0.1119 | $1.99 | |
ETH | 0.03% | $0.606262 | 3.1004 | $1.88 | |
ETH | 0.03% | $0.097717 | 17.298 | $1.69 | |
ETH | 0.02% | $1.1 | 1.1192 | $1.23 | |
ETH | 0.02% | $0.03708 | 28.7549 | $1.07 | |
ETH | 0.01% | $0.064441 | 15.2185 | $0.9806 | |
ETH | 0.01% | $16.78 | 0.057 | $0.9564 | |
ETH | 0.01% | $0.005667 | 166.5919 | $0.944 | |
ETH | 0.01% | $0.000998 | 815.771 | $0.8137 | |
ETH | 0.01% | <$0.000001 | 676,392,656.4279 | $0.7953 | |
ETH | 0.01% | $0.001058 | 702.7969 | $0.7432 | |
ETH | 0.01% | $0.00494 | 150 | $0.741 | |
ETH | 0.01% | <$0.000001 | 1,217,810,189.9807 | $0.6911 | |
ETH | <0.01% | $0.011205 | 55 | $0.6162 | |
ETH | <0.01% | $0.276232 | 1.9697 | $0.544 | |
ETH | <0.01% | <$0.000001 | 41,182,281.2616 | $0.5121 | |
ETH | <0.01% | $0.000425 | 1,160.6915 | $0.4928 | |
ETH | <0.01% | $0.00316 | 136.0772 | $0.4299 | |
ETH | <0.01% | $0.000318 | 1,171.8553 | $0.3731 | |
ETH | <0.01% | $0.002909 | 105.4733 | $0.3068 | |
ETH | <0.01% | $0.01575 | 18.5179 | $0.2916 | |
ETH | <0.01% | <$0.000001 | 1,518,523.9146 | $0.2476 | |
ETH | <0.01% | $0.000345 | 333.849 | $0.115 | |
ETH | <0.01% | $0.000409 | 251 | $0.1025 | |
FTM | 0.65% | $0.69889 | 61.5424 | $43.01 | |
FTM | <0.01% | $0.023465 | 7.5 | $0.1759 | |
FTM | <0.01% | <$0.000001 | 726,499.3845 | $0.1164 | |
GLMR | 0.64% | $0.999827 | 42.144 | $42.14 | |
GLMR | <0.01% | $0.171698 | 2.1092 | $0.362147 | |
AVAX | 0.28% | $32.38 | 0.5636 | $18.25 | |
AVAX | 0.15% | $1 | 10.0827 | $10.09 | |
AVAX | 0.10% | $0.999963 | 6.3673 | $6.37 | |
AVAX | 0.03% | $1 | 1.955 | $1.96 | |
AVAX | <0.01% | $0.861015 | 0.6377 | $0.549 | |
AVAX | <0.01% | $0.130336 | 2.4678 | $0.3216 | |
AVAX | <0.01% | $4,707.69 | 0.00005726 | $0.2695 | |
AVAX | <0.01% | $0.614128 | 0.3675 | $0.2256 | |
ARB | 0.07% | <$0.000001 | 12,566,938.1126 | $4.46 | |
ARB | 0.02% | $3,131.95 | 0.00045758 | $1.43 | |
OP | 0.05% | $1.59 | 2.2438 | $3.56 | |
OP | 0.02% | $3,131.55 | 0.00044456 | $1.39 | |
OP | <0.01% | $1 | 0.4363 | $0.4363 |
Loading...
Loading
[ Download: CSV Export ]
[ 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.