PathrockNetwork Gno Explorer
HomeBlocksTransactionsRealmsPackagesValidatorsAnalytics

PathrockNetwork Gno Explorer — an independent explorer for Gno.land Mainnet (gnoland-1), operated by PathrockNetwork. Not an official Gno.land service.

gnowebarchive RPC

gno.land/r/moul/demo/wikicoin/v0

Realm
Open in gnoweb ↗

Overview

Kind
Realm (renderable)
Name
v0
Namespace
moul / demo / wikicoin
Files
3 (README)(gnomod.toml)
Exported functions
3
Module
gno.land/r/moul/demo/wikicoin/v0
gno
0.9

Files (3)

  • README.mdmarkdown
  • gnomod.tomltoml
  • contract.gnogno
contract.gnogno
1// based on Wikipedia's Solidity example: https://en.wikipedia.org/wiki/Solidity2package wikicoin34import (5	"chain/runtime/unsafe"67	"gno.land/p/nt/avl/v0"8	"gno.land/p/nt/ufmt/v0"9)1011var balances = avl.NewTree() // addr -> balance12var minter address1314// Constructor code is only run when the contract is created15func init() {16	minter = unsafe.OriginCaller()17}1819func Mint(cur realm, receiver address, amount uint) {20	if unsafe.OriginCaller() != minter {21		panic("restricted")22	}23	curBalance := BalanceOf(receiver)24	newBalance := curBalance + amount25	balances.Set(receiver.String(), newBalance)26}2728func Send(cur realm, receiver address, amount uint) {29	sender := unsafe.OriginCaller()30	senderBalance := BalanceOf(sender)31	if amount > senderBalance {32		panic(ufmt.Sprintf("insufficient balance: %d", senderBalance))33	}34	receiverBalance := BalanceOf(receiver)35	balances.Set(sender.String(), senderBalance-amount)36	balances.Set(receiver.String(), receiverBalance+amount)37}3839func BalanceOf(addr address) uint {40	balance := balances.Get(addr.String())41	if balance == nil {42		return 043	}44	return balance.(uint)45}46

Functions

  • BalanceOf(addr string) uint

  • Mint(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, receiver string, amount uint)

  • Send(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, receiver string, amount uint)

Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.

Rendered

RenderedRawgnoweb ↗
This realm does not provide renderable output (vm/qrender → NoRenderDeclError). View on gnoweb ↗

vm/qrender output, sanitized (docs/render-security.md) and displayed in an empty-sandbox iframe — scripts, forms and popups cannot run. Links stay inert in-preview; right-click to open.