1package grc20
2
3import (
4 "std"
5)
6
7// token implements the Token interface.
8//
9// It is generated with Banker.Token().
10// It can safely be exposed publicly.
11type token struct {
12 banker *Banker
13}
14
15// var _ Token = (*token)(nil)
16func (t *token) GetName() string { return t.banker.name }
17func (t *token) GetSymbol() string { return t.banker.symbol }
18func (t *token) GetDecimals() uint { return t.banker.decimals }
19func (t *token) TotalSupply() uint64 { return t.banker.totalSupply }
20
21func (t *token) BalanceOf(owner std.Address) uint64 {
22 return t.banker.BalanceOf(owner)
23}
24
25func (t *token) Transfer(to std.Address, amount uint64) error {
26 caller := std.PrevRealm().Addr()
27 return t.banker.Transfer(caller, to, amount)
28}
29
30func (t *token) Allowance(owner, spender std.Address) uint64 {
31 return t.banker.Allowance(owner, spender)
32}
33
34func (t *token) Approve(spender std.Address, amount uint64) error {
35 caller := std.PrevRealm().Addr()
36 return t.banker.Approve(caller, spender, amount)
37}
38
39func (t *token) TransferFrom(from, to std.Address, amount uint64) error {
40 spender := std.PrevRealm().Addr()
41 if err := t.banker.SpendAllowance(from, spender, amount); err != nil {
42 return err
43 }
44 return t.banker.Transfer(from, to, amount)
45}
token.gno
1.20 Kb ยท 45 lines