HomeOverviewValsValidatorsGovGovernanceIBCRelayersN/AInfraInfra
/
powered by GATA HUB

r/gnoswap/emission

Gno.land

Realm
Files10
Lines of code1,098excluding tests
FunctionsN/Aexported
Storage53.6 KB5.36 GNOT deposit
DeployedSep 16, 2026block 77,254

Realm

Pathgno.land/r/gnoswap/emission
Accountg177jkk4xx79…6amxwjeq
Deployerg1q5tjjv3kks…h8xfsk04
Transaction552DDEC7F9…AD5C7562
assert.gno72 lines
1package emission
2
3import (
4 ufmt "gno.land/p/nt/ufmt/v0"
5)
6
7func assertDefaultInitialPoolExists() {
8 if defaultInitialPoolChecker == nil {
9 panic(makeErrorWithDetails(errInvalidEmissionStart, "default initial pool checker is not registered"))
10 }
11
12 if !defaultInitialPoolChecker(DefaultInitialPoolTierPath) {
13 panic(makeErrorWithDetails(errInvalidEmissionStart, "default initial pool does not exist: "+DefaultInitialPoolTierPath))
14 }
15}
16
17// validateDistributionTarget returns an error if the given distribution target is invalid.
18func validateDistributionTarget(target int) error {
19 validTargets := map[int]bool{
20 LIQUIDITY_STAKER: false,
21 DEVOPS: false,
22 COMMUNITY_POOL: false,
23 GOV_STAKER: false,
24 }
25
26 if _, ok := validTargets[target]; !ok {
27 return makeErrorWithDetails(
28 errInvalidEmissionTarget,
29 ufmt.Sprintf("invalid target(%d)", target),
30 )
31 }
32
33 return nil
34}
35
36// assertValidDistributionTarget panics if the given distribution target is invalid.
37// Kept for internal invariant checks.
38func assertValidDistributionTarget(target int) {
39 if err := validateDistributionTarget(target); err != nil {
40 panic(err)
41 }
42}
43
44// assertValidDistributionPct ensures the sum of all distribution percentages equals 10000 (100%).
45// Panics if the sum does not equal exactly 10000 basis points.
46func assertValidDistributionPct(liquidityStakerPct, devOpsPct, communityPoolPct, govStakerPct int64) {
47 // Validate individual percentages are non-negative and reasonable
48 percentages := []int64{liquidityStakerPct, devOpsPct, communityPoolPct, govStakerPct}
49 for i, pct := range percentages {
50 if pct < 0 {
51 panic(makeErrorWithDetails(
52 errInvalidEmissionPct,
53 ufmt.Sprintf("percentage %d cannot be negative: %d", i+1, pct),
54 ))
55 }
56
57 if pct > 10000 {
58 panic(makeErrorWithDetails(
59 errInvalidEmissionPct,
60 ufmt.Sprintf("percentage %d cannot exceed 100%%: %d", i+1, pct),
61 ))
62 }
63 }
64
65 sum := liquidityStakerPct + devOpsPct + communityPoolPct + govStakerPct
66 if sum != 10000 {
67 panic(makeErrorWithDetails(
68 errInvalidEmissionPct,
69 ufmt.Sprintf("sum of percentages must be 10000, got %d", sum),
70 ))
71 }
72}
FunctionParametersReturnsKind

N/A

GNS Emission

All GNS amounts use exactly six decimal places. Schedule timestamps are UTC.

Distribution schedule

| Field | Value | | --- | --- | | Distribution start | 2026-09-16T13:20:00Z | | Distribution end | 2038-09-13T13:19:59Z | | Last execution | 2026-10-15T11:22:18Z |

Distribution accounting

| Metric | Amount | | --- | --- | | Undistributed GNS | 0.000001 GNS | | Total cumulative distributed | 17826333.698916 GNS |

The cumulative total includes allocations sent to all four recipients; DevOps and community-pool rows represent completed direct-transfer accounting.

Recipients

| Recipient | Allocation | Cumulative distributed | | --- | --- | --- | | Liquidity stakers | 75.00% | 13369750.278812 GNS | | DevOps | 20.00% | 3565266.738503 GNS | | Community pool | 5.00% | 891316.681601 GNS | | Governance stakers | 0.00% | 0.000000 GNS |

Staking accounting

These allocations have already been transferred to the recipients. The counters below show amounts since each accounting contract's last clear; they are not wallet balances or claimable amounts.

| Recipient | Since last accounting clear | | --- | --- | | Liquidity stakers | 13369750.278812 GNS | | Governance stakers | 0.000000 GNS |

Loading calls…
Calls1from 1 account
FunctionCallerStatusBlockAge
SetDistributionStartTimeg1qvtuwy…eecmzgSuccess86,64928d ago
1–1 of 1