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 generate
注意請保存你的錢包地址及助記詞,助記詞若不保存,之後將無法恢復錢包,切記不要隨便洩露助記詞。
從助記詞恢復錢包
gnokey add <錢包名> --recover
<錢包名> 替換為你自選的錢包名,不需要 <>,後面的所有命令也都不需要 <>,只需要替換 <> 內的內容,此命令同時會讓你設置一個錢包密碼,請記住你設置的錢包登錄密碼,如果後面忘記密碼,也可以用助記詞重新恢復錢包。
查看現有錢包列表
gnokey list
領取測試幣
打開水龍頭網站 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
領取任務
test2.gno.land
test2.gno.land
在你喜歡的媒體上(Twitter、Medium 或者 Mirror)用一篇文章(250 字以上)描述,為什麼你對 gno.land 和 gnoland 感興趣,可以參考
Gnoland 高並發智能合約平台介紹
介紹
medium.com
在此回覆,將你的文章的 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