Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

memba_arcade_leaderboard_v1 state

Back to all declarations

AddAttester

func(addr .uverse.address)

AddAttester allowlists an ADDRESS (the backend verifier's dedicated low-privilege key — never the deploy multisig itself) as an authorized result source. Owner only.

Open
OID
0e7ad5…a0b7:3
AddAttester details

Inspect func

RemoveAttester

func(addr .uverse.address)

RemoveAttester revokes an attester key. Owner only.

Open
OID
0e7ad5…a0b7:5
RemoveAttester details

Inspect func

Pause

func(state bool)

Pause freezes all attestation + receipt requests (reads stay available). Owner only.

Open
OID
0e7ad5…a0b7:6
Pause details

Inspect func

TransferOwnership

func(newOwner .uverse.address)

TransferOwnership stages a new owner; it takes effect only after AcceptOwnership is called BY that address (2-step, so a typo can't brick admin).

Open
OID
0e7ad5…a0b7:7
TransferOwnership details

Inspect func

CancelOwnershipTransfer

func()

CancelOwnershipTransfer withdraws a staged handoff. Owner only.

Open
OID
0e7ad5…a0b7:8
CancelOwnershipTransfer details

Inspect func

GetPendingOwner

func() .uverse.address
Open
OID
0e7ad5…a0b7:9
GetPendingOwner details

Inspect func

AcceptOwnership

func()

AcceptOwnership completes the handoff. Only the staged pendingOwner may call it.

Open
OID
0e7ad5…a0b7:10
AcceptOwnership details

Inspect func

MaxScore

int64

Value

1000000000

MaxGameLen

untyped bigint

Value

(32 <untyped> bigint)

MaxStatsLen

untyped bigint

Value

(256 <untyped> bigint)

ReceiptsCap

untyped bigint

Value

(100 <untyped> bigint)

ReceiptDailyCap

untyped bigint

Value

(5 <untyped> bigint)

RequestCap

untyped bigint

Value

(8 <untyped> bigint)

Entry

type

Entry is one attested, verifier-reproduced run result.

Value

memba_arcade_leaderboard_v1.Entry

owner

.uverse.address

Value

<gnolang.StringValue>

pendingOwner

.uverse.address

Value

<gnolang.StringValue>

paused

bool

Value

false

attesters

*avl.Tree

// attester address string -> bool

Open
OID
0e7ad5…a0b7:15
attesters details

Inspect pointer

boards

*avl.Tree

// "game|day|addr" -> \*Entry (competitive, one best per addr/game/day)

Open
OID
0e7ad5…a0b7:18
boards details

Inspect pointer

receipts

*avl.Tree

// addr string -> \[]\*Entry (training ring, mixed-game, capped)

Open
OID
0e7ad5…a0b7:21
receipts details

Inspect pointer

logHashes

*avl.Tree

// "game|day|sha256" -> addr string (board slot: first-submitter-per-day)

Open
OID
0e7ad5…a0b7:24
logHashes details

Inspect pointer

hashOwners

*avl.Tree

// sha256 -> addr string (GLOBAL: a log binds to ONE address, ever)

Open
OID
0e7ad5…a0b7:27
hashOwners details

Inspect pointer

requests

*avl.Tree

// "addr|sha256" -> int64 height (player-paid receipt requests)

Open
OID
0e7ad5…a0b7:30
requests details

Inspect pointer

requestCount

*avl.Tree

// addr string -> int (pending requests, capped at RequestCap)

Open
OID
0e7ad5…a0b7:33
requestCount details

Inspect pointer

boardCount

*avl.Tree

// "game|day" -> int (entries per game-day, O(1) reads)

Open
OID
0e7ad5…a0b7:36
boardCount details

Inspect pointer

seedAuthority

func(publisher .uverse.address)

seedAuthority installs the publisher as owner. It runs once at package load.

Open
OID
0e7ad5…a0b7:40
seedAuthority details

Inspect func

isAttester

func(addr string) bool
Open
OID
0e7ad5…a0b7:43
isAttester details

Inspect func

assertAttester

func()

assertAttester is the single trust boundary: only the owner or an allowlisted attester key (the backend verifier) may write results. The verifier's own re-simulation gate is what makes an attested score meaningful — this realm only enforces that the source is trusted.

Open
OID
0e7ad5…a0b7:44
assertAttester details

Inspect func

assertEntryShape

func(game string, addr .uverse.address, day string, mode string, seed string, score int64, simVersion int64, stateHash string, logHash string, stats string)
Open
OID
0e7ad5…a0b7:45
assertEntryShape details

Inspect func

assertGameSlug

func(game string)

assertGameSlug validates the game slug shape: 1..MaxGameLen bytes of \[a-z0-9-]. The charset excludes '|' (and everything else), so a slug can never forge or split a composite key.

Open
OID
0e7ad5…a0b7:46
assertGameSlug details

Inspect func

AttestScore

func(game string, addr .uverse.address, day string, seed string, score int64, simVersion int64, stateHash string, logHash string, stats string)

AttestScore writes (or improves) an address's entry on a game's competitive board for a day. Attester-only. The verifier batches a day's results into one multi-msg tx at day close, plus spam-capped singles for the "certify now" flow. Re-attesting the same game/address/day only ever RAISES the score (Second Wind). A log hash already attested for that game-day for a DIFFERENT address is rejected — on a shared daily seed a valid input log is portable, so first-submitter wins (replay-theft defense). \`stats\` is the attester-authored per-game JSON blob (waves, wins, levels, …) — never ranked, only echoed by reads.

Open
OID
0e7ad5…a0b7:47
AttestScore details

Inspect func

AttestReceipt

func(game string, addr .uverse.address, day string, seed string, score int64, simVersion int64, stateHash string, logHash string, stats string)

AttestReceipt mints a personal training receipt — a verified "I did this run", never ranked. Attester-only; capped per address per (game, day) and ring-capped per address. Fulfills (and clears) a matching player-paid RequestReceipt if one is staged.

Open
OID
0e7ad5…a0b7:48
AttestReceipt details

Inspect func

RequestReceipt

func(logHash string)

RequestReceipt is the player-paid leg: ANY signer stages an on-chain consent + payment anchor for one of their own runs (they pay this call's gas). The backend sees the event, verifies the stored log, and fulfills via AttestReceipt. Self-limiting: each request costs the caller gas, and one key slot per (addr, hash). Hash-scoped and game-agnostic on purpose — the verifier, not the player, decides which game the log replays under.

Open
OID
0e7ad5…a0b7:49
RequestReceipt details

Inspect func

assertHashOwner

func(logHash string, addr .uverse.address)

assertHashOwner enforces the GLOBAL one-log-one-address rule shared by both buckets (and by every game), and is idempotent for the rightful owner (Second Wind re-attests).

Open
OID
0e7ad5…a0b7:50
assertHashOwner details

Inspect func

clearRequest

func(addr .uverse.address, logHash string)

clearRequest removes a fulfilled request and frees the caller's cap slot.

Open
OID
0e7ad5…a0b7:51
clearRequest details

Inspect func

publisherAtLoad

func() .uverse.address
Open
OID
0e7ad5…a0b7:54
publisherAtLoad details

Inspect func

IsPaused

func() bool

IsPaused reports whether attestation is frozen.

Open
OID
0e7ad5…a0b7:58
IsPaused details

Inspect func

IsAttester

func(addr string) bool

IsAttester reports whether an address is on the attester allowlist.

Open
OID
0e7ad5…a0b7:59
IsAttester details

Inspect func

BoardCount

func(game string, day string) int

BoardCount returns how many addresses hold an entry on a game's board for a day (O(1)).

Open
OID
0e7ad5…a0b7:60
BoardCount details

Inspect func

entryJSON

func(e *memba_arcade_leaderboard_v1.Entry) string

entryJSON emits one entry. \`stats\` is the attester's opaque JSON blob and is emitted as an ESCAPED STRING FIELD — never spliced raw into the document — so a malformed blob can corrupt nothing but itself.

Open
OID
0e7ad5…a0b7:61
entryJSON details

Inspect func

GetEntryJSON

func(game string, day string, addr string) string

GetEntryJSON returns one address's board entry for a game-day, or "null".

Open
OID
0e7ad5…a0b7:62
GetEntryJSON details

Inspect func

dayEntries

func(game string, day string) []*memba_arcade_leaderboard_v1.Entry

dayEntries collects a game-day's board entries in canonical rank order: score desc, then earlier attestation, then address — a total order, so pagination is stable.

Open
OID
0e7ad5…a0b7:63
dayEntries details

Inspect func

ranksAfter

func(a *memba_arcade_leaderboard_v1.Entry, b *memba_arcade_leaderboard_v1.Entry) bool

ranksAfter reports whether a should sit AFTER b in rank order — a total order (score desc, then earlier attestation, then address) so pagination is stable and identical everywhere.

Open
OID
0e7ad5…a0b7:64
ranksAfter details

Inspect func

GetBoardJSON

func(game string, day string, offset int, limit int) string

GetBoardJSON returns a page of a game-day's board, rank-ordered, as {"game":…,"day":…,"total":N,"entries":\[…]}. Reads sort the day's entries on demand — fine for a testnet-scale board; a rank index (points\_v1-style) is the v2 upgrade if daily boards grow past a few thousand entries.

Open
OID
0e7ad5…a0b7:65
GetBoardJSON details

Inspect func

GetReceiptsJSON

func(addr string, offset int, limit int) string

GetReceiptsJSON returns a page of one address's training receipts (all games, newest first) as {"addr":…,"total":N,"entries":\[…]}.

Open
OID
0e7ad5…a0b7:66
GetReceiptsJSON details

Inspect func

Render

func(path string) string

Render serves a human-readable snapshot: \`:board/\<game>/YYYY-MM-DD\` for a game-day's top entries, \`:receipts/\<addr>\` for an address's latest receipts.

Open
OID
0e7ad5…a0b7:67
Render details

Inspect func

jsonEscape

func(s string) string

jsonEscape escapes a string for embedding in a JSON string literal (defensive — addresses are bech32 and hashes are hex, but the read path escapes regardless; the Render path reuses it to neutralize newlines/control chars in attester-authored stats).

Open
OID
0e7ad5…a0b7:68
jsonEscape details

Inspect func
AddAttester : func(addr .uverse.address) Inspect
RemoveAttester : func(addr .uverse.address) Inspect
Pause : func(state bool) Inspect
TransferOwnership : func(newOwner .uverse.address) Inspect
CancelOwnershipTransfer : func() Inspect
GetPendingOwner : func() .uverse.address Inspect
AcceptOwnership : func() Inspect
MaxScore : int64 =1000000000
MaxGameLen : untyped bigint =(32 <untyped> bigint)
MaxStatsLen : untyped bigint =(256 <untyped> bigint)
ReceiptsCap : untyped bigint =(100 <untyped> bigint)
ReceiptDailyCap : untyped bigint =(5 <untyped> bigint)
RequestCap : untyped bigint =(8 <untyped> bigint)
Entry : type =memba_arcade_leaderboard_v1.Entry
owner : .uverse.address =<gnolang.StringValue>
pendingOwner : .uverse.address =<gnolang.StringValue>
paused : bool =false
attesters : *avl.Tree Inspect
boards : *avl.Tree Inspect
receipts : *avl.Tree Inspect
logHashes : *avl.Tree Inspect
hashOwners : *avl.Tree Inspect
requests : *avl.Tree Inspect
requestCount : *avl.Tree Inspect
boardCount : *avl.Tree Inspect
init.25 : func() Inspect
seedAuthority : func(publisher .uverse.address) Inspect
assertOwner : func() Inspect
assertNotPaused : func() Inspect
isAttester : func(addr string) bool Inspect
assertAttester : func() Inspect
assertEntryShape : func(game string, addr .uverse.address, day string, mode string, seed string, score int64, simVersion int64, stateHash string, logHash string, stats string) Inspect
assertGameSlug : func(game string) Inspect
AttestScore : func(game string, addr .uverse.address, day string, seed string, score int64, simVersion int64, stateHash string, logHash string, stats string) Inspect
AttestReceipt : func(game string, addr .uverse.address, day string, seed string, score int64, simVersion int64, stateHash string, logHash string, stats string) Inspect
RequestReceipt : func(logHash string) Inspect
assertHashOwner : func(logHash string, addr .uverse.address) Inspect
clearRequest : func(addr .uverse.address, logHash string) Inspect
itoa64 : func(n int64) string Inspect
boolStr : func(b bool) string Inspect
publisherAtLoad : func() .uverse.address Inspect
GetOwner : func() .uverse.address Inspect
IsPaused : func() bool Inspect
IsAttester : func(addr string) bool Inspect
BoardCount : func(game string, day string) int Inspect
entryJSON : func(e *memba_arcade_leaderboard_v1.Entry) string Inspect
GetEntryJSON : func(game string, day string, addr string) string Inspect
dayEntries : func(game string, day string) []*memba_arcade_leaderboard_v1.Entry Inspect
ranksAfter : func(a *memba_arcade_leaderboard_v1.Entry, b *memba_arcade_leaderboard_v1.Entry) bool Inspect
GetBoardJSON : func(game string, day string, offset int, limit int) string Inspect
GetReceiptsJSON : func(addr string, offset int, limit int) string Inspect
Render : func(path string) string Inspect
jsonEscape : func(s string) string Inspect