doc.gno
1.42 Kb · 30 lines
1// v0 - Unaudited: This is an initial version that has not yet been formally audited.
2// Use in production at your own risk.
3//
4// Package skins is the catalog of plane skins of gnofly, a multiplayer plane
5// game, and the tokens of the skins sold. Every skin bought is a GRC721
6// token on gno.land/p/nt/grc721/v0, one per buyer and design.
7//
8// The tokens are soulbound: there is no TransferFrom, no Approve and no
9// SetApprovalForAll, and the token object is not exported, so nothing can
10// move a skin away from its buyer. Its owner can Burn it, which gives back
11// the storage deposit (not the price).
12//
13// Supply is unlimited by default; an admin can cap a design. Classic, the
14// look every pilot flies by default, is free and is not a token.
15//
16// Writers:
17//
18// - anyone buys a skin with its price attached (Buy), and burns their own
19// (Burn);
20// - the admins of the game realm edit the catalog (SetSkin, SetSkinListed).
21//
22// The realm keeps no roles and no money: admins and treasury are those of
23// gno.land/r/g1t2kg2vtr3fukg43eujkn6x53gfdyakhngt4sfd/gnofly/game/v0, and every
24// sale is forwarded to the treasury in the same transaction.
25//
26// A token stores only its owner (the ledger), its design and an entry in the
27// buyer's list: no metadata record and no URI. TokenURI is computed from the
28// design. Reads are plain functions meant for vm/qeval: CatalogJSON, SkinsOf,
29// OwnerOf, SkinOf, TokenURI, Render.
30package skins