# `gno.land/r/moul/demo/hello` Step 1 of the `r/moul/demo` walkthrough: the smallest realm that can be deployed and called. ```go func Hello() string { return "Hello World!" } func privateMethod() string { return "I'm private" } // not callable ``` The point is the capitalization rule. `Hello` is exported, so it is part of the realm's transaction surface and can be called with `gnokey maketx call`. `privateMethod` is not exported, so nothing outside the package can reach it, on chain or off. ```bash gnokey maketx call -pkgpath gno.land/r/moul/demo/hello \ -func Hello -gas-fee 20000ugnot -gas-wanted 2000000 -broadcast moul ``` Next: [`args`](../args) adds a parameter. --- 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/moul/demo/hello/v0?network=mainnet)](https://gnoscope.com/realm/r/moul/demo/hello/v0) [![transactions](https://gnoscope.com/_badges/shield/txs/r/moul/demo/hello/v0?network=mainnet)](https://gnoscope.com/realm/r/moul/demo/hello/v0) [![unique callers](https://gnoscope.com/_badges/shield/users/r/moul/demo/hello/v0?network=mainnet)](https://gnoscope.com/realm/r/moul/demo/hello/v0) [![deployed revision](https://gnoscope.com/_badges/shield/version/r/moul/demo/hello/v0?network=mainnet)](https://gnoscope.com/realm/r/moul/demo/hello/v0) > ⚠️ **Disclaimer:** provided as-is, without warranty; not security-audited. Full disclaimer: [DISCLAIMER](https://github.com/moul/gno-contracts/blob/main/DISCLAIMER.md).