# Gnoland智能合约平台测试任务教程 **Published by:** [arden](https://paragraph.com/@aptosui/) **Published on:** 2022-08-27 **URL:** https://paragraph.com/@aptosui/gnoland ## Content Gno项目简介 Gnoland是Cosmos前创始人Jae Kwon创立的可互操作的高并发智能合约平台,开发者可以用Gno语言在Gno链上构建高并发智能合约,Gno语言是类似于Go语言的智能合约开发语言,语法简单,凭借大量的Go开发人员,相对Solidity、Rust、Move等语言大大降低了开发者的入门门槛,目前Gnoland还处于Test2测试网阶段,周边配套工具还很欠缺,使用门槛比较高,需要一定的技术能力才能率先体验,也正是因为这一点目前体验的人还比较少,不卷,自然大家的机会也会比较大。 基础环境安装 本系列教程的操作系统环境为基于ubuntu,大家也可以使用Windows的WSL版Ubuntu在自己的电脑上部署。 首先大家在服务器上的 / 目录下创建一个新的目录 /data 用于存放平时所需要软件操作的统一目录,主要是方便后续对服务器资源进行统一管理,主要是不同的软件都会有自己默认的安装目录,如果不统一管理,后面软件安装多了就容易乱套。 sudo apt-get update -y && sudo apt-get upgrade -y sudo apt-get install curl build-essential jq git -y cd / mkdir data cd /data mkdir app software soft source blockchain 目录说明 /data/app 主要存放安装软件(主要以软件链接的方式连接到 /data/soft 目录下的软件) /data/software 主要存放从网上下载的软件 /data/soft 主要存放安装软件(软件安装的真目录) /data/source 主要存放从Github上clone下来的源代码 /data/blockchain 主要存放区块链相关工具服务 当然目录结构大家可以根据自己的喜好自己定义。 Go开发环境安装 cd /data/software wget https://go.dev/dl/go1.18.5.linux-amd64.tar.gz tar -xzvf go1.18.5.linux-amd64.tar.gz tar -xzvf go1.18.5.linux-amd64.tar.gz -C/data/soft cd /data/soft mv go go1.18.5 ln -s /data/soft/go1.18.5 /data/app/go cat << 'EOF' >> /etc/profile export PATH=$PATH:/data/app/go/bin EOF source /etc/profile go version 下载安装Gno源代码并编译 cd /data/source git clone https://github.com/gnolang/gno cd gno make # 如果编译的时候下载安装包时网络超时出错,则配置一个Goproxy代理,具体使用如下命令,然后再重新编译 export GO111MODULE=on export GOPROXY=https://goproxy.cn # 或者这样设置代理也可以(这样的话永久有效) echo "export GO111MODULE=on" >> ~/.profile echo "export GOPROXY=https://goproxy.cn" >> ~/.profile source ~/.profile cat << 'EOF' >> /etc/profile export PATH=$PATH:/data/source/gno/build EOF source /etc/profile 创建钱包 注意请保存你的钱包地址及助记词,助记词若不保存,之后将无法恢复钱包,切记不要随便泄露助记词。 从助记词恢愎钱包 gnokey add <钱包名> --recover <钱包名> 替换为你自选的钱包名,不需要<>,后面的所有命令也都不需要<>,只需要替换<>内的内容,此命令同时会让你设置一个钱包密码,请记住你设置的钱包登录密码,如果后面忘记密码,也可以用助记词重新恢复钱包。 查看现有钱包列表 领取测试币 打开水龙头网站 https://test2.gno.land/faucet 输入你的 Gnoland 钱包地址( 如 g1f68ckw5yy8nccke6kva0mnf3sg2qv4qm8cf0u0)领取测试币。 目前水龙头只能领50 GNOT,如果想领取更多测试币,需要更换一下vpn的ip,简单的方法就是更换一下vpn的区域,因为水龙头每次领取的时候会检测你的ip,限制了频繁领取。 查看钱包余额 gnokey query auth/accounts/<你的钱包地址> --remote test2.gno.land:36657 创建注册帐户 cd mkdir gnoland cd gnoland account_number=$(gnokey query auth/accounts/<钱包地址> --remote test2.gno.land:36657 | grep account_number| sed 's/[^0-9]//g') echo $account_number sequence=$(gnokey query auth/accounts/<钱包地址> --remote test2.gno.land:36657 | grep sequence | sed 's/[^0-9]//g') echo $sequence 创建注册帐户的Tx # 你自定义的用户名必须是6位以上的小写字母,可包含下划线** gnokey maketx call <钱包地址> --pkgpath "gno.land/r/users" --func "Register" --gas-fee 1000000ugnot --gas-wanted 2000000 --send "200000000ugnot" --args "" --args "<你自定义的用户名>" --args "" > unsigned.tx # 签名事务Tx gnokey sign <钱包地址> --txpath unsigned.tx --chainid test2 --number $account_number --sequence $sequence > signed.tx # 广播事务Tx gnokey broadcast signed.tx --remote test2.gno.land:36657 事务广播成功后,就可以在 https://test2.gno.land/r/users 看到你的用户名。 如果广播失败,有可能是余额不够 204 GNOT,请确保你已经领取了5次水龙头。 rm unsigned.tx rm signed.tx 也有可能是 sequence 错误,请查询并使用最新的 account_number 和 sequence,删除unsigned.tx和signed.tx,重新完成以上2个步骤(获取 account_number 和 sequence,创建注册用户的tx,签名该tx,广播该tx),重试一次。 创建你自己的留言版 # 注意留言版名只能是 英文名,不能包含中文(希望后续版本能够修复这个Bug) gnokey maketx call <钱包地址> --pkgpath "gno.land/r/boards" --func "CreateBoard" --gas-fee 1000000ugnot --gas-wanted 10000000 --send 1000000ugnot --broadcast true --chainid test2 --args "<留言版名>" --remote test2.gno.land:36657 获取刚刚发布的留言版id BoardID=$(gnokey query "vm/qeval" --data "gno.land/r/boardsGetBoardIDFromName(\"<留言版名>\")" --remote test2.gno.land:36657 |grep data | sed 's/[^0-9]//g') echo $BoardID 创建发帖内容 cd gnoland sudo cat <<'EOF' >> /gnoland.md This is a demo of Gno smart contract programming. EOF # 发帖 gnokey maketx call <钱包地址> --pkgpath "gno.land/r/boards" --func CreateThread --args $BoardID --args "<帖名>" --args#file "<xxx.md>" --gas-fee 1000000ugnot --gas-wanted 2000000 --chainid test2 --broadcast true --remote test2.gno.land:36657 领取任务 https://test2.gno.land/r/boards:testboard/4 在你喜欢的媒体上(Twitter、Medium 或者 Mirror)用一篇文章(250字以上)描述,为什么你对gno.land 和 gnoland 感兴趣,可以参考 https://medium.com/@tujiao.eth/gnoland%E9%AB%98%E5%B9%B6%E5%8F%91%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6%E5%B9%B3%E5%8F%B0%E4%BB%8B%E7%BB%8D-5575a521d993 在此回复,将你的文章的URL链接作为评论,以获得奖励。 Gno介绍文章发表成功后,使用如下命令提交 gnokey maketx call <钱包地址> --pkgpath "gno.land/r/boards" --func "CreateReply" --gas-fee 1000000ugnot --gas-wanted 2000000 --send "" --broadcast true --chainid test2 --args "1" --args "4" --args "4" --args "<文章URL>" --remote test2.gno.land:36657 文章链广播成功后,你就能在 https://test2.gno.land/r/boards:gnoland/4 看到你的帖子。 到此Gnoland第一个任务已经圆满完成,期待更多任务。 如果您没觉得此文章有用,敬请关注我的推特 https://twitter.com/tujiao ## Publication Information - [arden](https://paragraph.com/@aptosui/): Publication homepage - [All Posts](https://paragraph.com/@aptosui/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@aptosui): Subscribe to updates