← Back to Realms

Realm

gno.land/r/gnoswap/community_pool/v1

Overview

Realm Path
gno.land/r/gnoswap/community_pool/v1
Exported Functions
3
State Entries
0
Source Files
4
Total Package Entries
3

Exported Functions

3 exported functions

State

No state entries detected.

Source Code

FILES
community_pool.gno
go
1package community_pool
2
3import (
4	"chain"
5	"strconv"
6
7	prbac "gno.land/p/gnoswap/rbac/v1"
8
9	"gno.land/r/gnoswap/access/v1"
10	"gno.land/r/gnoswap/common"
11	"gno.land/r/gnoswap/halt/v1"
12)
13
14// GetBalanceOf returns the community pool's balance for a registered token.
15//
16// Parameters:
17//   - tokenPath: registry key/path of the token contract whose balance is queried
18//
19// Returns:
20//   - balance: token units held by the configured community-pool address, or 0 when validation fails
21//   - err: nil when tokenPath is valid and registered; non-nil for an invalid or unregistered tokenPath
22func GetBalanceOf(tokenPath string) (int64, error) {
23	communityPoolAddr := access.MustGetAddress(prbac.ROLE_COMMUNITY_POOL.String())
24
25	if err := common.IsRegistered(tokenPath); err != nil {
26		return 0, err
27	}
28
29	return common.BalanceOf(tokenPath, communityPoolAddr), nil
30}
31
32// TransferToken transfers token units from the community pool to an address.
33//
34// Parameters:
35//   - cur: current realm context; callers use cross(cur) when crossing into this realm
36//   - tokenPath: registry key/path of the registered token to transfer
37//   - to: recipient address for the token units
38//   - amount: number of token units to transfer; transfer failure panics through the safe wrapper
39//
40// Only callable by admin or governance while withdrawals are not halted.
41// Governance is the recommended normal route. While governance is not yet
42// mature, admin access is retained for emergency-only use as an operational
43// policy, not a contract-enforced condition. Admin calls do not require an
44// approved proposal; emergency status is not checked and admin access does
45// not expire automatically.
46func TransferToken(cur realm, tokenPath string, to address, amount int64) {
47	halt.AssertIsNotHaltedWithdraw()
48
49	prevRealm := cur.Previous()
50	caller := prevRealm.Address()
51	access.AssertIsAdminOrGovernance(caller)
52
53	common.SafeGRC20Transfer(0, cur, tokenPath, to, amount)
54
55	chain.Emit(
56		"TransferToken",
57		"prevAddr", caller.String(),
58		"prevRealm", prevRealm.PkgPath(),
59		"tokenPath", tokenPath,
60		"to", to.String(),
61		"amount", strconv.FormatInt(amount, 10),
62	)
63}
64

Raw Package Data

Raw JSON data