HomeOverviewValsValidatorsGovGovernanceIBCRelayersN/AInfraInfra
/
powered by GATA HUB

r/g1leu8…95wr/bubble

Gno.land

Realm
Files7
Lines of code812excluding tests
Functions54exported
Storage280.8 KB28.08 GNOT deposit
DeployedSep 25, 2026block 328,007

Realm

Pathgno.land/r/g1leu8d2vsplhehcfkjg50mwgdpxdkt8tztu95wr/bubble
Accountg189a9lwch55…za6mlqp4
Deployerg1leu8d2vspl…tztu95wr
TransactionCB7290455E…67ED4D20
admin.gno81 lines
1package bubble
2
3// The settings, and who may change them.
4//
5// admin is whoever deployed the realm (Jae's hotkey signs the addpkg) and is handed to the box's keeper key in the
6// same minute ("a token that you control, but admin can be transferred and even destroyed"). An empty admin is
7// nobody, permanently: RenounceAdmin is the "destroyed" Jae asked for. After it, every one of these settings moves
8// only by a holders' vote (kinds.gno), and the mint goes on under the minter until the holders stop it.
9var (
10 // admin is Jae's cold key (jarvis room 201, 2026-09-25: "(b) g1ecsu … make sure that even if the hotkey is
11 // hacked the g1ecsu can restore"), named here rather than read from OriginCaller at init: the deployer is the
12 // hotkey, which holds no power once the realm is up, and a test package or a filetest loads with no deployer
13 // at all. The box holds the minter, whose damage the day cap bounds; if the box or the hotkey is ever taken,
14 // this key pauses, names another minter, and goes on.
15 admin = address("g1ecsuj0q572jr0dhu29q9njtnmw03hyu7tyyvv6")
16 // minter is the box's keeper key, the only address that mints referrals; "" is nobody.
17 minter = address("g18dd5mstjqlcg9ngqpg26azeya6wqg7upd9t8xa")
18 paused bool // the admin's brake: stops Mint and MintMany, nothing else
19 dayCap = 250_000 * one
20)
21
22func init() {
23 ledger.SetID(tokenID)
24 ledger.Mint(premineTo, premine)
25 premined = premine
26}
27
28func Admin() address { return admin }
29func Minter() address { return minter }
30func Paused() bool { return paused }
31func DayCap() int64 { return dayCap }
32
33func mustBeAdmin(cur realm) {
34 who := caller(cur)
35 if admin == "" {
36 panic("bubble: the admin was given up; the holders decide now")
37 }
38 if who != admin {
39 panic("bubble: only the admin")
40 }
41}
42
43// SetAdmin hands the settings to another address.
44func SetAdmin(cur realm, to address) {
45 mustBeAdmin(cur)
46 if !to.IsValid() {
47 panic("bubble: not an address")
48 }
49 admin = to
50}
51
52// RenounceAdmin gives the settings up for good: from here they move only by vote.
53func RenounceAdmin(cur realm) {
54 mustBeAdmin(cur)
55 admin = ""
56}
57
58// SetMinter names who mints; "" is nobody (the referral mint stops until a vote names one).
59func SetMinter(cur realm, to address) {
60 mustBeAdmin(cur)
61 if to != "" && !to.IsValid() {
62 panic("bubble: not an address")
63 }
64 minter = to
65}
66
67// SetPaused stops the mint, or lets it go on.
68func SetPaused(cur realm, on bool) {
69 mustBeAdmin(cur)
70 paused = on
71}
72
73// SetDayCap lowers the daily ceiling. Raising it is the holders' (govern:daycap): the cap is what bounds a stolen
74// key, so the key it bounds may not raise it.
75func SetDayCap(cur realm, n int64) {
76 mustBeAdmin(cur)
77 if n < 0 || n > dayCap {
78 panic("bubble: the admin can only lower the day cap; raising it is a vote")
79 }
80 dayCap = n
81}
FunctionParametersReturnsKind
Admin()string-
Minter()string-
Paused()bool-
DayCap()int64-
SetAdmin(to string)-Crossing
RenounceAdmin()-Crossing
SetMinter(to string)-Crossing
SetPaused(on bool)-Crossing
SetDayCap(n int64)-Crossing
NewRules(quorumBps int64, thresholdBps int64, votingBlocks int64, delayBlocks int64, graceBlocks int64, proposeBps int64)struct{QuorumBps int64; ThresholdBps int64; ProposeBps int64; VotingBlocks int64; DelayBlocks int64; GraceBlocks int64}-
TextOnly(s string)error-
Offer(k interface {Check func(string) .uverse.error; Describe func(string) string; Do func(int, .uverse.realm, string) .uverse.error; Name func() string}, r struct{QuorumBps int64; ThresholdBps int64; ProposeBps int64; VotingBlocks int64; DelayBlocks int64; GraceBlocks int64})-Crossing
1–12 of 541/5

Bubble (BUBBLE)

  • supply: 10022450.463741 BUBBLE (10022450463741 at 6 decimals)
  • supply: 10022450 of 100000000 BUBBLE (premine 10000000, referrals 22450 of 40000000, reserve 0 of 50000000)
  • today: 1350 of 250000 BUBBLE minted; batches 13
  • admin: g1ecsuj0q572…tyyvv6
  • minter: g18dd5mstjql…d9t8xa
  • a money vote's turnout bar follows the holders: a fifth of the supply, or the mean turnout of the last money votes when that is higher (mean now 0), never above a third; the reserve moves at most 2000000 a proposal, ninety days apart
  • epoch: 829 (votes are weighed at sealed epochs)

governance

1 of 64 slots in use.

Nothing to vote on.

decided, waiting to be run

  • [#1](:1) cofounder grant: 1,000,000 BUBBLE vesting over two years in r/vesting — govern:reserve · succeeded
Loading calls…
Calls62from 17 accounts
FunctionCallerStatusBlockAge
Approveg120t6nt…gz75u0Success819,2149h ago
MintManyg18dd5ms…d9t8xaSuccess815,12213h ago
MintManyg18dd5ms…d9t8xaSuccess813,13715h ago
Approveg1dd7s79…u0a6v6Success796,6331d ago
Approveg120t6nt…gz75u0Success795,3811d ago
Approveg1nnkmk0…673qeeSuccess794,0151d ago
MintManyg18dd5ms…d9t8xaSuccess791,3041d ago
MintManyg18dd5ms…d9t8xaSuccess790,3091d ago
Approveg1nnkmk0…673qeeSuccess770,4332d ago
Approveg120t6nt…gz75u0Success767,0782d ago
MintManyg18dd5ms…d9t8xaSuccess765,7502d ago
Approveg120t6nt…gz75u0Success755,8823d ago
1–12 of 621/6