foo1155.gno
2.44 Kb ยท 129 lines
1package foo1155
2
3import (
4 "std"
5
6 "gno.land/p/demo/grc/grc1155"
7 "gno.land/p/demo/ufmt"
8)
9
10var (
11 dummyURI = "ipfs://xyz"
12 admin std.Address = "g10x5phu0k6p64cwrhfpsc8tk43st9kug6wft530"
13 foo = grc1155.NewBasicGRC1155Token(dummyURI)
14)
15
16func init() {
17 mintGRC1155Token(admin) // @administrator (10)
18}
19
20func mintGRC1155Token(owner std.Address) {
21 for i := 1; i <= 10; i++ {
22 tid := grc1155.TokenID(ufmt.Sprintf("%d", i))
23 foo.SafeMint(owner, tid, 100)
24 }
25}
26
27// Getters
28
29func BalanceOf(user std.Address, tid grc1155.TokenID) int64 {
30 balance, err := foo.BalanceOf(user, tid)
31 if err != nil {
32 panic(err)
33 }
34
35 return balance
36}
37
38func BalanceOfBatch(ul []std.Address, batch []grc1155.TokenID) []int64 {
39 balanceBatch, err := foo.BalanceOfBatch(ul, batch)
40 if err != nil {
41 panic(err)
42 }
43
44 return balanceBatch
45}
46
47func IsApprovedForAll(owner, user std.Address) bool {
48 return foo.IsApprovedForAll(owner, user)
49}
50
51// Setters
52
53func SetApprovalForAll(user std.Address, approved bool) {
54 err := foo.SetApprovalForAll(user, approved)
55 if err != nil {
56 panic(err)
57 }
58}
59
60func TransferFrom(from, to std.Address, tid grc1155.TokenID, amount int64) {
61 err := foo.SafeTransferFrom(from, to, tid, amount)
62 if err != nil {
63 panic(err)
64 }
65}
66
67func BatchTransferFrom(from, to std.Address, batch []grc1155.TokenID, amounts []int64) {
68 err := foo.SafeBatchTransferFrom(from, to, batch, amounts)
69 if err != nil {
70 panic(err)
71 }
72}
73
74// Admin
75
76func Mint(to std.Address, tid grc1155.TokenID, amount int64) {
77 caller := std.OriginCaller()
78 assertIsAdmin(caller)
79 err := foo.SafeMint(to, tid, amount)
80 if err != nil {
81 panic(err)
82 }
83}
84
85func MintBatch(to std.Address, batch []grc1155.TokenID, amounts []int64) {
86 caller := std.OriginCaller()
87 assertIsAdmin(caller)
88 err := foo.SafeBatchMint(to, batch, amounts)
89 if err != nil {
90 panic(err)
91 }
92}
93
94func Burn(from std.Address, tid grc1155.TokenID, amount int64) {
95 caller := std.OriginCaller()
96 assertIsAdmin(caller)
97 err := foo.Burn(from, tid, amount)
98 if err != nil {
99 panic(err)
100 }
101}
102
103func BurnBatch(from std.Address, batch []grc1155.TokenID, amounts []int64) {
104 caller := std.OriginCaller()
105 assertIsAdmin(caller)
106 err := foo.BatchBurn(from, batch, amounts)
107 if err != nil {
108 panic(err)
109 }
110}
111
112// Render
113
114func Render(path string) string {
115 switch {
116 case path == "":
117 return foo.RenderHome()
118 default:
119 return "404\n"
120 }
121}
122
123// Util
124
125func assertIsAdmin(address_XXX std.Address) {
126 if address_XXX != admin {
127 panic("restricted access")
128 }
129}