admin
.uverse.addressAdmin (design §2.5.2, §7.5). The admin can only change the parameters listed in validateOp, each inside a hard cap, after a public timelock; it can pause new activity for a bounded time. It can never move, approve or burn a token, touch a collection's configuration, or receive funds (I-1). With no collection yet there is nothing to protect, so ops execute without delay — that is how the platform is configured after deploy. TODO(mainnet): the initial admin and treasury must be the 2/3 multisig. SA-I6: CreateFee starts at 0 here so tests and bootstrap stay simple; scripts/deploy-onyx.sh sets a non-zero fee.create during bootstrap.
Value
<gnolang.StringValue>
pendingAdmin
.uverse.addressAdmin (design §2.5.2, §7.5). The admin can only change the parameters listed in validateOp, each inside a hard cap, after a public timelock; it can pause new activity for a bounded time. It can never move, approve or burn a token, touch a collection's configuration, or receive funds (I-1). With no collection yet there is nothing to protect, so ops execute without delay — that is how the platform is configured after deploy. TODO(mainnet): the initial admin and treasury must be the 2/3 multisig. SA-I6: CreateFee starts at 0 here so tests and bootstrap stay simple; scripts/deploy-onyx.sh sets a non-zero fee.create during bootstrap.
Value
<zero>
fees
v1.FeesAdmin (design §2.5.2, §7.5). The admin can only change the parameters listed in validateOp, each inside a hard cap, after a public timelock; it can pause new activity for a bounded time. It can never move, approve or burn a token, touch a collection's configuration, or receive funds (I-1). With no collection yet there is nothing to protect, so ops execute without delay — that is how the platform is configured after deploy. TODO(mainnet): the initial admin and treasury must be the 2/3 multisig. SA-I6: CreateFee starts at 0 here so tests and bootstrap stay simple; scripts/deploy-onyx.sh sets a non-zero fee.create during bootstrap.
- OID
- 09f37f…4005:6
fees details
beacon
.uverse.addressAdmin (design §2.5.2, §7.5). The admin can only change the parameters listed in validateOp, each inside a hard cap, after a public timelock; it can pause new activity for a bounded time. It can never move, approve or burn a token, touch a collection's configuration, or receive funds (I-1). With no collection yet there is nothing to protect, so ops execute without delay — that is how the platform is configured after deploy. TODO(mainnet): the initial admin and treasury must be the 2/3 multisig. SA-I6: CreateFee starts at 0 here so tests and bootstrap stay simple; scripts/deploy-onyx.sh sets a non-zero fee.create during bootstrap.
Value
<gnolang.StringValue>
minters
v0.Tree// minter pkgpath -> \*minterRecord
- OID
- 09f37f…4005:9
minters details
ops
v0.Tree// safe.PadInt(op id) -> \*pendingOp
- OID
- 09f37f…4005:11
ops details
opCount
int64Admin (design §2.5.2, §7.5). The admin can only change the parameters listed in validateOp, each inside a hard cap, after a public timelock; it can pause new activity for a bounded time. It can never move, approve or burn a token, touch a collection's configuration, or receive funds (I-1). With no collection yet there is nothing to protect, so ops execute without delay — that is how the platform is configured after deploy. TODO(mainnet): the initial admin and treasury must be the 2/3 multisig. SA-I6: CreateFee starts at 0 here so tests and bootstrap stay simple; scripts/deploy-onyx.sh sets a non-zero fee.create during bootstrap.
Value
3
pauses
v0.Tree// scope -> \*pauseRecord
- OID
- 09f37f…4005:14
pauses details
pauseRecord
typepauseRecord is one scope's pause and its budget (SA-L2): within a window of PauseWindowBlocks a scope can be paused for at most MaxPauseBlocks in total; a pause cannot be renewed while it runs. Worst case two budgets meet at a window boundary (\<= 2 x MaxPauseBlocks in a row), never more.
Value
core.pauseRecord
minterRecord
typeValue
core.minterRecord
pendingOp
typeValue
core.pendingOp
OpFeeCreate
untyped string// ugnot, \<= CreateFeeCap
Value
"fee.create"
OpFeePrimary
untyped string// bps, \<= ProtocolFeeCapBps
Value
"fee.primary"
OpFeeSecondary
untyped string// bps, \<= ProtocolFeeCapBps
Value
"fee.secondary"
OpTreasury
untyped string// address
Value
"treasury"
OpBeacon
untyped string// address, or "" to disable new beacon launches
Value
"beacon"
OpMinterAdd
untyped string// realm pkgpath
Value
"minter.add"
OpMinterDeprecate
untyped string// realm pkgpath: no new collections
Value
"minter.deprecate"
OpEngineReview
untyped string// engine id: reviewed badge (UI only)
Value
"engine.review"
OpAdminTransfer
untyped string// address; the new admin must AcceptAdmin
Value
"admin.transfer"
pauseScopes
[]string- OID
- 09f37f…4005:16
pauseScopes details
ProposeOp
func(op string, arg string) string- OID
- 09f37f…4005:17
ProposeOp details
ExecuteOp
func(opID string)ExecuteOp applies a proposed op once its timelock has passed. The delay is judged at execution, so an op proposed during bootstrap still waits the full timelock if a collection appeared in the meantime.
- OID
- 09f37f…4005:19
ExecuteOp details
CancelOp
func(opID string)- OID
- 09f37f…4005:20
CancelOp details
AcceptAdmin
func()- OID
- 09f37f…4005:21
AcceptAdmin details
Pause
func(scope string)Pause stops new activity in one scope for the rest of its budget (at most MaxPauseBlocks per PauseWindowBlocks). It never blocks exits (I-2) and cannot be renewed while it runs (SA-L2).
- OID
- 09f37f…4005:22
Pause details
Unpause
func(scope string)Unpause ends a pause early and gives the unused blocks back to the budget.
- OID
- 09f37f…4005:23
Unpause details
pauseOf
func(scope string) *core.pauseRecord- OID
- 09f37f…4005:24
pauseOf details
Paused
func(scope string) boolPaused reports whether scope ("create", "mint", "trade") is paused now.
- OID
- 09f37f…4005:25
Paused details
PauseBudget
func(scope string) stringPauseBudget is the scope's pause record as JSON: {until, used, windowStart, windowEnd, left}.
- OID
- 09f37f…4005:26
PauseBudget details
assertNotPaused
func(scope string)- OID
- 09f37f…4005:27
assertNotPaused details
assertScope
func(scope string)- OID
- 09f37f…4005:28
assertScope details
assertAdmin
func()- OID
- 09f37f…4005:29
assertAdmin details
bootstrapping
func() bool- OID
- 09f37f…4005:30
bootstrapping details
earliestExecution
func(p *core.pendingOp) int64- OID
- 09f37f…4005:31
earliestExecution details
mustOp
func(opID string) *core.pendingOp- OID
- 09f37f…4005:32
mustOp details
validateOp
func(op string, arg string)validateOp is the closed list of admin powers (I-1).
- OID
- 09f37f…4005:33
validateOp details
applyOp
func(op string, arg string)- OID
- 09f37f…4005:34
applyOp details
assertActiveMinter
func(path string)- OID
- 09f37f…4005:35
assertActiveMinter details
parseAmount
func(s string) int64- OID
- 09f37f…4005:36
parseAmount details
CreateCollection
func(creator .uverse.address, spec v1.CollectionSpec) stringCreateCollection stores a Draft collection and returns its id. Nobody can mint a Draft, so a creator can configure phases across several messages without a race (OA B2).
- OID
- 09f37f…4005:37
CreateCollection details
Launch
func(cid string, l v1.LaunchSpec)Launch freezes the configuration (I-6): sale window, reveal window and the creator's commitment. The sale must start in the future so a beacon can commit before the first mint.
- OID
- 09f37f…4005:39
Launch details
AbortLaunch
func(cid string)AbortLaunch returns a launched collection to Draft while nothing has been minted — the way out when a beacon never commits. A commitment whose secret was revealed is burned for this collection; unrevealed ones (the beacon's deterministic one included) may be committed again (SA-L1).
- OID
- 09f37f…4005:40
AbortLaunch details
ReserveTo
func(cid string, to .uverse.address, n int64) (first int64, last int64)ReserveTo mints the creator's reserve before the sale starts. Reserve mints feed the entropy like any mint, appear in Provenance, and do not count toward wallet caps.
- OID
- 09f37f…4005:41
ReserveTo details
MintTo
func(cid string, to .uverse.address, n int64) (first int64, last int64)MintTo mints n tokens during the sale. The minter has already checked phase, price, allowlist and wallet cap; core re-checks only what it owns: state, supply, beacon commitment, and the lifetime counter (I-5, I-9).
- OID
- 09f37f…4005:42
MintTo details
assertMintCount
func(c *core.collection, n int64)- OID
- 09f37f…4005:43
assertMintCount details
mintBatchTo
func(c *core.collection, to .uverse.address, n int64, h int64) (first int64, last int64)mintBatchTo is the only place tokens come into existence.
- OID
- 09f37f…4005:44
mintBatchTo details
mintedBy
func(c *core.collection, addr .uverse.address) int64- OID
- 09f37f…4005:45
mintedBy details
CloseMint
func(cid string)CloseMint materializes Closed once the sale window has passed. Anyone may call it; reveals and Finalize work without it.
- OID
- 09f37f…4005:46
CloseMint details
TransferCreator
func(cid string, to .uverse.address)TransferCreator starts a two-step handover (RA M-11).
- OID
- 09f37f…4005:47
TransferCreator details
AcceptCreator
func(cid string)- OID
- 09f37f…4005:48
AcceptCreator details
SetPayees
func(cid string, payees string)SetPayees changes the royalty split after Final. The primary-sale split is frozen with the sale (I-6); the royalty receiver stays the collection's sub-treasury, so third-party markets are unaffected. Royalties earned so far are first paid to the current payees (SA-I4).
- OID
- 09f37f…4005:49
SetPayees details
assertPayees
func(field string, ps []v1.Payee, cid string, engineID string)assertPayees refuses payees that can never spend what they receive (SA-L5): the platform's own realms and sub-addresses. cid is the collection being configured, engineID its engine adapter.
- OID
- 09f37f…4005:50
assertPayees details
assertSpendable
func(field string, addr .uverse.address, cid string, engineID string)assertSpendable panics for core, core's sub-addresses of collection cid (token identity c/\<cid>, royalty treasury roy/\<cid>), every minter ever approved, the engine adapter, and the platform realms next to core (market, reader, gallery, the genesis adapter). None of them has a path that spends an incoming payment, so the coins would be stranded (I-3).
- OID
- 09f37f…4005:51
assertSpendable details
platformRealms
[]stringplatformRealms are the realm paths next to core (README package map).
- OID
- 09f37f…4005:53
platformRealms details
assertCreator
func(c *core.collection)- OID
- 09f37f…4005:54
assertCreator details
assertBoundMinter
func(c *core.collection)- OID
- 09f37f…4005:55
assertBoundMinter details
boolStr
func(b bool) string- OID
- 09f37f…4005:56
boolStr details
ProtocolFeeCapBps
untyped bigint// 5% of any sale
Value
(500 <untyped> bigint)
RoyaltyCapBps
untyped bigint// 10% (RA M-3)
Value
(1000 <untyped> bigint)
CreateFeeCap
untyped bigint// 1,000 GNOT in ugnot
Value
(1000000000 <untyped> bigint)
MaxPayees
untyped bigintHard limits. They are constants on purpose: nobody, admin included, can raise them after deploy (block counts assume ~3.54 s blocks, RA M-1).
Value
(4 <untyped> bigint)
MaxSupplyCap
untyped bigintHard limits. They are constants on purpose: nobody, admin included, can raise them after deploy (block counts assume ~3.54 s blocks, RA M-1).
Value
(10000 <untyped> bigint)
MaxMintPerTx
untyped bigint// hypothesis: measure n=10 gas/deposit on Onyx
Value
(10 <untyped> bigint)
MaxReserveBps
untyped bigint// creator reserve \<= 10% of supply
Value
(1000 <untyped> bigint)
MaxSaleBlocks
untyped bigint// ~30 days
Value
(732000 <untyped> bigint)
RevealWindowMin
untyped bigint// ~1 hour
Value
(1017 <untyped> bigint)
RevealWindowMax
untyped bigint// ~7 days
Value
(170000 <untyped> bigint)
BeaconGraceBlocks
untyped bigint// beacon may reveal first in the window's last ~15 min (\< RevealWindowMin, so the creator always gets to go first)
Value
(254 <untyped> bigint)
TimelockBlocks
untyped bigint// ~48 hours
Value
(48800 <untyped> bigint)
MaxPauseBlocks
untyped bigint// ~8 days: pause budget per scope and window
Value
(195000 <untyped> bigint)
PauseWindowBlocks
untyped bigint// ~30 days (SA-L2)
Value
(732000 <untyped> bigint)
MaxNameLen
untyped bigintHard limits. They are constants on purpose: nobody, admin included, can raise them after deploy (block counts assume ~3.54 s blocks, RA M-1).
Value
(64 <untyped> bigint)
MaxDescriptionLen
untyped bigintHard limits. They are constants on purpose: nobody, admin included, can raise them after deploy (block counts assume ~3.54 s blocks, RA M-1).
Value
(1024 <untyped> bigint)
MaxParamsLen
untyped bigintHard limits. They are constants on purpose: nobody, admin included, can raise them after deploy (block counts assume ~3.54 s blocks, RA M-1).
Value
(1024 <untyped> bigint)
MinSecretLen
untyped bigintHard limits. They are constants on purpose: nobody, admin included, can raise them after deploy (block counts assume ~3.54 s blocks, RA M-1).
Value
(32 <untyped> bigint)
MaxSecretLen
untyped bigintHard limits. They are constants on purpose: nobody, admin included, can raise them after deploy (block counts assume ~3.54 s blocks, RA M-1).
Value
(256 <untyped> bigint)
MaxPageSize
untyped bigintHard limits. They are constants on purpose: nobody, admin included, can raise them after deploy (block counts assume ~3.54 s blocks, RA M-1).
Value
(50 <untyped> bigint)
BadgeBoth
untyped stringProvenance badges (design §4.3).
Value
"2/2"
BadgeCreatorOnly
untyped stringProvenance badges (design §4.3).
Value
"creator-only"
BadgeBeaconOnly
untyped stringProvenance badges (design §4.3).
Value
"beacon-only"
BadgeFallback
untyped stringProvenance badges (design §4.3).
Value
"fallback"
collection
typeValue
core.collection
selfPath
stringValue
"gno.land/r/g1pq6pxhgxk2uw5shg5le6glfydpxcu74k0zh069/sinopia/core"
collections
v0.Tree// safe.PadInt(cid) -> \*collection
- OID
- 09f37f…4005:59
collections details
byCreator
v0.Tree// creator + ":" + padded cid -> cid
- OID
- 09f37f…4005:61
byCreator details
collCount
int64Value
3
init.87
func()- OID
- 09f37f…4005:63
init.87 details
cidWidth
untyped bigintValue
(10 <untyped> bigint)
collKey
func(cid string) string- OID
- 09f37f…4005:65
collKey details
mustCollection
func(cid string) *core.collection- OID
- 09f37f…4005:66
mustCollection details
stateAt
func(c *core.collection, h int64) v1.StatestateAt is the effective state at height h; the stored state lags until the next write materializes it (refresh).
- OID
- 09f37f…4005:67
stateAt details
refresh
func(c *core.collection, h int64)- OID
- 09f37f…4005:68
refresh details
revealDeadline
func(c *core.collection) int64revealDeadline is when anyone may finalize without the missing secrets. It is at most endHeight + RevealWindowMax, which bounds the transfer lock (I-11).
- OID
- 09f37f…4005:69
revealDeadline details
caller
func() .uverse.address- OID
- 09f37f…4005:70
caller details
assertNoDeposit
func()assertNoDeposit refuses coins on functions that take none, so nothing can get stuck in core (RA L-1). The origin-send envelope belongs to the first realm of the call; it is only ours to judge when a wallet called us.
- OID
- 09f37f…4005:71
assertNoDeposit details
itoa
func(n int64) string- OID
- 09f37f…4005:72
itoa details
height
func() int64- OID
- 09f37f…4005:73
height details
engineRecord
typeEngine registry ("art as code", design §5). An engine registers itself from its own /r/ adapter realm; its id is that realm's package path, so nobody can register in someone else's name. The stored interface value's methods are declared in the adapter, so every call runs with the adapter's authority, not core's (interrealm v2 borrow rule #1): engine code cannot write core state. It also cannot call back into a core mutator: all of core's state-changing functions are crossing and need a live cur the engine never has. Honest limits, surfaced to users rather than hidden: - an adapter realm with state could change its art later; the sample fingerprint (VerifyEngine) detects a change of the sample, and review means reading the adapter for statelessness; - a private (re-deployable) adapter cannot register: the VM aborts the registration when core's state would retain the private realm's type (spike A9, observed in gno v1.7.0 test mode; confirm on Onyx).
Value
core.engineRecord
engines
v0.Tree// engine id -> \*engineRecord
- OID
- 09f37f…4005:75
engines details
engineOrder
v0.Tree// safe.PadInt(seq) -> engine id
- OID
- 09f37f…4005:77
engineOrder details
engineCount
int64Value
1
RegisterEngine
func(e v1.Engine) stringRegisterEngine stores the calling realm's engine (I-12 exception: one sample render in the engine's own registration transaction). The record is immutable afterwards except for the claim/deprecate/review flags.
- OID
- 09f37f…4005:79
RegisterEngine details
ClaimEngine
func(id string)ClaimEngine proves the manifest author controls that address. Unclaimed engines cannot back a collection.
- OID
- 09f37f…4005:81
ClaimEngine details
DeprecateEngine
func(id string)DeprecateEngine stops new collections; existing ones keep rendering.
- OID
- 09f37f…4005:82
DeprecateEngine details
mustEngine
func(id string) *core.engineRecord- OID
- 09f37f…4005:83
mustEngine details
copyManifest
func(m v1.Manifest) v1.ManifestcopyManifest gives core its own copy: the engine's slice was allocated in the engine realm.
- OID
- 09f37f…4005:84
copyManifest details
RenderWith
func(id string, params string, seed string) stringRenderWith renders any registered engine for arbitrary params and seed as a data URI — Studio previews and the Verify button.
- OID
- 09f37f…4005:85
RenderWith details
EngineTraits
func(id string, params string, seed string) []v1.TraitEngineTraits returns a core-owned copy of the engine's traits for seed.
- OID
- 09f37f…4005:86
EngineTraits details
TraitsWith
func(id string, params string, seed string) string- OID
- 09f37f…4005:87
TraitsWith details
VerifyEngine
func(id string) boolVerifyEngine re-renders the sample and compares it with the fingerprint stored at registration.
- OID
- 09f37f…4005:88
VerifyEngine details
EngineManifest
func(id string) v1.ManifestEngineManifest is the typed read for other realms (gallery).
- OID
- 09f37f…4005:89
EngineManifest details
EngineStatus
func(id string) stringEngineStatus is "unclaimed", "unverified", "reviewed" or "deprecated".
- OID
- 09f37f…4005:90
EngineStatus details
engineStatus
func(rec *core.engineRecord) string- OID
- 09f37f…4005:91
engineStatus details
Engine
func(id string) stringEngine is the record as JSON.
- OID
- 09f37f…4005:92
Engine details
Engines
func(offset int64, limit int64) string- OID
- 09f37f…4005:93
Engines details
writeEngine
func(w *v1.JSONWriter, rec *core.engineRecord)- OID
- 09f37f…4005:94
writeEngine details
studioInput
func(params string, seed string) v1.Input- OID
- 09f37f…4005:95
studioInput details
provenance
typeCommit–reveal v2 (design §4.2–4.3, closes RA H-3, M-5, M-6). The map is fixed by three inputs: the creator's secret sc, the beacon's secret sb and the public mint-entropy accumulator acc. Neither committer knows the other's secret while minting is open, so neither can time the last mint for a good map. Order of reveals: 1. nothing is accepted before Closed (an early reveal informs the other side); 2. the creator may reveal until revealDeadline - BeaconGraceBlocks; the beacon follows at any time before the deadline; 3. inside the last BeaconGraceBlocks only the beacon may reveal. If the creator stayed silent, the beacon's reveal finalizes at once ("beacon-only"), so the creator never sees sb while it can still choose (SA-M1; this also closes the mempool race of a creator front-running the beacon's grace reveal); 4. after revealDeadline anyone finalizes with whatever was revealed. What stays open, by design: the beacon, as last revealer after the creator, can still choose between revealing and not (one bit). It runs public code and the badge shows the outcome. The transfer lock (tokens.gno) keeps anyone from trading on early knowledge until Final. A collection launched without the beacon (only possible while no beacon is configured, SA-M2) gives the creator the whole choice of the map; it can have no creator reserve and is never reported as a fair launch (FairLaunch, Provenance "fair").
Value
core.provenance
roleCreator
untyped stringValue
"creator"
roleBeacon
untyped stringValue
"beacon"
BeaconCommit
func(cid string, commitHex string)BeaconCommit is the beacon's commitment, before any token exists.
- OID
- 09f37f…4005:96
BeaconCommit details
RevealCreatorSecret
func(cid string, secret string)- OID
- 09f37f…4005:98
RevealCreatorSecret details
RevealBeaconSecret
func(cid string, secret string)- OID
- 09f37f…4005:99
RevealBeaconSecret details
Finalize
func(cid string)Finalize is permissionless and never paused (I-2): immediately once every expected secret is revealed, otherwise after revealDeadline (fallback).
- OID
- 09f37f…4005:100
Finalize details
assertRevealOpen
func(c *core.collection, h int64)- OID
- 09f37f…4005:101
assertRevealOpen details
assertSecret
func(c *core.collection, role string, secret string, commit string)- OID
- 09f37f…4005:102
assertSecret details
revealsComplete
func(c *core.collection) bool- OID
- 09f37f…4005:103
revealsComplete details
finalize
func(c *core.collection, h int64)finalize runs at most once per collection (I-10): every caller checks state Closed, and this sets Final.
- OID
- 09f37f…4005:104
finalize details
VerifyProvenance
func(cid string) boolVerifyProvenance recomputes every commitment and the salt from public data. True only for a Final collection whose record is consistent.
- OID
- 09f37f…4005:105
VerifyProvenance details
FairLaunch
func(cid string) boolFairLaunch is true only for a Final, consistent collection whose map no single party could choose: launched with the beacon and finalized with both secrets or with the beacon's alone (after the creator stayed silent). Creator-only collections (no beacon: the creator alone knew the only secret and could steer the last mint, SA-M2) and fallbacks are not fair launches, even when VerifyProvenance is true.
- OID
- 09f37f…4005:106
FairLaunch details
isBurned
func(c *core.collection, commit string) bool- OID
- 09f37f…4005:107
isBurned details
Provenance
func(cid string) stringProvenance is the whole record as JSON; secrets and salt stay "" until revealed / final.
- OID
- 09f37f…4005:108
Provenance details
SelfAddress
func() .uverse.address- OID
- 09f37f…4005:109
SelfAddress details
CollectionCount
func() int64- OID
- 09f37f…4005:111
CollectionCount details
MintedTotal
func(cid string) int64MintedTotal counts every token ever minted, burned ones included (OA B4).
- OID
- 09f37f…4005:112
MintedTotal details
MintedBy
func(cid string, addr .uverse.address) int64MintedBy is the lifetime mint counter of addr in cid (OA B3, I-9).
- OID
- 09f37f…4005:113
MintedBy details
Info
func(cid string) v1.CollectionInfoInfo is the typed collection view for other realms.
- OID
- 09f37f…4005:114
Info details
PrimaryPayees
func(cid string) []v1.PayeePrimaryPayees returns a copy of the frozen primary-sale split.
- OID
- 09f37f…4005:115
PrimaryPayees details
FeeConfig
func() v1.FeesFeeConfig is the typed fee view minters and markets settle with.
- OID
- 09f37f…4005:116
FeeConfig details
PrimaryFeeBps
func(cid string) int64PrimaryFeeBps is the protocol fee on cid's primary sale: the fee at Launch, or the current one if the admin lowered it since (SA-I5: a fee cannot rise during a sale).
- OID
- 09f37f…4005:117
PrimaryFeeBps details
Beacon
func() .uverse.address- OID
- 09f37f…4005:118
Beacon details
Admin
func() .uverse.address- OID
- 09f37f…4005:119
Admin details
IsMinter
func(path string) bool- OID
- 09f37f…4005:120
IsMinter details
Collection
func(cid string) stringCollection is the collection record as JSON.
- OID
- 09f37f…4005:121
Collection details
Collections
func(offset int64, limit int64) string- OID
- 09f37f…4005:122
Collections details
CollectionsByCreator
func(creator .uverse.address, offset int64, limit int64) string- OID
- 09f37f…4005:123
CollectionsByCreator details
Fees
func() stringFees is the fee configuration and its hard caps as JSON.
- OID
- 09f37f…4005:124
Fees details
PendingOps
func() stringPendingOps is the timelock queue as JSON.
- OID
- 09f37f…4005:125
PendingOps details
writeCollection
func(w *v1.JSONWriter, c *core.collection)- OID
- 09f37f…4005:126
writeCollection details
clampLimit
func(limit int64) int64- OID
- 09f37f…4005:127
clampLimit details
Render
func(path string) stringRender stays minimal in the immutable realm; the browsable gallery is the private, re-deployable gallery realm (design §2.5.7).
- OID
- 09f37f…4005:128
Render details
royaltyAddress
func(cid string) .uverse.address- OID
- 09f37f…4005:129
royaltyAddress details
RoyaltyAddress
func(cid string) .uverse.address- OID
- 09f37f…4005:131
RoyaltyAddress details
DistributeRoyalties
func(cid string) int64DistributeRoyalties pushes the whole sub-treasury balance to the royalty payees. Permissionless and never paused (I-2); market/v1 calls it after every sale. Returns the amount distributed. The sub-realm banker spend is verified by spike/subtoken, core and market tests on gno v1.7.0.
- OID
- 09f37f…4005:132
DistributeRoyalties details
distribute
func(c *core.collection) int64- OID
- 09f37f…4005:133
distribute details
tidWidth
untyped bigintValue
(6 <untyped> bigint)
tokenState
typetokenState is the per-collection data the transfer hook needs. It is shared by the collection and its lockExt, so neither points at the other.
Value
core.tokenState
mintBatch
typemintBatch records one mint call; mint height is derived per token from it, so a 10-token mint writes one record, not ten.
Value
core.mintBatch
moveRecord
typeValue
core.moveRecord
lockExt
typelockExt is the grc721 Extension behind two invariants: - I-11: before Final no token moves or burns (the reveal lock that closes RA H-3's information-advantage branch). The veto is a panic, which aborts the whole transaction — the documented Extension semantics of p/nt/grc721/v0. - H-2: every transfer bumps the token's move counter, so a market listing taken at moves=N is dead after any transfer, even if the token later comes back to the seller. It is declared in this realm, so the hooks write core state with core's authority even when another realm moves the token via RealmTeller.
Value
core.lockExt
lockKind
untyped stringValue
"art-lock"
Approve
func(cid string, tid string, to .uverse.address)Every Approve of a token and every SetApprovalForAll of an (owner, operator) pair bumps a nonce. A market pins the nonces at listing time, so revoking an approval kills a listing for good: approving again later starts a new nonce and never revives the old listing (SA-L3).
- OID
- 09f37f…4005:134
Approve details
SetApprovalForAll
func(cid string, operator .uverse.address, approved bool)- OID
- 09f37f…4005:136
SetApprovalForAll details
ApprovalNonces
func(cid string, tid string, owner .uverse.address, operator .uverse.address) (tokenNonce int64, operatorNonce int64)ApprovalNonces returns the token's approval nonce and the (owner, operator) approval-for-all nonce. Approvals made directly through Token(cid).RealmTeller by a realm acting for itself do not bump them.
- OID
- 09f37f…4005:137
ApprovalNonces details
bumpNonce
func(c *core.collection, key string)- OID
- 09f37f…4005:138
bumpNonce details
nonceOf
func(c *core.collection, key string) int64- OID
- 09f37f…4005:139
nonceOf details
TransferFrom
func(cid string, tid string, from .uverse.address, to .uverse.address)- OID
- 09f37f…4005:140
TransferFrom details
Burn
func(cid string, tid string)Burn is owner-only. The supply gate uses nextTID, so a burn never reopens a slot (I-5).
- OID
- 09f37f…4005:141
Burn details
Token
func(cid string) *v0.TokenToken publishes the collection's official \*grc721.Token. Its exported methods are reads or teller factories that need the caller's live realm; the ledger itself is never published.
- OID
- 09f37f…4005:142
Token details
Royalty
func(cid string) *v0.RoyaltyRoyalty publishes the read-only royalty view (EIP-2981 RoyaltyInfo).
- OID
- 09f37f…4005:143
Royalty details
OwnerOf
func(cid string, tid string) (.uverse.address, .uverse.error)- OID
- 09f37f…4005:144
OwnerOf details
BalanceOf
func(cid string, owner .uverse.address) (int64, .uverse.error)- OID
- 09f37f…4005:145
BalanceOf details
TokenMoves
func(cid string, tid string) int64TokenMoves is the transfer counter market/v1 pins in a listing (H-2).
- OID
- 09f37f…4005:146
TokenMoves details
TokenSeed
func(cid string, tid string) stringTokenSeed is "" until the collection is Final: no read path can leak the rarity map early.
- OID
- 09f37f…4005:147
TokenSeed details
TokenState
func(cid string, tid string) stringTokenState is {mintHeight, lastMoveHeight, moves} as JSON.
- OID
- 09f37f…4005:148
TokenState details
TokenURI
func(cid string, tid string) (string, .uverse.error)TokenURI is a base64 SVG data URI. Before Final every token shows core's neutral placeholder, never engine output (design §4.2).
- OID
- 09f37f…4005:149
TokenURI details
TokenTraits
func(cid string, tid string) stringTokenTraits is \[{"trait\_type":…,"value":…}] JSON.
- OID
- 09f37f…4005:150
TokenTraits details
TokenTraitList
func(cid string, tid string) []v1.TraitTokenTraitList is the typed form of TokenTraits for other realms (a copy).
- OID
- 09f37f…4005:151
TokenTraitList details
TokenMetadata
func(cid string, tid string) stringTokenMetadata is OpenSea-style metadata JSON.
- OID
- 09f37f…4005:152
TokenMetadata details
exists
func(c *core.collection, tid string) bool- OID
- 09f37f…4005:153
exists details
tokenInput
func(c *core.collection, tid string) v1.Input- OID
- 09f37f…4005:154
tokenInput details
renderToken
func(c *core.collection, tid string) stringrenderToken runs the collection's engine on a read path. A bad output degrades to a placeholder; a panicking engine only fails reads of its own collections (interrealm v2 §9: cross-realm panics abort the query).
- OID
- 09f37f…4005:155
renderToken details
tokenTraits
func(c *core.collection, tid string) []v1.Trait- OID
- 09f37f…4005:156
tokenTraits details
writeTraits
func(w *v1.JSONWriter, ts []v1.Trait)- OID
- 09f37f…4005:157
writeTraits details
placeholderSVG
func(name string, label string) stringplaceholderSVG is core's own neutral art: identical for every token of a collection, so it carries no rarity signal.
- OID
- 09f37f…4005:158
placeholderSVG details
dataURI
func(svg string) string- OID
- 09f37f…4005:159
dataURI details
emitBatch
func(kind string, c *core.collection, to .uverse.address, first int64, last int64)emitBatch announces one MintTo ("MintBatch") or ReserveTo ("Reserved") call; each token also gets its own "Minted" event from lockExt.
- OID
- 09f37f…4005:160