SetPaused
func(value bool)SetPaused met le jeu en pause (true) ou le relance (false). En pause, les nouvelles mises sont refusées mais les parties en cours peuvent se terminer.
- OID
- 0de34f…59a0:3
SetPaused details
SetCroupier
func(addr .uverse.address)SetCroupier désigne l'adresse du service qui tire les dés.
- OID
- 0de34f…59a0:5
SetCroupier details
SetBlocked
func(addr .uverse.address, value bool)SetBlocked interdit (true) ou autorise de nouveau (false) une adresse à jouer. Les parties déjà en cours de cette adresse se terminent normalement.
- OID
- 0de34f…59a0:6
SetBlocked details
SetLimits
func(dailyLimit int64, lowBankrollThreshold int64)SetLimits règle le coupe-circuit (gains maximum par jour) et le seuil d'alerte de la banque, en ugnot.
- OID
- 0de34f…59a0:7
SetLimits details
TransferOwnership
func(newOwner .uverse.address)TransferOwnership PROPOSE un nouveau propriétaire. Il ne devient propriétaire qu'en appelant AcceptOwnership : une faute de frappe dans l'adresse ne fait donc jamais perdre le contrôle du contrat.
- OID
- 0de34f…59a0:8
TransferOwnership details
AcceptOwnership
func()AcceptOwnership : le propriétaire proposé accepte le contrôle du contrat.
- OID
- 0de34f…59a0:9
AcceptOwnership details
Owner
func() .uverse.address- OID
- 0de34f…59a0:10
Owner details
Croupier
func() .uverse.address- OID
- 0de34f…59a0:11
Croupier details
assertOwner
func()- OID
- 0de34f…59a0:12
assertOwner details
GetInfoJSON
func() stringGetInfoJSON renvoie l'état global du jeu et les dernières parties terminées.
- OID
- 0de34f…59a0:13
GetInfoJSON details
GetPlayerJSON
func(addr string) stringGetPlayerJSON renvoie les statistiques d'un joueur, son temps d'attente, ses parties en cours et ses 10 dernières parties terminées.
- OID
- 0de34f…59a0:15
GetPlayerJSON details
GetGameJSON
func(id int64) stringGetGameJSON renvoie une partie, ou {"error":...} si elle n'existe pas.
- OID
- 0de34f…59a0:16
GetGameJSON details
GetOpenGamesJSON
func(after int64) stringGetOpenGamesJSON renvoie les parties en cours (en attente de tirage ou de révélation), de la plus ancienne à la plus récente, à partir du numéro \`after\` exclu (pagination ; 0 pour commencer). Utilisé par le croupier.
- OID
- 0de34f…59a0:17
GetOpenGamesJSON details
writePlayerOpenGames
func(b *strings.Builder, player .uverse.address, open int)- OID
- 0de34f…59a0:18
writePlayerOpenGames details
writeGameIDs
func(b *strings.Builder, ids []int64)writeGameIDs écrit les parties de la plus récente à la plus ancienne.
- OID
- 0de34f…59a0:19
writeGameIDs details
writeGame
func(b *strings.Builder, g *gnodice.Game)- OID
- 0de34f…59a0:20
writeGame details
str
func(b *strings.Builder, key string, value string)Chaque champ est suivi d'une virgule ; le dernier champ d'un objet est écrit à la main, sans virgule.
- OID
- 0de34f…59a0:21
str details
num
func(b *strings.Builder, key string, value int64)- OID
- 0de34f…59a0:22
num details
boolean
func(b *strings.Builder, key string, value bool)- OID
- 0de34f…59a0:23
boolean details
Fund
func()Fund alimente la banque. N'importe qui peut l'appeler en envoyant des GNOT.
- OID
- 0de34f…59a0:24
Fund details
Withdraw
func(amount int64)Withdraw retire des GNOT DISPONIBLES vers le propriétaire. L'argent réservé aux parties en cours ne peut pas être retiré. amount est en ugnot.
- OID
- 0de34f…59a0:26
Withdraw details
Bankroll
func() int64Bankroll renvoie le solde total de la banque en ugnot.
- OID
- 0de34f…59a0:27
Bankroll details
Reserved
func() int64Reserved renvoie la somme réservée aux parties en cours, en ugnot.
- OID
- 0de34f…59a0:28
Reserved details
Available
func() int64Available renvoie le solde libre (non réservé), en ugnot.
- OID
- 0de34f…59a0:29
Available details
MaxCoverableBet
func() int64MaxCoverableBet renvoie la plus grosse mise (en ugnot) acceptée en ce moment. Une mise b arrive dans la banque puis réserve 5 x b : il faut donc disponible + b >= 5 x b, soit b \<= disponible / 4. Renvoie 0 si le jeu est en pause ou si la limite du jour est atteinte.
- OID
- 0de34f…59a0:30
MaxCoverableBet details
available
func() int64- OID
- 0de34f…59a0:31
available details
rollDay
func(t int64)rollDay remet le compteur de gains à zéro quand on change de jour.
- OID
- 0de34f…59a0:32
rollDay details
dailyLimitReached
func(t int64) bool- OID
- 0de34f…59a0:33
dailyLimitReached details
recordPayout
func(amount int64)recordPayout compte un gain payé. Coupe-circuit : si les gains du jour dépassent la limite (signe possible d'une attaque ou d'un croupier compromis), le jeu se met en pause tout seul. Le gain en cours est quand même payé : le joueur a gagné honnêtement.
- OID
- 0de34f…59a0:34
recordPayout details
checkLowBankroll
func()checkLowBankroll émet une alerte quand le solde disponible passe sous le seuil.
- OID
- 0de34f…59a0:35
checkLowBankroll details
hexLen
untyped bigint// 32 octets écrits en hexadécimal
Value
(64 <untyped> bigint)
Commitment
func(player .uverse.address, guess int, salt string) stringCommitment calcule l'empreinte d'un chiffre caché. Lecture seule : le site et le croupier peuvent l'appeler pour vérifier leurs calculs.
- OID
- 0de34f…59a0:36
Commitment details
rollFromSeed
func(seed string, commitment string, id int64) introllFromSeed calcule le dé à partir de la graine du croupier, de l'empreinte du joueur et du numéro de la partie. Le modulo 6 sur 64 bits a un biais inférieur à 1 sur 3 milliards de milliards : négligeable.
- OID
- 0de34f…59a0:38
rollFromSeed details
RollFor
func(seed string, commitment string, id int64) intRollFor : version publique de rollFromSeed, pour que chacun puisse vérifier un tirage passé (graine et empreinte sont publiques après le tirage).
- OID
- 0de34f…59a0:39
RollFor details
isHex64
func(s string) boolisHex64 : exactement 64 caractères hexadécimaux minuscules.
- OID
- 0de34f…59a0:40
isHex64 details
itoa64
func(v int64) string- OID
- 0de34f…59a0:41
itoa64 details
Play
func(commitment string) stringPlay mise sur un chiffre caché. Le joueur envoie sa mise (1 à 10 GNOT) avec la transaction et l'empreinte de son chiffre (voir Commitment). Renvoie le numéro de la partie, par exemple "id=42".
- OID
- 0de34f…59a0:42
Play details
Resolve
func(id int64, seed string)Resolve tire le dé d'une partie en attente. Réservé au croupier, qui fournit une graine aléatoire de 32 octets (64 caractères hexadécimaux) sans connaître le chiffre du joueur. La graine est publiée : chacun peut refaire le calcul.
- OID
- 0de34f…59a0:44
Resolve details
Reveal
func(id int64, guess int, salt string) stringReveal dévoile le chiffre caché et termine la partie. N'importe qui peut l'appeler (le joueur ou le service du site) : le gain va toujours au joueur. Renvoie le résultat, par exemple "roll=4;won=true;payout=50000000".
- OID
- 0de34f…59a0:45
Reveal details
Refund
func(id int64)Refund rend sa mise au joueur si le croupier n'a pas tiré le dé à temps (ResolveTimeout). N'importe qui peut le déclencher : l'argent va au joueur.
- OID
- 0de34f…59a0:46
Refund details
Expire
func(id int64)Expire termine une partie dont le chiffre n'a jamais été dévoilé (RevealWindow) : elle compte comme perdue et la réserve est libérée. N'importe qui peut l'appeler.
- OID
- 0de34f…59a0:47
Expire details
receivedBet
func() int64receivedBet vérifie la mise envoyée avec la transaction et renvoie son montant.
- OID
- 0de34f…59a0:48
receivedBet details
finish
func(g *gnodice.Game)finish : partie terminée. Libère la réserve, la retire des parties en cours et l'ajoute aux historiques.
- OID
- 0de34f…59a0:49
finish details
pay
func(to .uverse.address, amount int64)pay envoie des GNOT de la banque vers une adresse.
- OID
- 0de34f…59a0:50
pay details
cooldownRemaining
func(p *gnodice.playerData, t int64) int64cooldownRemaining renvoie le nombre de secondes à attendre avant de pouvoir rejouer (0 si le joueur peut jouer maintenant).
- OID
- 0de34f…59a0:51
cooldownRemaining details
formatDuration
func(seconds int64) stringformatDuration transforme un nombre de secondes en texte, ex. "7 min 12 s".
- OID
- 0de34f…59a0:52
formatDuration details
Denom
untyped stringParamètres du jeu. 1 GNOT = 1 000 000 ugnot (la plus petite unité).
Value
"ugnot"
UgnotPerGnot
int64Paramètres du jeu. 1 GNOT = 1 000 000 ugnot (la plus petite unité).
Value
1000000
MinBet
int64// mise minimale : 1 GNOT
Value
1000000
MaxBet
int64// mise maximale : 10 GNOT
Value
10000000
PayoutMultiplier
int64// gain = 5 x la mise
Value
5
CooldownSeconds
int64// 10 minutes entre deux lancers
Value
600
HistorySize
untyped bigint// nombre de parties gardées par joueur
Value
(10 <untyped> bigint)
DieFaces
untyped bigintParamètres du jeu. 1 GNOT = 1 000 000 ugnot (la plus petite unité).
Value
(6 <untyped> bigint)
ResolveTimeout
int64// sans tirage au bout de 30 min : le joueur peut être remboursé
Value
1800
RevealWindow
int64// 7 jours pour dévoiler son chiffre après le tirage
Value
604800
DefaultDailyPayoutLimit
int64// au-delà, le jeu se met en pause tout seul
Value
500000000
DefaultLowBankroll
int64// en dessous, un événement d'alerte est émis
Value
100000000
maxPageSize
untyped bigint// nombre maximal de parties renvoyées par une lecture
Value
(50 <untyped> bigint)
Status
typeStatus : étape d'une partie.
Value
gnodice.Status
StatusPending
gnodice.Status// mise reçue, en attente du tirage
Value
<zero>
StatusRolled
gnodice.Status// dé tiré, en attente du chiffre dévoilé
Value
<zero>
StatusWon
gnodice.Status// chiffre dévoilé : gagné et payé
Value
<zero>
StatusLost
gnodice.Status// chiffre dévoilé : perdu
Value
<zero>
StatusRefunded
gnodice.Status// croupier trop lent : mise rendue
Value
<zero>
StatusExpired
gnodice.Status// chiffre jamais dévoilé : perdu
Value
<zero>
Game
typeGame décrit une partie.
Value
gnodice.Game
playerData
typeplayerData regroupe les informations d'un joueur.
Value
gnodice.playerData
owner
.uverse.address// propriétaire : retraits, pause, réglages
Value
<gnolang.StringValue>
pendingOwner
.uverse.address// propriétaire proposé, qui doit accepter (TransferOwnership en 2 temps)
Value
<zero>
croupier
.uverse.address// service autorisé à tirer les dés (Resolve)
Value
<gnolang.StringValue>
realmAddr
.uverse.address// adresse du contrat = adresse de la banque
Value
<gnolang.StringValue>
paused
boolValue
false
games
*v0.Tree// numéro (texte à zéros) -> \*Game
- OID
- 0de34f…59a0:59
games details
openGames
*v0.Tree// parties en cours, même clé -> true
- OID
- 0de34f…59a0:62
openGames details
players
*v0.Tree// adresse -> \*playerData
- OID
- 0de34f…59a0:65
players details
blocked
*v0.Tree// adresses interdites de jeu -> true
- OID
- 0de34f…59a0:68
blocked details
recent
[]int64// dernières parties, tous joueurs confondus
- OID
- 0de34f…59a0:143
recent details
reserved
int64// somme des gains maximaux des parties en cours
Value
0
totalGames
int64// parties créées (= dernier numéro)
Value
3
totalWins
intValue
0
totalLosses
intValue
3
totalRefunded
intValue
0
totalExpired
intValue
0
totalWagered
int64Value
3000000
totalPaid
int64Value
0
totalFunded
int64Value
250000000
totalWithdrawn
int64Value
0
dailyPayoutLimit
int64Value
500000000
lowBankroll
int64Value
100000000
payoutDay
int64Value
20727
payoutToday
int64Value
0
init.92
func()- OID
- 0de34f…59a0:85
init.92 details
now
func() int64- OID
- 0de34f…59a0:87
now details
height
func() int64- OID
- 0de34f…59a0:88
height details
gameKey
func(id int64) stringgameKey : clé de tri des parties (zéros devant pour garder l'ordre).
- OID
- 0de34f…59a0:89
gameKey details
getGame
func(id int64) *gnodice.Game- OID
- 0de34f…59a0:90
getGame details
mustGetGame
func(id int64) *gnodice.Game- OID
- 0de34f…59a0:91
mustGetGame details
getPlayer
func(addr .uverse.address) *gnodice.playerData- OID
- 0de34f…59a0:92
getPlayer details
isBlocked
func(addr .uverse.address) bool- OID
- 0de34f…59a0:93
isBlocked details
pushID
func(list []int64, id int64) []int64pushID ajoute un numéro de partie en ne gardant que les HistorySize derniers.
- OID
- 0de34f…59a0:94
pushID details
Render
func(path string) stringRender affiche une page lisible sur gnoweb (le site officiel de gno.land). - chemin "" : règles, banque et dernières parties - chemin "player/\<g1...>" : statistiques et historique d'un joueur - chemin "game/\<numéro>" : une partie, avec de quoi vérifier le tirage Le chemin est choisi par le visiteur : on ne l'affiche jamais tel quel, on n'utilise qu'une adresse ou un numéro validés.
- OID
- 0de34f…59a0:95
Render details
renderHome
func() string- OID
- 0de34f…59a0:97
renderHome details
renderPlayer
func(player .uverse.address) string- OID
- 0de34f…59a0:98
renderPlayer details
renderGame
func(g *gnodice.Game) string- OID
- 0de34f…59a0:99
renderGame details
writeGamesTable
func(b *strings.Builder, ids []int64, withPlayer bool)- OID
- 0de34f…59a0:100
writeGamesTable details
digitOrDash
func(v int) string- OID
- 0de34f…59a0:101
digitOrDash details
shortAddress
func(a .uverse.address) stringshortAddress raccourcit une adresse : g1abcd...wxyz
- OID
- 0de34f…59a0:102
shortAddress details
formatGnot
func(ugnot int64) stringformatGnot convertit des ugnot en GNOT lisibles : 1500000 -> "1.5"
- OID
- 0de34f…59a0:103