admin.gno
1.27 Kb ยท 60 lines
1package gnopendao1
2
3import (
4 "chain/banker"
5 "chain/runtime"
6)
7
8// ============= ADMIN =============
9
10func SetMarketplaceFee(newFee int64) {
11 caller := runtime.PreviousRealm().Address()
12 if caller != owner {
13 panic("Only owner can modify fees")
14 }
15
16 if newFee < 0 || newFee > 1000 { // Max 10%
17 panic("Fees must be between 0% and 10%")
18 }
19
20 marketplaceFee = newFee
21}
22
23func WithdrawFees() {
24 caller := runtime.PreviousRealm().Address()
25 if caller != owner {
26 panic("Only owner can withdraw fees")
27 }
28
29 // Use NewBanker instead of GetBanker
30 bnkr := banker.NewBanker(banker.BankerTypeRealmSend)
31 realmAddr := runtime.CurrentRealm().Address()
32
33 // Get balance of the realm
34 balance := bnkr.GetCoins(realmAddr)
35
36 if balance.AmountOf("ugnot") > 0 {
37 bnkr.SendCoins(realmAddr, owner, balance)
38 }
39}
40
41// AddAdmin - Add a new admin address
42func AddAdmin(newAdmin address) {
43 caller := runtime.PreviousRealm().Address()
44 if caller != owner {
45 panic("Only owner can add admins")
46 }
47 admins.Set(newAdmin.String(), true)
48}
49
50// RemoveAdmin - Remove an admin address
51func RemoveAdmin(admin address) {
52 caller := runtime.PreviousRealm().Address()
53 if caller != owner {
54 panic("Only owner can remove admins")
55 }
56 if admin == owner {
57 panic("Cannot remove owner as admin")
58 }
59 admins.Remove(admin.String())
60}