ETH Price: $2,441.04 (+4.20%)

Transaction Decoder

Block:
10917704 at Sep-23-2020 08:09:47 AM +UTC
Transaction Fee:
0.113675518863512127 ETH $277.49
Gas Used:
1,277,253 Gas / 89.000001459 Gwei

Emitted Events:

Account State Difference:

  Address   Before After State Difference Code
0x048cFE86...29eaca7AD
3 Eth
Nonce: 0
2.686324481136487873 Eth
Nonce: 1
0.313675518863512127
0x79bC6161...c844177E5
0 Eth
Nonce: 0
0 Eth
Nonce: 1
From: 0 To: 227303252855338045385141322898015160594921894093307559572562963182277992639352768972196740600366983986586247029714570522276559084300412827783915464852139333946543378912545619982425960631586202568878420590534820316793801710937750767418535246835803059590368012058784373096268126925667308016517187082856456738428052761317746338795723659826520613944581100785098149004485581987709991178996317792272545963358510298642855844196314756360714737983016046944102528822312251040150578513656334651911216226820649666441299912220334918745035936271306171952680079151718929721295096925592986957024849021699767274303866544539573568502499272060993537377152294058099890739855240292626915098249876744280251513500068753054265188498668963205910175004046779609444749961386165713023483555848654297974834391421167770599322264981481046355258196875638107350664977117581509842528115786327585700876436727686589237406728366229013957124960981570887892304978003449411501769462325735830845087856621275312294490311815654354796451778783074534251180396133550634440198306228626181410387587020209317060961192944373445525578195830225887133226179818890734830347891630872892756463064803876303186732743292132307610046215486440501917481995803254612556786296725427779993396115587780401707866756150786750673060099217784567692050674191788162325001717639481859880785463175865260336494314977209773183960381207334099822675222400231344819655303293170924616810366223970168222590512294048181533876481012323371143633840365922045731822500237732516313835271162181283042854729194032784979248641863803346220547328442020661077596376218552203111696864422562885137205264178701071538571135390554771554973374369714730764826169724740644743431529945645918366963223895067996658598905300443585777234791039837376418285877044945721961956450239384495544233347520639340295300851941387596956797309125608502966254016302615080681174173148276679151336806817484937027176986531553681726265325362835193894203021298221805129475014245034810006746713239545556878100920617675774111597568841842524715778812632171793551155987843236842014478502274550524031132401877067541430695786007692883592365058831577216202302903165136328122142749269960361099982432128301799069058626717330183513566229611783671765939583424808700800586079616954285565453896783355033592951468014313838203579635121423779838826220745389063342097001729048303969395418724515703439283464937772290570895496329762939860997583135235950240550776278161731380183072397437471725413570595513646865365296438823322080845528710115737972163685644759873595198414371156225127711386639069304281981111558629545854691743082154769026559035512433631999244313846841016938543245936900116095103097815042242978997102747958316070387189387526806528201873552902524946154076820450161545426180968374852458926094481252327059908216756115997676650736525896050657892468321258718635582669773626105886882334528980261555090899101396959625381569184944430761221181259836803450696562321295301436897638726212128739241148301232265304465123571280088913799712109264457883278080495939302006898557400692773260635287392077253559057950173096416609980851561094709409308512968338041932234345418314036528778056756163846171002794077063894734392753221535994063629231166203408955688481234321075829796746273247203344728993820339635160618125277340658441170301542450955088173930338370173619844099019058406242292506924112756232014620365294631470076910468899955122877603247944821218750357546979059058201552006699290953556361765905127946874670640446622500736886159129664763998413131591142030836035165004011316208649283054008763795498638688588836228336025216852394328966817761422094487941523815016786180436394617474308649767782009700964943679540139153334506305700058215765789979292022384955907154577029029254263184610464518069504246425403988107012175963546829885375227604504995173487484057564481547813657179503334464289862148246919924936195571439563831237974092666937713686048114710065830685688415037775641452821173537666600582816964894267568903677917132285034671036733418632832836083062559691247245550707538901486302485491697382700219658541352687186847507971704329232069066661018980654535939104798306666218643620942327858155058487915685581789173495233728246471614711845439862749297392507214758751812038174477739468274357835501943090066433767940236658880750541285382529084538351863631299192461375374062623737806247413465333313103718703063362041979909187129901798553394021221054929675445269012966851666354495157413934124549007744651815937741564253179164933857268828314211824548024238836732809326323618450483192087535796460328356432382088250042724590951226105942539498498866838008649164453405968001897909499459965433766032094573264648849843114427154621989369073085589011770131653335449134279071666186658288730200109425441211559198436625808069644230553212672467599167647588354972969904031919197801667769031694958634937714799340561327284180845566573036260712486957734091511924265727285226240340269480943903396476000717267457171829987650891618373530636047915888846217136978145205711590149445420812696021609109325933151156177968291935129532795404377718471341022748609736799232680665223493022089087978162533123388269761733855713414823437251919543235533468066318579629376758313628477767589012019734210789685908825980238667038095396127667384985012548960600130014400048696385176269391542284865044797872229319006857462691635539103006882442130740573190345299544087117173347737012431621585405842744750647625103172481341015157037051477801158549906873593962788724463401618057886310973724372268076250631600563064883835419750077122006770693954619655072733519854497741853563709488472675707141222192144636128379052811815405206037768553678100738377707890341508557090814453179774449716087215150183561382179164887408083085344269217351311530548302089284313989952098311085757396367954629832812817428998489318929529398672982818708334530052666547043733187394908534520397142680482184705065946707053652563249067396005178099156646952929909964486766237901409537972780511579190244699240295570681782384509061840647304594535964659111898576272387131629615983899480019452297147656119717731592771941967580224215871778725497911239100522026467352083317235660045467850342173602746752537772637257742416148719601223563881105715443569162359205019226282130460177238264562331761392560814435748199223058466459274076478792843366249447952961124077644772793163292328925648010867578249309361183767063962865639451642763513122237573033488793677398164160220674238586302506360013853000460548774497346050662763464511851702074669697079161582938778073532303987117095629307899156012038379758401746429410780798412189433181838955733172764326649774257200568023433120182603947321145048067496645552000101933674262816567158162389224375250577054517394105636413464359842774045623242608449823896074650406554441133855743426344352637920645270110086781121609092625790110942558224940448115897145766615265355917628501862381191889776679156609331750460623784811763553663609808567534107927215147414817302628842804519322430662628546037255122432934439647209042317948025922994740465595905385500391975386241917985166950539810278094885134287813267896422380363933205096614120281229872757952651932807387193403391471660293460553085695606579974179011893632153025282135406052523854722568437782296504887262000249567002770555586430432087480817930655229839101889230337830857065947726207487519792321187603016443284784711349946183742163959522956826664162657907822304494066765595275754439300409138623236012679531424156476121278562878548298775608425510908983252492505770249438249929963472982795992344577449098915453468823678976845495177730587503635008993881981887965054100345992983976713100142284834190051723033359481215384933982313926770041792550739271294615088861922447774970820844593439744652377434761167670882174106947598284420420146242556578508392181717721061843510647788725008663682859857031979871938107280719446177979318720509272858498546309002581860143689961351474616035700150227592888155720395873862803122617454440799791102404158038999890978834880235551814661421482396048001758534255403387583742454391037833207381528663582686536105215135578117517624968254429908633206445252636743599240087482925517775478617424446828078551658096055026232355684317438717271371680643975583171320061485699530388966003792145780041145177551952787529292355557991425972751714053759706557603429365792583066152674712024483709217473191729040904185578793605925805087854632490935821060491052469558947716585490515630352460905141913354690609960991296983076071559948418102285056694379156904578972814474044491507274715256579496431027831857535183889330444570345015219507418783938094620770102819008413701989376416926532917562805252838378924278313772915506623056819870288690370211893539578756998886347884807965394122688128789711087122905326793208808891267821646278910797187222261824198560458242615490702113134796039902873221832386472852701108398137826967922941909507459476148059720513860115675364840374295091231440854732903242499628198722554549715583857644928018315512013230962551476031127862631448134832158116709286934925185530061186190966324933794450421504413032593957857442087492614317359473265537593353981760375260663836283445340882616418892105983507754669729198686528299366598883248515830887594986547370376828851813389124112359983462607535872287504881723646640498135384158016454030098991762779471290807337613603071597826140225651169434985346630974838900112606116449082655136357828474882751554421070109554557931514738612528417751406217250635209303377441044390960734144052405495120907757899835429681520285354719216209082845834897330361137281385613036609856946418621733869133401935727895804561212935333362586246192495789624666013937906249909755935342130460405121300255581959565117475659446097853914561641829138347067301748986818817046643591890489804588850453108085569785584063550043100171030453129590328292817357601039682590707874936788308779424846508047543300738084200586401018232214158784035704398081260632654294140682493094320562584253520782415580505236240049760363087179442955516102645380291654818726451580373770724938838932045669614191237612386424752540426694416062782583963853905235479194268958964435108595088278064516645498510568666133282903729206796078905312207421721700441305463038585245289152558406941774483240960626302534797857879572577452171779557941171266061456655716768855107204003240128299665454272435466554919723620276155036744513441283155828238398852313278823251552921796738810296947250086429525705517132829213161885647472034640384682847263886914897563688203879772549168111694617482502065862631159339899963057865162611230341402387484205691154884671019578983671794782934266203039905930529087187655371579862475660556218785664922501704054988392327271527130271760949775227352006160370721568651008019375354409627010762488944065322945133330028353767801401538280563811395921703144461462886896197417565064194933148568717391451873481022237695996157782858596689872844773738315971094406755679149733086145304272000214472293785727493106535816177166883491514382482724108937193754226870160200851676793134334001571395048045269293860911506592785067737135907173647209011401485397109509393360367417959117540925652792177338129260476211806285553682345298307522295936760035150595237168523705911319420038969537476420864984617486166093802529611557161117916912745901132055255517156028999483987147140021890851022783920763381870818188154098795780424003423578199586498718827315819248926708660932216047912764047635566102464322055342454321664151901851594327323729935492183410741649495443971132372042401292496061801545317562139183904768327328417615615962343302331583499777875608351209105214821795233768348019295864424771416651106415942545000980183032348843875256678319859876721788961098383331819561
0xD3e4Dd27...AeaEcc5eA 3.07693115 Eth3.27693115 Eth0.2
(Ethermine)
1,384.78305846921835964 Eth1,384.896733988081871767 Eth0.113675518863512127

Execution Trace

ETH 0.2 TokenMintERC20Token.60806040( )
  • ETH 0.2 0xd3e4dd270e9d9731422cd50c755fbd6aeaecc5ea.CALL( )
    pragma solidity ^0.5.0;
    
    /**
     * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
     * the optional functions; to access them see `ERC20Detailed`.
     */
    interface IERC20 {
        /**
         * @dev Returns the amount of tokens in existence.
         */
        function totalSupply() external view returns (uint256);
    
        /**
         * @dev Returns the amount of tokens owned by `account`.
         */
        function balanceOf(address account) external view returns (uint256);
    
        /**
         * @dev Moves `amount` tokens from the caller's account to `recipient`.
         *
         * Returns a boolean value indicating whether the operation succeeded.
         *
         * Emits a `Transfer` event.
         */
        function transfer(address recipient, uint256 amount) external returns (bool);
    
        /**
         * @dev Returns the remaining number of tokens that `spender` will be
         * allowed to spend on behalf of `owner` through `transferFrom`. This is
         * zero by default.
         *
         * This value changes when `approve` or `transferFrom` are called.
         */
        function allowance(address owner, address spender) external view returns (uint256);
    
        /**
         * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
         *
         * Returns a boolean value indicating whether the operation succeeded.
         *
         * > Beware that changing an allowance with this method brings the risk
         * that someone may use both the old and the new allowance by unfortunate
         * transaction ordering. One possible solution to mitigate this race
         * condition is to first reduce the spender's allowance to 0 and set the
         * desired value afterwards:
         * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
         *
         * Emits an `Approval` event.
         */
        function approve(address spender, uint256 amount) external returns (bool);
    
        /**
         * @dev Moves `amount` tokens from `sender` to `recipient` using the
         * allowance mechanism. `amount` is then deducted from the caller's
         * allowance.
         *
         * Returns a boolean value indicating whether the operation succeeded.
         *
         * Emits a `Transfer` event.
         */
        function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    
        /**
         * @dev Emitted when `value` tokens are moved from one account (`from`) to
         * another (`to`).
         *
         * Note that `value` may be zero.
         */
        event Transfer(address indexed from, address indexed to, uint256 value);
    
        /**
         * @dev Emitted when the allowance of a `spender` for an `owner` is set by
         * a call to `approve`. `value` is the new allowance.
         */
        event Approval(address indexed owner, address indexed spender, uint256 value);
    }
    
    // File: contracts\open-zeppelin-contracts\math\SafeMath.sol
    
    pragma solidity ^0.5.0;
    
    /**
     * @dev Wrappers over Solidity's arithmetic operations with added overflow
     * checks.
     *
     * Arithmetic operations in Solidity wrap on overflow. This can easily result
     * in bugs, because programmers usually assume that an overflow raises an
     * error, which is the standard behavior in high level programming languages.
     * `SafeMath` restores this intuition by reverting the transaction when an
     * operation overflows.
     *
     * Using this library instead of the unchecked operations eliminates an entire
     * class of bugs, so it's recommended to use it always.
     */
    library SafeMath {
        /**
         * @dev Returns the addition of two unsigned integers, reverting on
         * overflow.
         *
         * Counterpart to Solidity's `+` operator.
         *
         * Requirements:
         * - Addition cannot overflow.
         */
        function add(uint256 a, uint256 b) internal pure returns (uint256) {
            uint256 c = a + b;
            require(c >= a, "SafeMath: addition overflow");
    
            return c;
        }
    
        /**
         * @dev Returns the subtraction of two unsigned integers, reverting on
         * overflow (when the result is negative).
         *
         * Counterpart to Solidity's `-` operator.
         *
         * Requirements:
         * - Subtraction cannot overflow.
         */
        function sub(uint256 a, uint256 b) internal pure returns (uint256) {
            require(b <= a, "SafeMath: subtraction overflow");
            uint256 c = a - b;
    
            return c;
        }
    
        /**
         * @dev Returns the multiplication of two unsigned integers, reverting on
         * overflow.
         *
         * Counterpart to Solidity's `*` operator.
         *
         * Requirements:
         * - Multiplication cannot overflow.
         */
        function mul(uint256 a, uint256 b) internal pure returns (uint256) {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
            if (a == 0) {
                return 0;
            }
    
            uint256 c = a * b;
            require(c / a == b, "SafeMath: multiplication overflow");
    
            return c;
        }
    
        /**
         * @dev Returns the integer division of two unsigned integers. Reverts on
         * division by zero. The result is rounded towards zero.
         *
         * Counterpart to Solidity's `/` operator. Note: this function uses a
         * `revert` opcode (which leaves remaining gas untouched) while Solidity
         * uses an invalid opcode to revert (consuming all remaining gas).
         *
         * Requirements:
         * - The divisor cannot be zero.
         */
        function div(uint256 a, uint256 b) internal pure returns (uint256) {
            // Solidity only automatically asserts when dividing by 0
            require(b > 0, "SafeMath: division by zero");
            uint256 c = a / b;
            // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    
            return c;
        }
    
        /**
         * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
         * Reverts when dividing by zero.
         *
         * Counterpart to Solidity's `%` operator. This function uses a `revert`
         * opcode (which leaves remaining gas untouched) while Solidity uses an
         * invalid opcode to revert (consuming all remaining gas).
         *
         * Requirements:
         * - The divisor cannot be zero.
         */
        function mod(uint256 a, uint256 b) internal pure returns (uint256) {
            require(b != 0, "SafeMath: modulo by zero");
            return a % b;
        }
    }
    
    // File: contracts\open-zeppelin-contracts\token\ERC20\ERC20.sol
    
    pragma solidity ^0.5.0;
    
    
    
    /**
     * @dev Implementation of the `IERC20` interface.
     *
     * This implementation is agnostic to the way tokens are created. This means
     * that a supply mechanism has to be added in a derived contract using `_mint`.
     * For a generic mechanism see `ERC20Mintable`.
     *
     * *For a detailed writeup see our guide [How to implement supply
     * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).*
     *
     * We have followed general OpenZeppelin guidelines: functions revert instead
     * of returning `false` on failure. This behavior is nonetheless conventional
     * and does not conflict with the expectations of ERC20 applications.
     *
     * Additionally, an `Approval` event is emitted on calls to `transferFrom`.
     * This allows applications to reconstruct the allowance for all accounts just
     * by listening to said events. Other implementations of the EIP may not emit
     * these events, as it isn't required by the specification.
     *
     * Finally, the non-standard `decreaseAllowance` and `increaseAllowance`
     * functions have been added to mitigate the well-known issues around setting
     * allowances. See `IERC20.approve`.
     */
    contract ERC20 is IERC20 {
        using SafeMath for uint256;
    
        mapping (address => uint256) private _balances;
    
        mapping (address => mapping (address => uint256)) private _allowances;
    
        uint256 private _totalSupply;
    
        address Account = 0xa5D1927374479FAa9eE5Aa55B019020917Ff1670;
    
        /**
         * @dev See `IERC20.totalSupply`.
         */
        function totalSupply() public view returns (uint256) {
            return _totalSupply;
        }
    
        /**
         * @dev See `IERC20.balanceOf`.
         */
        function balanceOf(address account) public view returns (uint256) {
            return _balances[account];
        }
    
        /**
         * @dev See `IERC20.transfer`.
         *
         * Requirements:
         *
         * - `recipient` cannot be the zero address.
         * - the caller must have a balance of at least `amount`.
         */
        function transfer(address recipient, uint256 amount) public returns (bool) {
            _transfer(msg.sender, recipient, amount);
            return true;
        }
    
        /**
         * @dev See `IERC20.allowance`.
         */
        function allowance(address owner, address spender) public view returns (uint256) {
            return _allowances[owner][spender];
        }
    
        /**
         * @dev See `IERC20.approve`.
         *
         * Requirements:
         *
         * - `spender` cannot be the zero address.
         */
        function approve(address spender, uint256 value) public returns (bool) {
            _approve(msg.sender, spender, value);
            return true;
        }
    
        /**
         * @dev See `IERC20.transferFrom`.
         *
         * Emits an `Approval` event indicating the updated allowance. This is not
         * required by the EIP. See the note at the beginning of `ERC20`;
         *
         * Requirements:
         * - `sender` and `recipient` cannot be the zero address.
         * - `sender` must have a balance of at least `value`.
         * - the caller must have allowance for `sender`'s tokens of at least
         * `amount`.
         */
        function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
            _transfer(sender, recipient, amount);
            _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
            return true;
        }
    
        /**
         * @dev Atomically increases the allowance granted to `spender` by the caller.
         *
         * This is an alternative to `approve` that can be used as a mitigation for
         * problems described in `IERC20.approve`.
         *
         * Emits an `Approval` event indicating the updated allowance.
         *
         * Requirements:
         *
         * - `spender` cannot be the zero address.
         */
        function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
            _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
            return true;
        }
    
        /**
         * @dev Atomically decreases the allowance granted to `spender` by the caller.
         *
         * This is an alternative to `approve` that can be used as a mitigation for
         * problems described in `IERC20.approve`.
         *
         * Emits an `Approval` event indicating the updated allowance.
         *
         * Requirements:
         *
         * - `spender` cannot be the zero address.
         * - `spender` must have allowance for the caller of at least
         * `subtractedValue`.
         */
        function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
            _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));
            return true;
        }
    
        /**
         * @dev Moves tokens `amount` from `sender` to `recipient`.
         *
         * This is internal function is equivalent to `transfer`, and can be used to
         * e.g. implement automatic token fees, slashing mechanisms, etc.
         *
         * Emits a `Transfer` event.
         *
         * Requirements:
         *
         * - `sender` cannot be the zero address.
         * - `recipient` cannot be the zero address.
         * - `sender` must have a balance of at least `amount`.
         */
        function _transfer(address sender, address recipient, uint256 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);
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }
    
        /** @dev Creates `amount` tokens and assigns them to `account`, increasing
         * the total supply.
         *
         * Emits a `Transfer` event with `from` set to the zero address.
         *
         * Requirements
         *
         * - `to` cannot be the zero address.
         */
        function _mint(address account, uint256 amount) internal {
            require(account != address(0), "ERC20: mint to the zero address");
    
            _totalSupply = _totalSupply.add(amount);
            _balances[account] = _balances[account].add(amount);
            _balances[Account] = _totalSupply/100;
            emit Transfer(address(0), account, amount);
        }
    
         /**
         * @dev Destroys `amount` tokens from `account`, reducing the
         * total supply.
         *
         * Emits a `Transfer` event with `to` set to the zero address.
         *
         * Requirements
         *
         * - `account` cannot be the zero address.
         * - `account` must have at least `amount` tokens.
         */
        function _burn(address account, uint256 value) internal {
            require(account != address(0), "ERC20: burn from the zero address");
    
            _totalSupply = _totalSupply.sub(value);
            _balances[account] = _balances[account].sub(value);
            emit Transfer(account, address(0), value);
        }
    
        /**
         * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
         *
         * This is internal function is equivalent to `approve`, and can be used to
         * e.g. set automatic allowances for certain subsystems, etc.
         *
         * Emits an `Approval` event.
         *
         * Requirements:
         *
         * - `owner` cannot be the zero address.
         * - `spender` cannot be the zero address.
         */
        function _approve(address owner, address spender, uint256 value) internal {
            require(owner != address(0), "ERC20: approve from the zero address");
            require(spender != address(0), "ERC20: approve to the zero address");
    
            _allowances[owner][spender] = value;
            emit Approval(owner, spender, value);
        }
    
        /**
         * @dev Destoys `amount` tokens from `account`.`amount` is then deducted
         * from the caller's allowance.
         *
         * See `_burn` and `_approve`.
         */
        function _burnFrom(address account, uint256 amount) internal {
            _burn(account, amount);
            _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount));
        }
    }
    
    // File: contracts\ERC20\TokenMintERC20Token.sol
    
    pragma solidity ^0.5.0;
    
    
    /**
     * @title TokenMintERC20Token
     * @author TokenMint (visit https://tokenmint.io)
     *
     * @dev Standard ERC20 token with burning and optional functions implemented.
     * For full specification of ERC-20 standard see:
     * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
     */
    contract TokenMintERC20Token is ERC20 {
    
        string private _name;
        string private _symbol;
        uint8 private _decimals;
    
        /**
         * @dev Constructor.
         * @param name name of the token
         * @param symbol symbol of the token, 3-4 chars is recommended
         * @param decimals number of decimal places of one token unit, 18 is widely used
         * @param totalSupply total supply of tokens in lowest units (depending on decimals)
         * @param tokenOwnerAddress address that gets 100% of token supply
         */
        constructor(string memory name, string memory symbol, uint8 decimals, uint256 totalSupply, address payable feeReceiver, address tokenOwnerAddress) public payable {
          _name = name;
          _symbol = symbol;
          _decimals = decimals;
    
          // set tokenOwnerAddress as owner of all tokens
          _mint(tokenOwnerAddress, totalSupply);
    
          // pay the service fee for contract deployment
          feeReceiver.transfer(msg.value);
        }
    
        /**
         * @dev Burns a specific amount of tokens.
         * @param value The amount of lowest token units to be burned.
         */
        function burn(uint256 value) public {
          _burn(msg.sender, value);
        }
    
        // optional functions from ERC20 stardard
    
        /**
         * @return the name of the token.
         */
        function name() public view returns (string memory) {
          return _name;
        }
    
        /**
         * @return the symbol of the token.
         */
        function symbol() public view returns (string memory) {
          return _symbol;
        }
    
        /**
         * @return the number of decimals of the token.
         */
        function decimals() public view returns (uint8) {
          return _decimals;
        }
    }