ETH Price: $1,873.20 (-1.96%)

Transaction Decoder

Block:
11560548 at Dec-31-2020 07:33:30 AM +UTC
Transaction Fee:
0.176771793 ETH $331.13
Gas Used:
1,716,231 Gas / 103 Gwei

Account State Difference:

  Address   Before After State Difference Code
(Spark Pool)
9.787919467682992275 Eth9.964691260682992275 Eth0.176771793
0x85401969...E5ecC4C35
0 Eth
Nonce: 0
0 Eth
Nonce: 1
From: 0 To: 2948747680503477936591180050445015675158211631774723525640327589497411391432387283212111127303606804781440740024741531792797626801239856543797435316531280697715063554089750140039583983626041976675174852727310431548738572147962996554903685334593314989349574020695236219969637811077402457765984690217701356902857895784776473790037896964303854598370031852818171168076803836226819478317151154959914714833337286408976163353110690132297404368227406150295590929238881403446442076957942244283269652777258405907261732005999963789862198606346665298111873026076347445103240784887342914845144245945580877657965743349331772342874746491837715080410366171173014450611894638046748819761003820219626677218201592618384905722903258789312675355258850927900644173554502076674667015736622708663984935768232165035630392601210537456054489984190150267119925163230162248192781564324834068406044683971701128976266478133888709166749376979784368638861487951401948379655265260941622984485559826831786706803252811768499242522795823683910406018483420360173977095653152093907710177791090286842787173263619751528489478061655310533970284659472031874914506633378040378609244731650979886485149035932051963968295967901205442495201095933675614071232377146134596840621026145653075178246398267860599461663928038449127337953715204565014180842352540773145653850389858293883133505471549495598860641741811392485541811376902323500687225112541952450643438679445516027744195887484872010678933154457958839509029303104046545537910936929218119773662559331508675721308695381839439726536585745685943175759453854768129634025398890159690068426496634720658165448534203070532624130165583832628314945824099045223360966590466505912900122894017248024355455980550549032310850363905337553328480663579964471989678233024856267443666754286176672410331934324311047057271458095679359990338825851731669554426608238177190277853574036574922629330588607525689676255989834317933383237354970755199610010815608105148925435546237544757605226074826376348660994906323900400374794785111953447498290989032789836788575508569948856684107470172705734655253216938877215004808048820216522609591719054885154093651036554448110774789499524742746793639690760839512937470439416690969656941028989945808108565214791739169819788029623548044122404600295480506843505191500014474241538903188177943276631089332270299410447216657886915698911317648895110782821844330542049896513175847308933150716927695009729350397300590494176705419595778958755113376018516587281961771011249768704245275563808231846462414186243432274456482465808752052768836487305834606961344421524779523917879263096931287843522981631848483549105629375930542994704205496104645188054061231957794850019975943303145045483990035431779669326850553230451815207450357455058223091028718745209482724096894143418787468449479209309066579029409191860286939686936496236718738261115030836059989646292221374648036345348185672439834744314535235263773239454350965446230014449328936670410603262462615350745245179856955059303142914294107616979816323190633398311690473566675374421170398504668002261534605717741511791181220135758480123871307085780743823662435660153642490567857011204837556774072759629664228569334348412884551620345930722626470577929733519618045504796139070866745498797287359107388630370383899789922327226253329743722251687015759051893337953010009206057890010447258305598940237933226479951189411253188755718610342637156338546397772060438913372899469360704830871860985207137791128181051446747036525930123503517510969162468654194835748721362041672730882760761372943166550261130164609909048514074594287853683261415403241840455475265567114900453795906669054350519248745505008704928673388905024229908826133166153958526177763951413641827089233902540926039520516422767457063923549516297013045401691557311217654019470487421361139129025856895514790301336474625740556322099694584719301503011248339170247242662533491673844373235341301180905037035400096802926056201938265970005378747635819390527171511250371605473491936364438924090962593520162461478147604553718408492807866102253509994477839225752975876007070795641634879113279475718718905265330772405332192965914154997027828438977067376975210299715694847231835198523299710080645117087453272153321871499073526259700129128759689844461058869277516660475237009892756658019792832613437133184984122838114999120119696751250360862246807912795194323915827861986235210941405753213762340525840444089506923669552285116216895492375564577978240754985044518607865005054995345560654495063795907374265851905185990422321416808987036058937167333792750281362470826554083637931033370852371871161453619097632614284784457514815340977436567993394635054028237369439672922345783899608043474950544103852858776937036779150792342578567677594792896624458337620016908939422862443539337820991375767110274927430354877669920817262936273966430119800488932935048094535332671420678251216987990211052856982746367064892252854146705592890246289629253925100314345030388615213821860671237264253830781211658405247711409711892761710673899351798849371878035559819905300575402264972549021966081626510576056113622194517022767196691656563635070327532027318474535246559499434075155662664419115840500826034688449966079373032768846745470816260767855095936783752372765609882060764328537639910978047960389675908349506210214227635556153470510955565490727795351274581091659441712026284992905399181524678090827048220885850408021572773141610767827566339669601991278695247595423416140969061993579018807132301409225001673039063202789357733453620654352400753128110724968944649494195666241901629789372069923427376229789319113507282462474630314530747406727323935161717040327963097803651285933936238636088969008131722187640650522108716222124636813555799694258270135913878466754481590992379954931481639776147392569868916629402379847621153267886215874711033517398719100750169400492943232439189765126609573304185463979301993542664429124578692866607287978530646617067175758689217560980767670354517726532091281640153824589640265445382906752001257456960181114399947869915213521485359777862786874905442527772657764474066243550537975934659541148056560664737664156028557898877248082553594782005885338645628840192407336774483823626888242437335905136498530987943231559166524514185564611648901361570801305512725542682890929834655311938496111659400980366499197938218901506854601695693367657467027387942841774049414738901568446137289267605499570929767144595289130405178647763994591444243504342320363020486870228316351548457609645687938855580741235590503757258962964169678200944351799647599839900982846681989291478004451693324347520719251323791160294928115469301054006408053073999575472521721489234691493764843129068870729723987561121464690979148776467419510208599037082423047225124882854252320533673621149493687045906602055016572902641230886970417974995659779139429590001580842617195550827458295826976070060416981210198017491740733869894188213387528399441158647369061092323289409833330716038816367262580167363702848675056137006657759269483822175596965011177009904840530435795496825530814420951426108223413279840726485885223648576373132833572649169531044830914403983335060160287439031958332545769639313607491984309205982239941885762509194450162766839907048155197628133632351081057842373410423610939023175696456190980969776487895086473577843164178854858925108383519312948563762498137612246684034277701814311289744593095215323992236917039095148810668117270278838232225237851873412625926814692019537507342975194306046077774599826871741023358323906134194863911359806112001219013340350551537756506243201018057513022392868499803760290021844348235789759631115303864390671912643680540007874700965198359213598012522487830288693038782878976952288537441266416305639139311171513008914017726526643391185793392178897085665909236293031055916363681068604137194517947837318789906528647612623599950779869127141668495613869389117281860137235311198344099459509171338929315187094065017171047893759003943330759483976450631456161345623447331740943244040773321723990322640465841047481193437564860574109417070321493108429439659554276938094782731852499501258744044285528941983409670961618269489506551404263031883835045498902535931367059426908896844858303617834505798706954861111133418287378826955171449656439901698498235973516846750490173801624172032175590388265372641540596592701429735499777192564296085317625754025290680161904617365970046947364942184104705238949558956931198250703402272115548790239359223432212572648369098972969498337747537000264750228835373407802065619322575155962243814727299375477200554197650301271775753340602782857233311545194781014560925492604188640568350548891235785483860851450924803949721718396249609672188472238579314398330323392105034088357587049006844506065813629953846434719735979564872763366577546452104043083493988992421377475664771011569802510876864698951497657180071612967186668220979406463453340324089953717402057466928707072395039179502532972542471479710503426522359748973005655304252668310733333173127758046688182257582415945645029557501679829314403523400318939964549211044324301194996436572975414472999165461718807360609609491263027029029503517773969585974524673906635835092923162249793975135499588845276060664940763664744448518931055536894647962405341059428211972675992548735254118755673571935833407486396433497949309175688084888697831192478662745465316692313249702704666450422842780750830991954009193373290830471709224301756228190185558532708885593554452433932613554458128430173396382253319533530597896708309190099571038921229021018151542932075083506198448783553699188141777058736014157781540113130296443933437887996572432429404156636105676353202207873097043821261897452618000716631038683338667488377497566475261846112452758501215191871388005595606753894573791677273660077983896393544334267435714476822451997645343532833338447432903945163263359318851423382514584932135629730148406480836924147043372454204364530677069696823554915715129336966388462627489711273591286749516576660071161762262653167237833189213036523490338146399092742952442010102254666367878156310437848278137924315615562555996120330291736630213649859611417898280773135794179553362631312121820126734964232025185899210428491444944178290036552781586474636890897666528686049128421221445333815531611075248884730294933677932622902470566543968664836991220222797794261621923124236972913340750702577989844862909622287554387480243720790053851713121329555826113059869810936989236984278993069638991967013559790653918710414580850662991931648636561922441005121042617427541958621512300876028454466982761779680411354573725181358815432378692671650461162870110372253756247991731621027116986887056521447001111074800454671594647721589961537263524206719793356446932674691292695531069124152824174955472998169046922758551834945421522540295967207740369830001126767860111816609729613898962352817989751289702755376319405295182056777876655798272653857122705188661893279644635830766462295108085170774899024428237158973425632604372261315063145728560211696349982364714552754081923674117729024924529923423858262505473380380066876211621582390495466457297410119431403131376547288527174233314852600567191768467847163294514490681651873359853216913312538275842658205744540112149823189435869644112700758722985847918768548546315636392501209972502217032904478388457497168128499975974503212434401157719298115035930203270188822900348931335587785593461417612009908560177684224518284350159250820494543143643086270804053488433313290353545258723957059950417142033205927711742412396317674573579403439994582267238041919986846968077202511438451953376452744521383274821085024550526202870718731829741264112707138319820932942096792470743102252843535103891103202916406904738644870936345374663824256449110728227231437273732142732482166939054902224123386929413264523754131449160217195471218003665735593507204698437905862308102961183368507057632544732194818049945073161368989316110722512730578182926347240668754176966474536631273595902592962018502378173113123646655986289251419451897058357687987953736498414769331911267922505475841421473451049195730893109649770251075328641719872040796645064637872165855483565750439239105835007358895874318671709756471045259890913343599422767693681370749678161596065323154448975992863920609880610352236538212567653302888251021131676808283335398846010238105773934322837900825526922558641012510671708667663411331232118095662266768824443737422268938901773800614054983629354698520362252044883986385958570134865289166250688970953313475526642157919402612536913729351298503794765781347998038924029810252379552811115812523777408581702422674156916992272901360711845651906310984060290207642295495428783460423292097102893635995054943080212846627437809751050025787508461012835392356042152885797476640336867119707055234237200383141928414153082759553699438543305861420900196112191261035876888071909557888667427349627753097278849283187935585845939762419720244209977554450203910301772173255352521797861824446951821306694074914753179794691295338418834489095539714034107931484393074920107888475888944208953810486674159644880220573953918841155381097162321479464022916561978839619841553129655278250135943264970645039539400375963007223882824677081816502263201800253171103554029266449385675699127926368375999051296906352172444224845903326792894382814764115280333208535737026158875507013325636173900075736494709810424854383901821292407937013732400337794514714066939731633018440293090213499434558734430743127882190292205942463551916398464084745466827561766377789570644516168222307982992768246849865109148572152748334051008552637847492190879537484693024065870668829787944636802597640332929427105206431121822353667779790689116522722895094953703415504577523408710619974488694634558739232433941639919722916000253378990883026861874517128212936524586007740950301522612647891673319658874432929307355672111769130666938963184926783451282058169222153800631012863217092100955941085334838197981709389699806554903281317300951529013692348113884126753728834605198076697105846972509835814988053688817512746718518146387316490037356656179218831632257550651593086345322606213619046615561781154848808724155814238988687389309001380559145395769584428242914636280288131398191012249807241752823497094389103360923551220840554432304538036838972065270328444881787489358237716943163594695640707941270384952756057140793883134077991140136403611275587831708845245681766992657860318926756057198177725380114680432031123803070011245810329842483484426358439093515487423437962120932935742548792246389087614997672486824710358524241378661919066418428566249512757613322211570327046924477731979784673989522454321578897498200806994344442931869949456032645394894982108492561276461190650877419182310158897308742713624605242308552801002733687378331964318887403316840277352915734848664705337175971381858730397818477684814476508268996720435417784087756877167256906679041965788383916483234247196754617349281192156151129811859757355000790124254204116522718216388567453874958462774289609768638005630581583913633186797896348027634218272075118874331953029160828038890353559077254862762982577496739106593869401007842383364533785763733523805604526075082729725995068291630529951974295054234027931389065689216973768193296970603143882983457201193461883868187168649938480880088594567444043039449789364367418809755227167333487443999374968634074545665405881460416611628101427021654998014465303188397769827430557727588544198990155983791081992233699358074465295123833399345449618721609026757685303806642917337235269005289822002883159016660566264824912595889466143920446336880479902377696232523729951315664302565547301595198779967080919256227560893005754560910847423045641420775412264509309775646636808485884879351062758137201496302902425801246223697404958095467752365600480048377549755309463907846258906560640509919684492910115155688248588090561202004276283424738697483378498276306320166942781297936171436571165859615506612172041641592203504309788740864215889006856504214713755637712019290611341500302852932960322082579009059533840215648665216190403689585480046378444163056384811482579225662507762249974102321333203983575535964927501376072041071038699517741053718246571178583853033454834281408162301637226295944288120576061442025431646360550670202958647148975609971168837303242958278549121703005842416414282663605265982363476462860895726229905455613205999543564229682670768856364802974129125276278148510870962362488415387559543253735601336507944753416961252049244074194178218360936912677113385054077092620462548586646124590450746054317714688416969669494702380992719180725481929603188475191950416362533981011882928536032646634497927182491411746315220628033725413051313251548992001344120179373989621159730512578999604132661575156889271832228553890010233925561628402119071816907348242825446441469680450785985221171390497663129345450784527256863105341949999635989721253329460592490859528735267222069263033316771135336385017730571877192988268848133058591044939011485550637138508433903913092758265149050413570891814341275163398926296401308407335714633019094377105973311077318268201295365201833266618055652488010382501270503068773049707080314350545934494421113705730001942572167935081110709916085914015622021025607695426562791886589233759710633679886643754546096586993319806092993928719249373636708415025495928057295489659686775310984961174128072059823059042680243107130325874001228367970490004139180820304857844296883453929258738059608726927024147177419469596955280797962881007446148184464883378158847038039792541451489560489163444799836379110938667215092966717256922331915798213209583322808103588583551162190821265510636176276013254249054942662203817293522297226420182310433521889968915915214952941043336593817761282004482993770380799405403813279082565906589577995399738981371360795613588009304542402748205512269312377548226304034685498001282168768869856476087075416068932149877715159257969497027808067634
0xAE2c8C4C...aEC64223f
4.182172955120868143 Eth
Nonce: 14
4.005401162120868143 Eth
Nonce: 15
0.176771793

Execution Trace

PACM.60806040( )
/**
 *Submitted for verification at Etherscan.io on 2020-07-26
*/

pragma solidity 0.5.16;

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);
}

contract Context {
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }
}

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) external view returns (uint) {
        return _balances[account];
    }
    function transfer(address recipient, uint amount) external returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) external view returns (uint) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint amount) external returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint amount) external 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) external returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint subtractedValue) external 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");

        _beforeTokenTransfer(sender, recipient, amount);

        _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");

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

        _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");

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

        _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);
    }

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

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() external view returns (string memory) {
        return _name;
    }
    function symbol() external view returns (string memory) {
        return _symbol;
    }
    function decimals() external view returns (uint8) {
        return _decimals;
    }

}

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 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);
    }
}

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");
        }
    }
}

/**
 * Token
 */
pragma solidity 0.5.16;

contract PACM is ERC20, ERC20Detailed {
    using SafeERC20 for IERC20;
    using Address for address;
    using SafeMath for uint;

    address public governance;
    address public pendingGov;

    mapping (address => bool) public minters;

    event NewPendingGov(address oldPendingGov, address newPendingGov);

    event NewGov(address oldGov, address newGov);

    // Modifiers
    modifier onlyGov() {
        require(msg.sender == governance, "You are not the governance");
        _;
    }

    constructor () public ERC20Detailed("Pacman.top", "PACM", 18) {
        governance = tx.origin;
    }

    /** 
     * Minte Token for Account
     * @param _account minter
     * @param _amount amount
     */
    function mint(address _account, uint256 _amount) external {
        require(minters[msg.sender], "You are not the minter");
        _mint(_account, _amount);
    }
    
    /** 
     * Add minter
     * @param _minter minter
     */
    function addMinter(address _minter) external onlyGov {
        minters[_minter] = true;
    }
    
    /** 
     * Remove minter
     * @param _minter minter
     */
    function removeMinter(address _minter) external onlyGov {
        minters[_minter] = false;
    }

    /** 
     * Set new governance
     * @param _pendingGov the new governance
     */
    function setPendingGov(address _pendingGov)
        external
        onlyGov
    {
        address oldPendingGov = pendingGov;
        pendingGov = _pendingGov;
        emit NewPendingGov(oldPendingGov, _pendingGov);
    }

    /** 
     * lets msg.sender accept governance
     */
    function acceptGov()
        external {
        require(msg.sender == pendingGov, "You are not the pending governance");
        address oldGov = governance;
        governance = pendingGov;
        pendingGov = address(0);
        emit NewGov(oldGov, governance);
    }

    /**
     * @dev See {ERC20-_beforeTokenTransfer}.
     *
     * Requirements:
     *
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal {
        super._beforeTokenTransfer(from, to, amount);
    }
}