Skip to content

Commit c371fd6

Browse files
committed
GSW-595 chore: update wugnot
1 parent b839698 commit c371fd6

File tree

1 file changed

+31
-16
lines changed

1 file changed

+31
-16
lines changed

Diff for: _setup/wugnot/wugnot.gno

+31-16
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
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+
110
package wugnot
211

312
import (
@@ -14,19 +23,21 @@ import (
1423
var (
1524
wugnot *grc20.AdminToken
1625
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")
1730
)
1831

1932
func init() {
2033
wugnot = grc20.NewAdminToken("WrappedUGNOT", "WUGNOT", 6)
2134

2235
// for swap
2336
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
3041
)
3142

3243
wugnot.Approve(lp01, poolAddr, 50000000000)
@@ -124,43 +135,47 @@ func assertIsAdmin(address std.Address) {
124135
// WRAP & UNWRAP
125136
func Wrap(address users.AddressOrName, amount uint64) {
126137
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")
129140
}
130141

131142
wugnot.Mint(address.Resolve(), amount) // mint to user
132-
// wugnot.Mint(std.PrevRealm().Addr(), amount) // mint to contract
133143
}
134144

135145
func Unwrap(address users.AddressOrName, amount uint64) {
136146
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")
139149
}
140150

141151
wugnot.Burn(address.Resolve(), amount) // burn from user
142-
// wugnot.Burn(std.PrevRealm().Addr(), amount) // burn from contract
143152
}
144153

145154
func Transfer(to users.AddressOrName, amount uint64) {
146155
caller := std.PrevRealm().Addr()
156+
if !(caller == poolAddr || caller == posAddr || caller == routerAddr) {
157+
panic("only pool, position, router contract can transfer")
158+
}
147159
err := wugnot.Transfer(caller, to.Resolve(), amount)
148160
if err != nil {
149161
panic(err.Error())
150162
}
151163
}
152164

153-
func Approve(spender users.AddressOrName, amount uint64) {
165+
func TransferFrom(from, to users.AddressOrName, amount uint64) {
154166
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)
156171
if err != nil {
157172
panic(err.Error())
158173
}
159174
}
160175

161-
func TransferFrom(from, to users.AddressOrName, amount uint64) {
176+
func Approve(spender users.AddressOrName, amount uint64) {
162177
caller := std.PrevRealm().Addr()
163-
err := wugnot.TransferFrom(caller, from.Resolve(), to.Resolve(), amount)
178+
err := wugnot.Approve(caller, spender.Resolve(), amount)
164179
if err != nil {
165180
panic(err.Error())
166181
}

0 commit comments

Comments
 (0)