MinWindow
int64// seconds
Value
10
MaxWindow
int64// 30 days
Value
2592000
MinLife
int64// an hour
Value
3600
MaxLife
int64// 30 days
Value
2592000
MinBasePrice
int64// ugnot, 0.001 GNOT
Value
1000
MaxBasePrice
int64// ugnot, 1,000,000 GNOT
Value
1000000000000
MaxNameLen
untyped bigintValue
(40 <untyped> bigint)
HistoryLen
untyped bigint// bids kept per pool for the feed
Value
(50 <untyped> bigint)
RosterMax
untyped bigint// distinct bidders a pool pays dividends, team shares and the close split to
Value
(100 <untyped> bigint)
MaxBoost
int64// the shortest clock a bid can buy is window/MaxBoost...
Value
10
MinClock
int64// ...and never under five minutes: people must be able to answer
Value
300
PotShare
int64Value
55
DivShare
int64// to earlier bidders of the pool, pro-rata by weight
Value
30
RefShare
int64// to the bidder's inviter
Value
10
CreatorShare
int64Value
5
TeamShare
int64Value
35
ShotCap
int64// ugnot: the most a shot can take, 10 GNOT
Value
10000000
ShotMaxBps
int64// 1% a shot, whatever is paid
Value
100
ShotFair
int64// chance in bps = ShotFair × shot / prize (0.8 of fair odds)
Value
8000
ShotDelay
int64// blocks after the shot was paid for before it can be drawn...
Value
3
ShotWindow
int64// ...and how many more blocks it may still be drawn in
Value
2
admin
.uverse.addressadmin is the realm's deployer: the only address that may turn shots off.
Value
<gnolang.StringValue>
pkgPath
untyped stringpkgPath must match gnomod.toml: the realm's own address derives from it.
Value
"gno.land/r/g1leu8d2vsplhehcfkjg50mwgdpxdkt8tztu95wr/bubblerumble3"
Entry
typeValue
bubblerumble3.Entry
Member
typeMember is a distinct bidder of a pool: dividends, team shares and the close split go to the roster. The flag is the one flown at the first bid here.
Value
bubblerumble3.Member
Shot
typeShot is a shot at the bubble waiting to be drawn, or drawn.
Value
bubblerumble3.Shot
Pool
typeValue
bubblerumble3.Pool
Player
typePlayer is what the realm remembers about an address across pools.
Value
bubblerumble3.Player
shotsOn
boolValue
true
pools
[]*bubblerumble3.Pool- OID
- 0e55e1…d964:51845
pools details
players
map[.uverse.address]*bubblerumble3.Player- OID
- 0e55e1…d964:6
players details
teamPaid
map[string]int64// flag -> gross bid volume under it
- OID
- 0e55e1…d964:8
teamPaid details
teamWon
map[string]int64// flag -> pots closed under it
- OID
- 0e55e1…d964:10
teamWon details
teamSize
map[string]int64// flag -> players flying it
- OID
- 0e55e1…d964:12
teamSize details
realmAddr
.uverse.addressValue
<gnolang.StringValue>
Price
func(base int64, n int64) int64Price of the next bid in a pool with the given base price and n bids so far.
- OID
- 0e55e1…d964:14
Price details
ClockFor
func(window int64, price int64, sent int64) int64ClockFor is the clock a bid buys by paying sent against a price: the window divided by the multiple paid, never below window/MaxBoost.
- OID
- 0e55e1…d964:16
ClockFor details
mulDiv
func(a int64, b int64, c int64) int64mulDiv is a×b/c without overflowing on the way: pots and paid-ins are both in ugnot and their product passes int64 at a few thousand GNOT each.
- OID
- 0e55e1…d964:17
mulDiv details
ShotBps
func(shot int64, prize int64) int64ShotBps is the chance a shot buys against a prize, in basis points.
- OID
- 0e55e1…d964:18
ShotBps details
CreatePool
func(name string, window int64, basePrice int64, life int64) int64CreatePool opens a pool. Any ugnot sent with the call seeds its pot. The creator earns CreatorShare of every bid. life is the pool's life in seconds from its first bid; 0 means ten windows (at least an hour, at most 30 days).
- OID
- 0e55e1…d964:19
CreatePool details
newPool
func(name string, creator .uverse.address, window int64, basePrice int64, life int64, seed int64) *bubblerumble3.Pool- OID
- 0e55e1…d964:20
newPool details
Bid
func(id int64, ref string, flag string, shot int64)Bid pays at least the current price and resets the clock. ref is the address that invited the bidder ("" for none; only the first bid ever sets it), flag a two-letter country to play under ("" keeps the last one; the flag is locked per pool at the first bid there), shot how much of the money sent is a shot at popping the bubble (0 for none): the rest must cover the price, and paying more than the price shortens the clock.
- OID
- 0e55e1…d964:21
Bid details
SetShots
func(on bool)SetShots turns shots off (or on again); only the deployer may.
- OID
- 0e55e1…d964:22
SetShots details
Draw
func(id int64)Draw draws the shots at a pool that are due. Anyone may call it; every bid and claim on the pool does the same first.
- OID
- 0e55e1…d964:23
Draw details
seedFor
func(poolID int64, t *bubblerumble3.Shot, h int64) uint64- OID
- 0e55e1…d964:24
seedFor details
shotHits
func(seed uint64, bps int64) boolshotHits is the draw: a uniform number in \[0, 10000) under the chance.
- OID
- 0e55e1…d964:25
shotHits details
Claim
func(id int64)Claim settles a finished pool: everything is credited, and Withdraw sends it. TeamShare of the pot goes to the OTHER roster members flying the winner's flag, pro-rata by paid-in — or, when nobody else flew it, to all the other roster members. Of the rest, the live part (LiveBps) is the winner's and the shared part is split among the whole roster pro-rata by paid-in. A pool with a single bidder credits them everything. Rounding goes to the winner. Anyone may call it.
- OID
- 0e55e1…d964:26
Claim details
Cancel
func(id int64)Cancel lets the creator take the seed back from a pool nobody has bid on.
- OID
- 0e55e1…d964:27
Cancel details
player
func(a .uverse.address) *bubblerumble3.Player- OID
- 0e55e1…d964:28
player details
send
func(to .uverse.address, ugnot int64)- OID
- 0e55e1…d964:29
send details
credit
func(to .uverse.address, ugnot int64)credit books ugnot to an address; Withdraw pays it out.
- OID
- 0e55e1…d964:30
credit details
Withdraw
func() int64Withdraw sends the caller everything credited to them: dividends, team shares, close splits, slices and won pots.
- OID
- 0e55e1…d964:31
Withdraw details
Owed
func(a .uverse.address) int64Owed is what an address could withdraw right now.
- OID
- 0e55e1…d964:32
Owed details
pool
func(id int64) *bubblerumble3.Pool- OID
- 0e55e1…d964:33
pool details
userCaller
func() .uverse.address- OID
- 0e55e1…d964:34
userCaller details
ugnotSent
func() int64- OID
- 0e55e1…d964:35
ugnotSent details
cleanName
func(s string) string- OID
- 0e55e1…d964:36
cleanName details
cleanFlag
func(s string) stringcleanFlag accepts a two-letter country code, upper-cased; anything else is "".
- OID
- 0e55e1…d964:37
cleanFlag details
itoa
func(n int64) string- OID
- 0e55e1…d964:38
itoa details
parseID
func(s string) int64- OID
- 0e55e1…d964:39
parseID details
GNOT
func(ugnot int64) stringGNOT formats ugnot as GNOT with the trailing zeros trimmed.
- OID
- 0e55e1…d964:40
GNOT details
short
func(a .uverse.address) string- OID
- 0e55e1…d964:41
short details
dur
func(sec int64) string- OID
- 0e55e1…d964:42
dur details
Render
func(path string) stringRender serves gnoweb ("" and "\<id>") and the page ("json", "json/\<id>", "me/\<address>", "teams").
- OID
- 0e55e1…d964:43
Render details
unix
func(t time.Time) string- OID
- 0e55e1…d964:44
unix details
jbool
func(b bool) string- OID
- 0e55e1…d964:45
jbool details
jsonAll
func() string- OID
- 0e55e1…d964:46
jsonAll details
jsonTeams
func() stringjsonTeams is the country leaderboard: paid in, won, and players per flag.
- OID
- 0e55e1…d964:47
jsonTeams details
jsonMe
func(a .uverse.address) stringjsonMe is what the page shows a connected wallet about itself.
- OID
- 0e55e1…d964:48
jsonMe details
markdownAll
func() string- OID
- 0e55e1…d964:49