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

gnodice state

Back to all declarations

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.

Open
OID
0de34f…59a0:3
SetPaused details

Inspect func

SetCroupier

func(addr .uverse.address)

SetCroupier désigne l'adresse du service qui tire les dés.

Open
OID
0de34f…59a0:5
SetCroupier details

Inspect func

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.

Open
OID
0de34f…59a0:6
SetBlocked details

Inspect func

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.

Open
OID
0de34f…59a0:7
SetLimits details

Inspect func

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.

Open
OID
0de34f…59a0:8
TransferOwnership details

Inspect func

AcceptOwnership

func()

AcceptOwnership : le propriétaire proposé accepte le contrôle du contrat.

Open
OID
0de34f…59a0:9
AcceptOwnership details

Inspect func

GetInfoJSON

func() string

GetInfoJSON renvoie l'état global du jeu et les dernières parties terminées.

Open
OID
0de34f…59a0:13
GetInfoJSON details

Inspect func

GetPlayerJSON

func(addr string) string

GetPlayerJSON renvoie les statistiques d'un joueur, son temps d'attente, ses parties en cours et ses 10 dernières parties terminées.

Open
OID
0de34f…59a0:15
GetPlayerJSON details

Inspect func

GetGameJSON

func(id int64) string

GetGameJSON renvoie une partie, ou {"error":...} si elle n'existe pas.

Open
OID
0de34f…59a0:16
GetGameJSON details

Inspect func

GetOpenGamesJSON

func(after int64) string

GetOpenGamesJSON 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.

Open
OID
0de34f…59a0:17
GetOpenGamesJSON details

Inspect func

writePlayerOpenGames

func(b *strings.Builder, player .uverse.address, open int)
Open
OID
0de34f…59a0:18
writePlayerOpenGames details

Inspect func

writeGameIDs

func(b *strings.Builder, ids []int64)

writeGameIDs écrit les parties de la plus récente à la plus ancienne.

Open
OID
0de34f…59a0:19
writeGameIDs details

Inspect func

writeGame

func(b *strings.Builder, g *gnodice.Game)
Open
OID
0de34f…59a0:20
writeGame details

Inspect func

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.

Open
OID
0de34f…59a0:21
str details

Inspect func

num

func(b *strings.Builder, key string, value int64)
Open
OID
0de34f…59a0:22
num details

Inspect func

boolean

func(b *strings.Builder, key string, value bool)
Open
OID
0de34f…59a0:23
boolean details

Inspect func

Fund

func()

Fund alimente la banque. N'importe qui peut l'appeler en envoyant des GNOT.

Open
OID
0de34f…59a0:24
Fund details

Inspect func

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.

Open
OID
0de34f…59a0:26
Withdraw details

Inspect func

Bankroll

func() int64

Bankroll renvoie le solde total de la banque en ugnot.

Open
OID
0de34f…59a0:27
Bankroll details

Inspect func

Reserved

func() int64

Reserved renvoie la somme réservée aux parties en cours, en ugnot.

Open
OID
0de34f…59a0:28
Reserved details

Inspect func

Available

func() int64

Available renvoie le solde libre (non réservé), en ugnot.

Open
OID
0de34f…59a0:29
Available details

Inspect func

MaxCoverableBet

func() int64

MaxCoverableBet 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.

Open
OID
0de34f…59a0:30
MaxCoverableBet details

Inspect func

rollDay

func(t int64)

rollDay remet le compteur de gains à zéro quand on change de jour.

Open
OID
0de34f…59a0:32
rollDay details

Inspect func

dailyLimitReached

func(t int64) bool
Open
OID
0de34f…59a0:33
dailyLimitReached details

Inspect func

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.

Open
OID
0de34f…59a0:34
recordPayout details

Inspect func

checkLowBankroll

func()

checkLowBankroll émet une alerte quand le solde disponible passe sous le seuil.

Open
OID
0de34f…59a0:35
checkLowBankroll details

Inspect func

hexLen

untyped bigint

// 32 octets écrits en hexadécimal

Value

(64 <untyped> bigint)

Commitment

func(player .uverse.address, guess int, salt string) string

Commitment calcule l'empreinte d'un chiffre caché. Lecture seule : le site et le croupier peuvent l'appeler pour vérifier leurs calculs.

Open
OID
0de34f…59a0:36
Commitment details

Inspect func

rollFromSeed

func(seed string, commitment string, id int64) int

rollFromSeed 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.

Open
OID
0de34f…59a0:38
rollFromSeed details

Inspect func

RollFor

func(seed string, commitment string, id int64) int

RollFor : version publique de rollFromSeed, pour que chacun puisse vérifier un tirage passé (graine et empreinte sont publiques après le tirage).

Open
OID
0de34f…59a0:39
RollFor details

Inspect func

isHex64

func(s string) bool

isHex64 : exactement 64 caractères hexadécimaux minuscules.

Open
OID
0de34f…59a0:40
isHex64 details

Inspect func

Play

func(commitment string) string

Play 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".

Open
OID
0de34f…59a0:42
Play details

Inspect func

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.

Open
OID
0de34f…59a0:44
Resolve details

Inspect func

Reveal

func(id int64, guess int, salt string) string

Reveal 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".

Open
OID
0de34f…59a0:45
Reveal details

Inspect func

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.

Open
OID
0de34f…59a0:46
Refund details

Inspect func

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.

Open
OID
0de34f…59a0:47
Expire details

Inspect func

receivedBet

func() int64

receivedBet vérifie la mise envoyée avec la transaction et renvoie son montant.

Open
OID
0de34f…59a0:48
receivedBet details

Inspect func

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.

Open
OID
0de34f…59a0:49
finish details

Inspect func

pay

func(to .uverse.address, amount int64)

pay envoie des GNOT de la banque vers une adresse.

Open
OID
0de34f…59a0:50
pay details

Inspect func

cooldownRemaining

func(p *gnodice.playerData, t int64) int64

cooldownRemaining renvoie le nombre de secondes à attendre avant de pouvoir rejouer (0 si le joueur peut jouer maintenant).

Open
OID
0de34f…59a0:51
cooldownRemaining details

Inspect func

formatDuration

func(seconds int64) string

formatDuration transforme un nombre de secondes en texte, ex. "7 min 12 s".

Open
OID
0de34f…59a0:52
formatDuration details

Inspect func

Denom

untyped string

Paramètres du jeu. 1 GNOT = 1 000 000 ugnot (la plus petite unité).

Value

"ugnot"

UgnotPerGnot

int64

Paramè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 bigint

Paramè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

type

Status : é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

type

Game décrit une partie.

Value

gnodice.Game

playerData

type

playerData 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

bool

Value

false

games

*v0.Tree

// numéro (texte à zéros) -> \*Game

Open
OID
0de34f…59a0:59
games details

Inspect pointer

openGames

*v0.Tree

// parties en cours, même clé -> true

Open
OID
0de34f…59a0:62
openGames details

Inspect pointer

blocked

*v0.Tree

// adresses interdites de jeu -> true

Open
OID
0de34f…59a0:68
blocked details

Inspect pointer

recent

[]int64 (len=3)

// dernières parties, tous joueurs confondus

Open
OID
0de34f…59a0:143
recent details (len=3)

+3 more Inspect slice

reserved

int64

// somme des gains maximaux des parties en cours

Value

0

totalGames

int64

// parties créées (= dernier numéro)

Value

3

totalWins

int

Value

0

totalLosses

int

Value

3

totalRefunded

int

Value

0

totalExpired

int

Value

0

totalWagered

int64

Value

3000000

totalPaid

int64

Value

0

totalFunded

int64

Value

250000000

totalWithdrawn

int64

Value

0

dailyPayoutLimit

int64

Value

500000000

lowBankroll

int64

Value

100000000

payoutDay

int64

Value

20727

payoutToday

int64

Value

0

gameKey

func(id int64) string

gameKey : clé de tri des parties (zéros devant pour garder l'ordre).

Open
OID
0de34f…59a0:89
gameKey details

Inspect func

getGame

func(id int64) *gnodice.Game
Open
OID
0de34f…59a0:90
getGame details

Inspect func

mustGetGame

func(id int64) *gnodice.Game
Open
OID
0de34f…59a0:91
mustGetGame details

Inspect func

getPlayer

func(addr .uverse.address) *gnodice.playerData
Open
OID
0de34f…59a0:92
getPlayer details

Inspect func

isBlocked

func(addr .uverse.address) bool
Open
OID
0de34f…59a0:93
isBlocked details

Inspect func

pushID

func(list []int64, id int64) []int64

pushID ajoute un numéro de partie en ne gardant que les HistorySize derniers.

Open
OID
0de34f…59a0:94
pushID details

Inspect func

Render

func(path string) string

Render 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.

Open
OID
0de34f…59a0:95
Render details

Inspect func

renderPlayer

func(player .uverse.address) string
Open
OID
0de34f…59a0:98
renderPlayer details

Inspect func

renderGame

func(g *gnodice.Game) string
Open
OID
0de34f…59a0:99
renderGame details

Inspect func

writeGamesTable

func(b *strings.Builder, ids []int64, withPlayer bool)
Open
OID
0de34f…59a0:100
writeGamesTable details

Inspect func

digitOrDash

func(v int) string
Open
OID
0de34f…59a0:101
digitOrDash details

Inspect func

shortAddress

func(a .uverse.address) string

shortAddress raccourcit une adresse : g1abcd...wxyz

Open
OID
0de34f…59a0:102
shortAddress details

Inspect func

formatGnot

func(ugnot int64) string

formatGnot convertit des ugnot en GNOT lisibles : 1500000 -> "1.5"

Open
OID
0de34f…59a0:103
formatGnot details

Inspect func
SetPaused : func(value bool) Inspect
SetCroupier : func(addr .uverse.address) Inspect
SetBlocked : func(addr .uverse.address, value bool) Inspect
SetLimits : func(dailyLimit int64, lowBankrollThreshold int64) Inspect
TransferOwnership : func(newOwner .uverse.address) Inspect
AcceptOwnership : func() Inspect
Owner : func() .uverse.address Inspect
Croupier : func() .uverse.address Inspect
assertOwner : func() Inspect
GetInfoJSON : func() string Inspect
GetPlayerJSON : func(addr string) string Inspect
GetGameJSON : func(id int64) string Inspect
GetOpenGamesJSON : func(after int64) string Inspect
writePlayerOpenGames : func(b *strings.Builder, player .uverse.address, open int) Inspect
writeGameIDs : func(b *strings.Builder, ids []int64) Inspect
writeGame : func(b *strings.Builder, g *gnodice.Game) Inspect
str : func(b *strings.Builder, key string, value string) Inspect
num : func(b *strings.Builder, key string, value int64) Inspect
boolean : func(b *strings.Builder, key string, value bool) Inspect
Fund : func() Inspect
Withdraw : func(amount int64) Inspect
Bankroll : func() int64 Inspect
Reserved : func() int64 Inspect
Available : func() int64 Inspect
MaxCoverableBet : func() int64 Inspect
available : func() int64 Inspect
rollDay : func(t int64) Inspect
dailyLimitReached : func(t int64) bool Inspect
recordPayout : func(amount int64) Inspect
checkLowBankroll : func() Inspect
hexLen : untyped bigint =(64 <untyped> bigint)
Commitment : func(player .uverse.address, guess int, salt string) string Inspect
rollFromSeed : func(seed string, commitment string, id int64) int Inspect
RollFor : func(seed string, commitment string, id int64) int Inspect
isHex64 : func(s string) bool Inspect
itoa64 : func(v int64) string Inspect
Play : func(commitment string) string Inspect
Resolve : func(id int64, seed string) Inspect
Reveal : func(id int64, guess int, salt string) string Inspect
Refund : func(id int64) Inspect
Expire : func(id int64) Inspect
receivedBet : func() int64 Inspect
finish : func(g *gnodice.Game) Inspect
pay : func(to .uverse.address, amount int64) Inspect
cooldownRemaining : func(p *gnodice.playerData, t int64) int64 Inspect
formatDuration : func(seconds int64) string Inspect
Denom : untyped string ="ugnot"
UgnotPerGnot : int64 =1000000
MinBet : int64 =1000000
MaxBet : int64 =10000000
PayoutMultiplier : int64 =5
CooldownSeconds : int64 =600
HistorySize : untyped bigint =(10 <untyped> bigint)
DieFaces : untyped bigint =(6 <untyped> bigint)
ResolveTimeout : int64 =1800
RevealWindow : int64 =604800
DefaultDailyPayoutLimit : int64 =500000000
DefaultLowBankroll : int64 =100000000
maxPageSize : untyped bigint =(50 <untyped> bigint)
Status : type =gnodice.Status
StatusPending : gnodice.Status =<zero>
StatusRolled : gnodice.Status =<zero>
StatusWon : gnodice.Status =<zero>
StatusLost : gnodice.Status =<zero>
StatusRefunded : gnodice.Status =<zero>
StatusExpired : gnodice.Status =<zero>
Game : type =gnodice.Game
playerData : type =gnodice.playerData
owner : .uverse.address =<gnolang.StringValue>
pendingOwner : .uverse.address =<zero>
croupier : .uverse.address =<gnolang.StringValue>
realmAddr : .uverse.address =<gnolang.StringValue>
paused : bool =false
games : *v0.Tree Inspect
openGames : *v0.Tree Inspect
players : *v0.Tree Inspect
blocked : *v0.Tree Inspect
recent : []int64 (len=3) Inspect
reserved : int64 =0
totalGames : int64 =3
totalWins : int =0
totalLosses : int =3
totalRefunded : int =0
totalExpired : int =0
totalWagered : int64 =3000000
totalPaid : int64 =0
totalFunded : int64 =250000000
totalWithdrawn : int64 =0
dailyPayoutLimit : int64 =500000000
lowBankroll : int64 =100000000
payoutDay : int64 =20727
payoutToday : int64 =0
init.92 : func() Inspect
now : func() int64 Inspect
height : func() int64 Inspect
gameKey : func(id int64) string Inspect
getGame : func(id int64) *gnodice.Game Inspect
mustGetGame : func(id int64) *gnodice.Game Inspect
getPlayer : func(addr .uverse.address) *gnodice.playerData Inspect
isBlocked : func(addr .uverse.address) bool Inspect
pushID : func(list []int64, id int64) []int64 Inspect
Render : func(path string) string Inspect
renderHome : func() string Inspect
renderPlayer : func(player .uverse.address) string Inspect
renderGame : func(g *gnodice.Game) string Inspect
writeGamesTable : func(b *strings.Builder, ids []int64, withPlayer bool) Inspect
digitOrDash : func(v int) string Inspect
shortAddress : func(a .uverse.address) string Inspect
formatGnot : func(ugnot int64) string Inspect