【cosmos-wasm-笔记】基本概念以及环境配置
Page content
这里开始整理一下cosmos生态的智能合约。
cosmos生态中智能合约是通过cosmos wasm实现的。
1.结构简介
第一次接触cosmos wasm 时候以为这也是一个服务,
除使用cosmos-sdk自建的服务之外,还需要启动wasm服务呢。
后续才知道这也其实是一个框架,在你的自建服务里只需引用的wasm的引用包,
实现功能就可以了,因为cosmos-sdk提供simapp,wams提供wasmd示例。
很容易误认为用智能合约,需要启动这两个服务。
simapp和wasmd其实都是使用cosmos-sdk架构搭建的例子。
simapp侧重的是cosmos-sdk架构本身的功能,
wasmd侧重的是cosmos-sdk架构的基础上多引用了wasm架构的智能合约功能。
所以了解wasm时候直接clone wasm的 github项目即可。
wasmd 包含链和共识功能。
2.环境配置
2.1 安装rust
首先需要安装rust。因为wasm智能合约编写的首选语言是rust。
可以百度一下,或参看这里。 https://rustup.rs/
2.2 下载编译wasmd代码
$ git clone https://github.com/CosmWasm/wasmd.git
$ cd wasmd
# 来去版本标签
$ git fetch --tags
# 切换到最新的版本
$ git checkout v0.41.0
$ make install
# 查看版本是否按转成功
$ wasmd version
2.3 启动wasmd链
简单的编写一个脚本。
#!/bin/bash
rm -rf ~/.wasmd
export DAEMON_NAME=wasmd
export DAEMON_HOME=$HOME/.wasmd
export DAEMON_RESTART_AFTER_UPGRADE=true
./wasmd init test --chain-id test --overwrite
cat <<< $(jq '.app_state.gov.voting_params.voting_period = "20s"' $HOME/.wasmd/config/genesis.json) > $HOME/.wasmd/config/genesis.json
cat <<< $(jq '.app_state.gov.deposit_params.max_deposit_period = "30s"' $HOME/.wasmd/config/genesis.json) > $HOME/.wasmd/config/genesis.json
./wasmd keys add validator --keyring-backend test
./wasmd genesis add-genesis-account validator 1000000000000000000000stake --keyring-backend test
./wasmd genesis gentx validator 1000000stake --chain-id test --keyring-backend test
./wasmd genesis collect-gentxs
mkdir -p $DAEMON_HOME/cosmovisor/genesis/bin
cp ./wasmd $DAEMON_HOME/cosmovisor/genesis/bin
cosmovisor run start
添加执行权限以及启动本地链
$ chmod +x start.sh
$ ./start.sh
3. 验证和变量设置
查看账户
$ wasmd keys list --keyring-backend test
- address: wasm18gf6sqfah5qp9gxf0qc3srkwe873kazv34z8x3
name: validator
pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AlfQionhph5z5CSF1BoHk/Yt2eUalOf4s72wOlEqhubY"}'
type: local
$ wasmd query bank balances wasm18gf6sqfah5qp9gxf0qc3srkwe873kazv34z8x3
balances:
- amount: "999999999999998617344"
denom: stake
pagination:
next_key: null
total: "0"
设置好变量,后续章节使用
$ export NODE=(--node tcp://localhost:26657)
$ export TXFLAG=($NODE --chain-id test --gas-prices 0.25stake --gas auto --gas-adjustment 1.3 )
下一遍整理如何编译合约以及发布合约。
欢迎大家的意见和交流
email: li_mingxie@163.com