Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GSW-1037 apply emit event in contract #217

Merged
merged 10 commits into from
May 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 2 additions & 25 deletions __local/grc20_tokens/bar/bar.gno
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ import (

var (
bar *grc20.AdminToken
admin std.Address = "g13f63ua8uhmuf9mgc0x8zfz04yrsaqh7j78vcgq" // TODO: helper to change admin
admin std.Address = "g13f63ua8uhmuf9mgc0x8zfz04yrsaqh7j78vcgq"
)

func init() {
bar = grc20.NewAdminToken("Bar", "BAR", 6)
bar.Mint(admin, 500_000_000_000_000)
bar.Mint(admin, 100_000_000_000_000)
}

// method proxies as public functions.
Expand Down Expand Up @@ -72,29 +72,6 @@ func TransferFrom(from, to pusers.AddressOrName, amount uint64) {
}
}

// faucet.

func Faucet() {
// FIXME: add limits?
// FIXME: add payment in gnot?
caller := std.PrevRealm().Addr()
err := bar.Mint(caller, 100*1_000_000) // 100M
if err != nil {
panic(err.Error())
}
}

// administration.

func Mint(address pusers.AddressOrName, amount uint64) {
caller := std.PrevRealm().Addr()
assertIsAdmin(caller)
err := bar.Mint(users.Resolve(address), amount)
if err != nil {
panic(err.Error())
}
}

func Burn(address pusers.AddressOrName, amount uint64) {
caller := std.PrevRealm().Addr()
assertIsAdmin(caller)
Expand Down
27 changes: 2 additions & 25 deletions __local/grc20_tokens/baz/baz.gno
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ import (

var (
baz *grc20.AdminToken
admin std.Address = "g13f63ua8uhmuf9mgc0x8zfz04yrsaqh7j78vcgq" // TODO: helper to change admin
admin std.Address = "g13f63ua8uhmuf9mgc0x8zfz04yrsaqh7j78vcgq"
)

func init() {
baz = grc20.NewAdminToken("Baz", "BAZ", 6)
baz.Mint(admin, 500_000_000_000_000)
baz.Mint(admin, 100_000_000_000_000)
}

// method proxies as public functions.
Expand Down Expand Up @@ -72,29 +72,6 @@ func TransferFrom(from, to pusers.AddressOrName, amount uint64) {
}
}

// faucet.

func Faucet() {
// FIXME: add limits?
// FIXME: add payment in gnot?
caller := std.PrevRealm().Addr()
err := baz.Mint(caller, 100*1_000_000) // 100M
if err != nil {
panic(err.Error())
}
}

// administration.

func Mint(address pusers.AddressOrName, amount uint64) {
caller := std.PrevRealm().Addr()
assertIsAdmin(caller)
err := baz.Mint(users.Resolve(address), amount)
if err != nil {
panic(err.Error())
}
}

func Burn(address pusers.AddressOrName, amount uint64) {
caller := std.PrevRealm().Addr()
assertIsAdmin(caller)
Expand Down
27 changes: 2 additions & 25 deletions __local/grc20_tokens/foo/foo.gno
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ import (

var (
foo *grc20.AdminToken
admin std.Address = "g13f63ua8uhmuf9mgc0x8zfz04yrsaqh7j78vcgq" // TODO: helper to change admin
admin std.Address = "g13f63ua8uhmuf9mgc0x8zfz04yrsaqh7j78vcgq"
)

func init() {
foo = grc20.NewAdminToken("Foo", "FOO", 6)
foo.Mint(admin, 500_000_000_000_000)
foo.Mint(admin, 100_000_000_000_000)
}

// method proxies as public functions.
Expand Down Expand Up @@ -72,29 +72,6 @@ func TransferFrom(from, to pusers.AddressOrName, amount uint64) {
}
}

// faucet.

func Faucet() {
// FIXME: add limits?
// FIXME: add payment in gnot?
caller := std.PrevRealm().Addr()
err := foo.Mint(caller, 100*1_000_000) // 100M
if err != nil {
panic(err.Error())
}
}

// administration.

func Mint(address pusers.AddressOrName, amount uint64) {
caller := std.PrevRealm().Addr()
assertIsAdmin(caller)
err := foo.Mint(users.Resolve(address), amount)
if err != nil {
panic(err.Error())
}
}

func Burn(address pusers.AddressOrName, amount uint64) {
caller := std.PrevRealm().Addr()
assertIsAdmin(caller)
Expand Down
29 changes: 3 additions & 26 deletions __local/grc20_tokens/obl/obl.gno
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ import (

var (
obl *grc20.AdminToken
admin std.Address = "g13f63ua8uhmuf9mgc0x8zfz04yrsaqh7j78vcgq" // TODO: helper to change admin
admin std.Address = "g13f63ua8uhmuf9mgc0x8zfz04yrsaqh7j78vcgq"
)

func init() {
obl = grc20.NewAdminToken("Obl", "OBL", 4)
obl.Mint(admin, 500_000_000_000_000)
obl = grc20.NewAdminToken("Obl", "OBL", 6)
obl.Mint(admin, 100_000_000_000_000)
}

// method proxies as public functions.
Expand Down Expand Up @@ -72,29 +72,6 @@ func TransferFrom(from, to pusers.AddressOrName, amount uint64) {
}
}

// faucet.

func Faucet() {
// FIXME: add limits?
// FIXME: add payment in gnot?
caller := std.PrevRealm().Addr()
err := obl.Mint(caller, 100*1_000_000) // 100M
if err != nil {
panic(err.Error())
}
}

// administration.

func Mint(address pusers.AddressOrName, amount uint64) {
caller := std.PrevRealm().Addr()
assertIsAdmin(caller)
err := obl.Mint(users.Resolve(address), amount)
if err != nil {
panic(err.Error())
}
}

func Burn(address pusers.AddressOrName, amount uint64) {
caller := std.PrevRealm().Addr()
assertIsAdmin(caller)
Expand Down
6 changes: 3 additions & 3 deletions __local/grc20_tokens/qux/qux.gno
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ import (

var (
qux *grc20.AdminToken
admin std.Address = "g13f63ua8uhmuf9mgc0x8zfz04yrsaqh7j78vcgq" // TODO: helper to change admin
admin std.Address = "g13f63ua8uhmuf9mgc0x8zfz04yrsaqh7j78vcgq"
)

func init() {
qux = grc20.NewAdminToken("Qux", "QUX", 4)
qux.Mint(admin, 500_000_000_000_000)
qux = grc20.NewAdminToken("Qux", "QUX", 6)
qux.Mint(admin, 100_000_000_000_000)
}

// method proxies as public functions.
Expand Down
1 change: 1 addition & 0 deletions __local/grc20_tokens/register_gnodev/gno.mod
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@ require (
gno.land/r/demo/obl v0.0.0-latest
gno.land/r/demo/pool v0.0.0-latest
gno.land/r/demo/qux v0.0.0-latest
gno.land/r/demo/usdc v0.0.0-latest
gno.land/r/demo/wugnot v0.0.0-latest
)
19 changes: 19 additions & 0 deletions __local/grc20_tokens/register_gnodev/register_gnodev.gno
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"gno.land/r/demo/gns"
"gno.land/r/demo/obl"
"gno.land/r/demo/qux"
"gno.land/r/demo/usdc"
"gno.land/r/demo/wugnot"

pl "gno.land/r/demo/pool"
Expand Down Expand Up @@ -137,6 +138,21 @@ func (WugnotToken) Approve() func(spender pusers.AddressOrName, amount uint64) {
return wugnot.Approve
}

type UsdcToken struct{}

func (UsdcToken) Transfer() func(to pusers.AddressOrName, amount uint64) {
return usdc.Transfer
}
func (UsdcToken) TransferFrom() func(from, to pusers.AddressOrName, amount uint64) {
return usdc.TransferFrom
}
func (UsdcToken) BalanceOf() func(owner pusers.AddressOrName) uint64 {
return usdc.BalanceOf
}
func (UsdcToken) Approve() func(spender pusers.AddressOrName, amount uint64) {
return usdc.Approve
}

func init() {
pl.RegisterGRC20Interface("gno.land/r/demo/foo", FooToken{})
pl.RegisterGRC20Interface("gno.land/r/demo/bar", BarToken{})
Expand All @@ -146,6 +162,7 @@ func init() {
pl.RegisterGRC20Interface("gno.land/r/demo/obl", OblToken{})
pl.RegisterGRC20Interface("gno.land/r/demo/foo20", Foo20Token{})
pl.RegisterGRC20Interface("gno.land/r/demo/wugnot", WugnotToken{})
pl.RegisterGRC20Interface("gno.land/r/demo/usdc", UsdcToken{})

sr.RegisterGRC20Interface("gno.land/r/demo/foo", FooToken{})
sr.RegisterGRC20Interface("gno.land/r/demo/bar", BarToken{})
Expand All @@ -155,6 +172,7 @@ func init() {
sr.RegisterGRC20Interface("gno.land/r/demo/obl", OblToken{})
sr.RegisterGRC20Interface("gno.land/r/demo/foo20", Foo20Token{})
sr.RegisterGRC20Interface("gno.land/r/demo/wugnot", WugnotToken{})
sr.RegisterGRC20Interface("gno.land/r/demo/usdc", UsdcToken{})

rr.RegisterGRC20Interface("gno.land/r/demo/foo", FooToken{})
rr.RegisterGRC20Interface("gno.land/r/demo/bar", BarToken{})
Expand All @@ -164,4 +182,5 @@ func init() {
rr.RegisterGRC20Interface("gno.land/r/demo/obl", OblToken{})
rr.RegisterGRC20Interface("gno.land/r/demo/foo20", Foo20Token{})
rr.RegisterGRC20Interface("gno.land/r/demo/wugnot", WugnotToken{})
rr.RegisterGRC20Interface("gno.land/r/demo/usdc", UsdcToken{})
}
8 changes: 8 additions & 0 deletions __local/grc20_tokens/usdc/gno.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
module gno.land/r/demo/usdc

require (
gno.land/p/demo/grc/grc20 v0.0.0-latest
gno.land/p/demo/ufmt v0.0.0-latest
gno.land/p/demo/users v0.0.0-latest
gno.land/r/demo/users v0.0.0-latest
)
130 changes: 130 additions & 0 deletions __local/grc20_tokens/usdc/usdc.gno
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
package usdc

import (
"std"
"strings"

"gno.land/p/demo/grc/grc20"
"gno.land/p/demo/ufmt"
"gno.land/r/demo/users"

pusers "gno.land/p/demo/users"
)

var (
usdc *grc20.AdminToken
admin std.Address = "g13f63ua8uhmuf9mgc0x8zfz04yrsaqh7j78vcgq"
)

func init() {
usdc = grc20.NewAdminToken("Usd Coin", "USC", 6)
usdc.Mint(admin, 100_000_000_000_000)
}

// method proxies as public functions.
//

// getters.

func TotalSupply() uint64 {
return usdc.TotalSupply()
}

func BalanceOf(owner pusers.AddressOrName) uint64 {
balance, err := usdc.BalanceOf(users.Resolve(owner))
if err != nil {
panic(err.Error())
}
return balance
}

func Allowance(owner, spender pusers.AddressOrName) uint64 {
allowance, err := usdc.Allowance(users.Resolve(owner), users.Resolve(spender))
if err != nil {
panic(err.Error())
}
return allowance
}

// setters.

func Transfer(to pusers.AddressOrName, amount uint64) {
caller := std.PrevRealm().Addr()
err := usdc.Transfer(caller, users.Resolve(to), amount)
if err != nil {
panic(err.Error())
}
}

func Approve(spender pusers.AddressOrName, amount uint64) {
caller := std.PrevRealm().Addr()
err := usdc.Approve(caller, users.Resolve(spender), amount)
if err != nil {
panic(err.Error())
}
}

func TransferFrom(from, to pusers.AddressOrName, amount uint64) {
caller := std.PrevRealm().Addr()
err := usdc.TransferFrom(caller, users.Resolve(from), users.Resolve(to), amount)
if err != nil {
panic(err.Error())
}
}

// faucet.

func Faucet() {
// FIXME: add limits?
// FIXME: add payment in gnot?
caller := std.PrevRealm().Addr()
err := usdc.Mint(caller, 100*1_000_000) // 100M
if err != nil {
panic(err.Error())
}
}

// administration.

func Mint(address pusers.AddressOrName, amount uint64) {
caller := std.PrevRealm().Addr()
assertIsAdmin(caller)
err := usdc.Mint(users.Resolve(address), amount)
if err != nil {
panic(err.Error())
}
}

func Burn(address pusers.AddressOrName, amount uint64) {
caller := std.PrevRealm().Addr()
assertIsAdmin(caller)
err := usdc.Burn(users.Resolve(address), amount)
if err != nil {
panic(err.Error())
}
}

// render.
//

func Render(path string) string {
parts := strings.Split(path, "/")
c := len(parts)

switch {
case path == "":
return usdc.RenderHome()
case c == 2 && parts[0] == "balance":
owner := pusers.AddressOrName(parts[1])
balance, _ := usdc.BalanceOf(users.Resolve(owner))
return ufmt.Sprintf("%d\n", balance)
default:
return "404\n"
}
}

func assertIsAdmin(address std.Address) {
if address != admin {
panic("restricted access")
}
}
Loading
Loading