# `gno.land/r/nym-moultest123/demo/wikicoin` Step 5 of the `r/moul/demo` walkthrough: the token from [Wikipedia's Solidity article](https://en.wikipedia.org/wiki/Solidity), translated to gno line by line. ```go func Mint(cur realm, receiver address, amount uint) // minter only func Send(cur realm, receiver address, amount uint) func BalanceOf(addr address) uint ``` What the translation shows: - Solidity's `constructor` becomes `init()`, which runs once at deploy. The deployer is recorded as `minter`. - `mapping(address => uint)` becomes an [`avl.Tree`](https://github.com/gnolang/gno/tree/master/examples/gno.land/p/nt/avl) keyed by the address string. Gno has maps, but an avl tree is the storage-friendly choice for a ledger that grows. - `require(msg.sender == minter)` becomes an explicit `panic("restricted")`. A panic aborts the transaction and reverts every write, the same way a revert does. - Solidity's `msg.sender` is `unsafe.OriginCaller()` here, which is the transaction signer, not the immediate caller. That distinction does not matter in a demo and matters a great deal in production: it is what `AssertOriginCall` guards exist for. This is teaching material, not a token to use. For a real one, use [`p/nt/grc20`](https://github.com/gnolang/gno/tree/master/examples/gno.land/p/nt/grc20), which [`grc20`](../grc20) demonstrates next. Previous: [`render`](../render). Next: [`grc20`](../grc20). --- Part of **[moul/gno-contracts](https://github.com/moul/gno-contracts)** — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage. **On mainnet:** [![deployment status](https://gnoscope.com/_badges/shield/status/r/nym-moultest123/demo/wikicoin/v0?network=mainnet)](https://gnoscope.com/realm/r/nym-moultest123/demo/wikicoin/v0) [![transactions](https://gnoscope.com/_badges/shield/txs/r/nym-moultest123/demo/wikicoin/v0?network=mainnet)](https://gnoscope.com/realm/r/nym-moultest123/demo/wikicoin/v0) [![unique callers](https://gnoscope.com/_badges/shield/users/r/nym-moultest123/demo/wikicoin/v0?network=mainnet)](https://gnoscope.com/realm/r/nym-moultest123/demo/wikicoin/v0) [![deployed revision](https://gnoscope.com/_badges/shield/version/r/nym-moultest123/demo/wikicoin/v0?network=mainnet)](https://gnoscope.com/realm/r/nym-moultest123/demo/wikicoin/v0) **Dependency graph:** ![gno.land/r/nym-moultest123/demo/wikicoin/v0 dependency graph](https://raw.githubusercontent.com/moul/gno-contracts/main/_assets/gno.land/r/nym-moultest123/demo/wikicoin/v0/deps.png) > ⚠️ **Disclaimer:** provided as-is, without warranty; not security-audited. Full disclaimer: [DISCLAIMER](https://github.com/moul/gno-contracts/blob/main/DISCLAIMER.md).