1
+ // ** IMPORTANT **
2
+ /*
3
+ This realm is meant to be support swapping between GRC20 tokens and native coins.
4
+ It is not meant to be used as a standalone token.
5
+ User can not call transfer not transferFrom only gnoswap can.
6
+
7
+ All of admin related funcitons and Facuet() will be removed in the future.
8
+ */
9
+
1
10
package wugnot
2
11
3
12
import (
@@ -14,19 +23,21 @@ import (
14
23
var (
15
24
wugnot *grc20.AdminToken
16
25
admin std.Address = "g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5" // TODO: helper to change admin
26
+
27
+ poolAddr = std.DerivePkgAddr("gno.land/r/pool")
28
+ posAddr = std.DerivePkgAddr("gno.land/r/position")
29
+ routerAddr = std.DerivePkgAddr("gno.land/r/router")
17
30
)
18
31
19
32
func init() {
20
33
wugnot = grc20.NewAdminToken("WrappedUGNOT", "WUGNOT", 6)
21
34
22
35
// for swap
23
36
var (
24
- lp01 = testutils.TestAddress("lp01") // Liquidity Provider 01
25
- lp02 = testutils.TestAddress("lp02") // Liquidity Provider 02
26
- lp03 = testutils.TestAddress("lp03") // Liquidity Provider 03
27
- tr01 = testutils.TestAddress("tr01") // Trader 01
28
- poolAddr = std.DerivePkgAddr("gno.land/r/pool")
29
- posAddr = std.DerivePkgAddr("gno.land/r/position")
37
+ lp01 = testutils.TestAddress("lp01") // Liquidity Provider 01
38
+ lp02 = testutils.TestAddress("lp02") // Liquidity Provider 02
39
+ lp03 = testutils.TestAddress("lp03") // Liquidity Provider 03
40
+ tr01 = testutils.TestAddress("tr01") // Trader 01
30
41
)
31
42
32
43
wugnot.Approve(lp01, poolAddr, 50000000000)
@@ -124,43 +135,47 @@ func assertIsAdmin(address std.Address) {
124
135
// WRAP & UNWRAP
125
136
func Wrap(address users.AddressOrName, amount uint64) {
126
137
caller := std.PrevRealm().Addr()
127
- if !(caller == std.DerivePkgAddr("gno.land/r/pool") || caller == std.DerivePkgAddr("gno.land/r/position") ) {
128
- panic("only pool, position contract can wrap")
138
+ if !(caller == poolAddr || caller == posAddr || caller == routerAddr ) {
139
+ panic("only pool, position, router contract can wrap")
129
140
}
130
141
131
142
wugnot.Mint(address.Resolve(), amount) // mint to user
132
- // wugnot.Mint(std.PrevRealm().Addr(), amount) // mint to contract
133
143
}
134
144
135
145
func Unwrap(address users.AddressOrName, amount uint64) {
136
146
caller := std.PrevRealm().Addr()
137
- if !(caller == std.DerivePkgAddr("gno.land/r/pool") || caller == std.DerivePkgAddr("gno.land/r/position") ) {
138
- panic("only pool, position contract can unwrap")
147
+ if !(caller == poolAddr || caller == posAddr || caller == routerAddr ) {
148
+ panic("only pool, position, router contract can unwrap")
139
149
}
140
150
141
151
wugnot.Burn(address.Resolve(), amount) // burn from user
142
- // wugnot.Burn(std.PrevRealm().Addr(), amount) // burn from contract
143
152
}
144
153
145
154
func Transfer(to users.AddressOrName, amount uint64) {
146
155
caller := std.PrevRealm().Addr()
156
+ if !(caller == poolAddr || caller == posAddr || caller == routerAddr) {
157
+ panic("only pool, position, router contract can transfer")
158
+ }
147
159
err := wugnot.Transfer(caller, to.Resolve(), amount)
148
160
if err != nil {
149
161
panic(err.Error())
150
162
}
151
163
}
152
164
153
- func Approve(spender users.AddressOrName, amount uint64) {
165
+ func TransferFrom(from, to users.AddressOrName, amount uint64) {
154
166
caller := std.PrevRealm().Addr()
155
- err := wugnot.Approve(caller, spender.Resolve(), amount)
167
+ if !(caller == poolAddr || caller == posAddr || caller == routerAddr) {
168
+ panic("only pool, position, router contract can transferFrom")
169
+ }
170
+ err := wugnot.TransferFrom(caller, from.Resolve(), to.Resolve(), amount)
156
171
if err != nil {
157
172
panic(err.Error())
158
173
}
159
174
}
160
175
161
- func TransferFrom(from, to users.AddressOrName, amount uint64) {
176
+ func Approve(spender users.AddressOrName, amount uint64) {
162
177
caller := std.PrevRealm().Addr()
163
- err := wugnot.TransferFrom (caller, from.Resolve(), to .Resolve(), amount)
178
+ err := wugnot.Approve (caller, spender .Resolve(), amount)
164
179
if err != nil {
165
180
panic(err.Error())
166
181
}
0 commit comments