Realm
gno.land/r/nym-thegnomic001/otc
Overview
Realm Path
gno.land/r/nym-thegnomic001/otc
Exported Functions
18
State Entries
68
Source Files
7
Total Package Entries
118
Exported Functions
18 exported functions
State
68 state entries
Source Code
FILES
admin.gno
go
1package otc
2
3import (
4 "chain"
5 "strconv"
6
7 "gno.land/r/nt/grc20reg/v0"
8)
9
10// The admin's whole reach (A1). None of these touches an offer or an escrow
11// (A3); every one refuses coins (S2) and emits an event.
12
13// AddToken whitelists a token by its grc20reg key, enabled (W2).
14func AddToken(cur realm, key string) {
15 requireAdmin(cur)
16 if grc20reg.Get(key) == nil {
17 panic(ErrTokenUnknown)
18 }
19 if tokens.Has(key) {
20 panic(ErrTokenExists)
21 }
22 if tokens.Size() >= maxTokens {
23 panic(ErrTooManyTokens)
24 }
25 tokens.Set(key, true)
26 chain.Emit(EventTokenChanged, "token", key, "enabled", "true")
27}
28
29// SetTokenEnabled switches new offers on a token on or off. Open offers on a
30// disabled token can still be filled and cancelled (W2).
31func SetTokenEnabled(cur realm, key string, enabled bool) {
32 requireAdmin(cur)
33 if !tokens.Has(key) {
34 panic(ErrTokenNotListed)
35 }
36 tokens.Set(key, enabled)
37 chain.Emit(EventTokenChanged, "token", key, "enabled", strconv.FormatBool(enabled))
38}
39
40// SetFeeBps sets the default fee for NEW offers (F4, F5).
41func SetFeeBps(cur realm, bps int64) {
42 requireAdmin(cur)
43 requireFee(bps)
44 feeBps = bps
45 chain.Emit(EventFeeChanged, "fee_bps", strconv.FormatInt(bps, 10))
46}
47
48// SetGnomicFee turns the reduced GNOMIC fee on or off and sets it (F6).
49func SetGnomicFee(cur realm, enabled bool, bps int64) {
50 requireAdmin(cur)
51 requireFee(bps)
52 gnomicFeeOn = enabled
53 gnomicFee = bps
54 chain.Emit(EventFeeChanged,
55 "gnomic_fee_enabled", strconv.FormatBool(enabled),
56 "gnomic_fee_bps", strconv.FormatInt(bps, 10))
57}
58
59// SetFeeRecipient changes where fees go.
60func SetFeeRecipient(cur realm, to address) {
61 requireAdmin(cur)
62 if !to.IsValid() {
63 panic(ErrBadAddress)
64 }
65 if to == realmAddr {
66 panic(ErrFeeToRealm)
67 }
68 old := feeRecipient
69 feeRecipient = to
70 chain.Emit(EventFeeRecipientChanged, "old", old.String(), "new", to.String())
71}
72
73// SetPaused blocks or allows new offers and fills. It never blocks Cancel
74// (A2, R10).
75func SetPaused(cur realm, p bool) {
76 requireAdmin(cur)
77 paused = p
78 chain.Emit(EventPaused, "paused", strconv.FormatBool(p))
79}
80
81// TransferAdmin hands the admin role to another address.
82func TransferAdmin(cur realm, to address) {
83 requireAdmin(cur)
84 if !to.IsValid() || to == realmAddr {
85 panic(ErrBadAddress)
86 }
87 old := admin
88 admin = to
89 chain.Emit(EventAdminChanged, "old", old.String(), "new", to.String())
90}
91
92func requireAdmin(cur realm) {
93 requireNoCoins()
94 if cur.Previous().Address() != admin {
95 panic(ErrNotAdmin) // S7
96 }
97}
98
99func requireFee(bps int64) {
100 if bps < 0 || bps > feeCapBps {
101 panic(ErrFeeAboveCap)
102 }
103}
104Raw Package Data
Raw JSON data