acr_reward_allowlist.gno
1.27 Kb · 47 lines
1package block
2
3import (
4 "chain"
5
6 "gno.land/p/akkadia/v0/accesscontrol"
7 "gno.land/r/akkadia/v0/admin"
8)
9
10const (
11 SetAcrRewardEnabledEvent = "SetAcrRewardEnabled"
12 UnsetAcrRewardEnabledEvent = "UnsetAcrRewardEnabled"
13)
14
15// SetAcrRewardEnabled enables ACR reward for a block (Admin only)
16func SetAcrRewardEnabled(cur realm, blockID uint32) {
17 assertNotFrozen()
18 accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)
19
20 blockIDStr := blockIDToString(blockID)
21 blockStore.SetAcrRewardEnabled(blockID)
22
23 chain.Emit(SetAcrRewardEnabledEvent, "blockId", blockIDStr)
24}
25
26// UnsetAcrRewardEnabled disables ACR reward for a block (Admin only)
27func UnsetAcrRewardEnabled(cur realm, blockID uint32) {
28 assertNotFrozen()
29 accesscontrol.AssertIsAdmin(0, cur, admin.IsAdmin)
30
31 blockIDStr := blockIDToString(blockID)
32 blockStore.UnsetAcrRewardEnabled(blockID)
33
34 chain.Emit(UnsetAcrRewardEnabledEvent, "blockId", blockIDStr)
35}
36
37// IsAcrRewardEnabled returns true if ACR reward is enabled for the block
38func IsAcrRewardEnabled(blockID uint32) bool {
39 assertMigrationStateAvailable()
40 return blockStore.IsAcrRewardEnabled(blockID)
41}
42
43// ListAcrRewardEnabled returns all block IDs with ACR reward enabled
44func ListAcrRewardEnabled() []string {
45 assertMigrationStateAvailable()
46 return blockStore.ListAcrRewardEnabled()
47}