github.com/igggame/nebulas-go@v2.1.0+incompatible/nf/nvm/test/ERC20.initError.js (about)

     1  // Copyright (C) 2017 go-nebulas authors
     2  //
     3  // This file is part of the go-nebulas library.
     4  //
     5  // the go-nebulas library is free software: you can redistribute it and/or modify
     6  // it under the terms of the GNU General Public License as published by
     7  // the Free Software Foundation, either version 3 of the License, or
     8  // (at your option) any later version.
     9  //
    10  // the go-nebulas library is distributed in the hope that it will be useful,
    11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    13  // GNU General Public License for more details.
    14  //
    15  // You should have received a copy of the GNU General Public License
    16  // along with the go-nebulas library.  If not, see <http://www.gnu.org/licenses/>.
    17  //
    18  
    19  'use strict';
    20  
    21  var StandardToken = function () {
    22      LocalContractStorage.defineProperties(this, {
    23          name: null,
    24          symbol: null,
    25          _totalSupply: null,
    26          totalIssued: null
    27      });
    28      LocalContractStorage.defineMapProperty(this, "balances");
    29  };
    30  
    31  StandardToken.prototype = {
    32      init: function (name, symbol, totalSupply) {
    33          this.name = name;
    34          this.symbol = symbol;
    35          this._totalSupply = totalSupply;
    36          this.totalIssued = 0;
    37          throw 'fail to init';
    38      },
    39      totalSupply: function () {
    40          return this._totalSupply;
    41      },
    42      balanceOf: function (owner) {
    43          return this.balances.get(owner) || 0;
    44      },
    45      transfer: function (to, value) {
    46          var balance = this.balanceOf(msg.sender);
    47          if (balance < value) {
    48              return false;
    49          }
    50  
    51          var finalBalance = balance - value;
    52          this.balances.set(msg.sender, finalBalance);
    53          this.balances.set(to, this.balanceOf(to) + value);
    54          return true;
    55      },
    56      pay: function (msg, amount) {
    57          if (this.totalIssued + amount > this._totalSupply) {
    58              throw new Error("too much amount, exceed totalSupply");
    59          }
    60          this.balances.set(msg.sender, this.balanceOf(msg.sender) + amount);
    61          this.totalIssued += amount;
    62      }
    63  };
    64  
    65  module.exports = StandardToken;