github.com/n1ghtfa1l/go-vnt@v0.6.4-alpha.6/core/wavm/tests/qlang/erc20.q (about)

     1  program PERC20 do
     2    contract ERC20 do
     3      store moneys: Ĝ Map, [I32, U64]
     4      #store approved: Ĝ Map, [I32 * I32, U64]
     5      api decimals do
     6        8_i32
     7      end
     8      api totalSupply do
     9        1234567890123456_u64
    10      end
    11      api balanceOf(u: I32) do
    12        @moneys[u]
    13      end
    14      api transfer(to: I32, val: U64) do
    15        if @moneys[0] < val
    16          false
    17        else
    18          @moneys[0] -= val
    19          @moneys[to] += val
    20          true
    21        end
    22      end
    23      #api transferFrom(from: I32, to: I32, val: I64) do
    24      #  x = @approved[ME]
    25      #  return false unless x && x[from] >= val && @moneys[from] >= val
    26      #  x[from] -= val
    27      #  @moneys[from] -= val
    28      #  @moneys[to] += val
    29      #  return true
    30      #end
    31      #api approve(spender: I32, val: I64) do
    32      #  (@approved[ME] ||= Map(I32, U64).new)[spender] = val
    33      #end
    34      #api allowance(owner: I32, spender: I32) do
    35      #  x = @approved[owner]
    36      #  x || x[spender]
    37      #end
    38    end
    39  end