# Getting Started This is a demo of Gno smart contract programming. This document was constructed by Gno onto a smart contract hosted on the data Realm name ["gno.land/r/demo/boards"](https://gno.land/r/demo/boards/) ([github](https://github.com/gnolang/gno/tree/master/examples/gno.land/r/demo/boards)). ## Build `gnokey`, create your account, and interact with Gno. NOTE: Where you see `--remote test3.gno.land:36657` here, that flag can be replaced with `--remote localhost:26657` for local testnets. ### Build `gnokey`. ```bash git clone git@github.com:gnolang/gno.git cd ./gno make ``` ### Generate a seed/mnemonic code. ```bash ./build/gnokey generate ``` NOTE: You can generate 24 words with any good bip39 generator. ### Create a new account using your mnemonic. ```bash ./build/gnokey add KEYNAME --recover ``` NOTE: `KEYNAME` is your key identifier, and should be changed. ### Verify that you can see your account locally. ```bash ./build/gnokey list ``` ## Interact with the blockchain: ### Get your current balance, account number, and sequence number. ```bash ./build/gnokey query auth/accounts/ACCOUNT_ADDR --remote test3.gno.land:36657 ``` NOTE: you can retrieve your `ACCOUNT_ADDR` with `./build/gnokey list`. ### Acquire testnet tokens using the official faucet. Go to https://gno.land/faucet ### Create a board with a smart contract call. NOTE: `BOARDNAME` will be the slug of the board, and should be changed. ```bash ./build/gnokey maketx call KEYNAME --pkgpath "gno.land/r/demo/boards" --func "CreateBoard" --args "BOARDNAME" --gas-fee "1000000ugnot" --gas-wanted "2000000" --broadcast true --chainid test3 --remote test3.gno.land:36657 ``` Interactive documentation: https://gno.land/r/demo/boards?help&__func=CreateBoard Next, query for the permanent board ID by querying (you need this to create a new post): ```bash ./build/gnokey query "vm/qeval" --data "gno.land/r/demo/boards GetBoardIDFromName(\"BOARDNAME\")" --remote test3.gno.land:36657 ``` ### Create a post of a board with a smart contract call. NOTE: If a board was created successfully, your SEQUENCE_NUMBER would have increased. ```bash ./build/gnokey maketx call KEYNAME --pkgpath "gno.land/r/demo/boards" --func "CreateThread" --args BOARD_ID --args "Hello gno.land" --args\#file "./examples/gno.land/r/demo/boards/example_post.md" --gas-fee 1000000ugnot --gas-wanted 2000000 --broadcast true --chainid test3 --remote test3.gno.land:36657 ``` Interactive documentation: https://gno.land/r/demo/boards?help&__func=CreateThread ### Create a comment to a post. ```bash ./build/gnokey maketx call KEYNAME --pkgpath "gno.land/r/demo/boards" --func "CreateReply" --args "BOARD_ID" --args "1" --args "1" --args "Nice to meet you too." --gas-fee 1000000ugnot --gas-wanted 2000000 --broadcast true --chainid test3 --remote test3.gno.land:36657 ``` Interactive documentation: https://gno.land/r/demo/boards?help&__func=CreateReply ```bash ./build/gnokey query "vm/qrender" --data "gno.land/r/demo/boards BOARDNAME/1" --remote test3.gno.land:36657 ``` ### Render page with optional path expression. The contents of `https://gno.land/r/demo/boards:` and `https://gno.land/r/demo/boards:gnolang` are rendered by calling the `Render(path string)` function like so: ```bash ./build/gnokey query "vm/qrender" --data "gno.land/r/demo/boards gnolang" ``` ## Starting a local `gnoland` node: ### Add test account. ```bash ./build/gnokey add test1 --recover ``` Use this mneonic: > source bonus chronic canvas draft south burst lottery vacant surface solve popular case indicate oppose farm nothing bullet exhibit title speed wink action roast ### Start `gnoland` node. ```bash ./build/gnoland ``` NOTE: This can be reset with `make reset` ### Publish the "gno.land/p/demo/avl" package. ```bash ./build/gnokey maketx addpkg test1 --pkgpath "gno.land/p/demo/avl" --pkgdir "examples/gno.land/p/demo/avl" --deposit 100000000ugnot --gas-fee 1000000ugnot --gas-wanted 2000000 --broadcast true --chainid test3 --remote localhost:26657 ``` ### Publish the "gno.land/r/demo/boards" realm package. ```bash ./build/gnokey maketx addpkg test1 --pkgpath "gno.land/r/demo/boards" --pkgdir "examples/gno.land/r/demo/boards" --deposit 100000000ugnot --gas-fee 1000000ugnot --gas-wanted 300000000 --broadcast true --chainid test3 --remote localhost:26657 ``` \- [@manfred](/r/users:manfred), [2023-08-18 11:44am (UTC)](/r/demo/boards:testboard/5) \[[reply](/r/demo/boards?help&__func=CreateReply&bid=1&threadid=5&postid=5&body.type=textarea)] \[[x](/r/demo/boards?help&__func=DeletePost&bid=1&threadid=5&postid=5)]