Skip to content
Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
cmd/gaia
x/mymodule
README.md

README.md

MyModule

自己实现的简单应用的业务逻辑。

Description

实现了很简单的逻辑,这个模块接收两种消息MsgDoMsgUndo,前者消息的操作是根据提供的非负整数N,对发送消息的账户,增加10steak*N的token,后者则是撤销由MsgDo消息导致账户累计增加的全部token。具体细节可以见Usage.

Install

cd $GOPATH/src/github.com
mkdir cosmos
cd cosmos
git clone https://github.com/cosmos/cosmos-sdk.git

克隆cosmos-sdk源码

cd $GOPATH/src/github.com
mkdir mrxjc
cd mrxjc
git clone https://github.com/MrXJC/CosmosSDK-in-Action.git

克隆本仓库源码

cd $GOPATH/src/github.com/cosmos/cosmos-sdk
git checkout v0.17.0
cp -rf $GOPATH/src/github.com/mrxjc/CosmosSDK-in-Action/Example/mymodule/x/mymodule x/mymodule
cp -rf $GOPATH/src/github.com/mrxjc/CosmosSDK-in-Action/Example/mymodule/cmd/gaia/app/app.go  cmd/gaia/app/
cp -rf $GOPATH/src/github.com/mrxjc/CosmosSDK-in-Action/Example/mymodule/cmd/gaia/cmd/gaiacli/main.go  cmd/gaia/cmd/gaiacli/

把Example中的mymodule源码都拷贝到cosmos-sdk里面。

dep ensure
make install

编译安装,生成gaiad与gaiacli。

Usage

gaiad init gen-tx --name=gov1 --home="gaia1"
{
  "app_message": {
    "secret": "siege brief foam drive side oak strong swear evoke clutch business uphold giraffe lava assume abandon"
},
  "gen_tx_file": {
    "node_id": "7d8e637b63a16099b36a75b0afe5a31a5a3515df",
    "ip": "192.168.150.109",
    "validator": {
      "pub_key": {
        "type": "AC26791624DE60",
        "value": "/25u3/ds1UpMDmpGrMs/SHr+9JwVPi4ms26egL602FY="
      },
      "power": 100,
      "name": ""
    },
    "app_gen_tx": {
      "name": "gov1",
      "address": "D2A7EAFFAC63040166C1FB669D2B32CEC40240EB",
      "pub_key": {
        "type": "AC26791624DE60",
        "value": "/25u3/ds1UpMDmpGrMs/SHr+9JwVPi4ms26egL602FY="
      }
    }
  }
}
gaiad init --gen-txs --chain-id=gov-test -o --home=gaia1                                              
{
  "chain_id": "gov-test",
  "node_id": "7d8e637b63a16099b36a75b0afe5a31a5a3515df",
  "app_message": null
}

构建与初始化测试网

gaiacli keys list                                                                           
NAME:	ADDRESS:					PUBKEY:
gov1	D2A7EAFFAC63040166C1FB669D2B32CEC40240EB	1624DE62203EB89AB4E005EC3DCF348466895583713CB2EFEC452A42D4C0F9697DAE3B824C

查询当前测试网的账户,其实这个账户就是创建节点的初始用户,他的地址就是D2A7EAFFAC63040166C1FB669D2B32CEC40240EB,默认有50个steak.

gaiad start --home=gaia1

启动节点gov1

VADDR1=D2A7EAFFAC63040166C1FB669D2B32CEC40240EB

设置账户的环境变量,后面的命令可以很方便的使用。

gaiacli do $VADDR1 5 --name=gov1 --chain-id=gov-test
gaiacli account $VADDR1                                                             
{
  "type": "6C54F73C9F2E08",
  "value": {
    "address": "D2A7EAFFAC63040166C1FB669D2B32CEC40240EB",
    "coins": [
      {
        "denom": "gov1Token",
        "amount": 1000
      },
      {
        "denom": "steak",
        "amount": 100
      }
    ],
    "public_key": {
      "type": "AC26791624DE60",
      "value": "PriatOAF7D3PNIRmiVWDcTyy7+xFKkLUwPlpfa47gkw="
    },
    "sequence": 1
  }
}

发送MsgDo消息 查询账户余额为70steak,因为50steak+5*10steak,一共是100steak

gaiacli account $VADDR1                                                              
{
  "type": "6C54F73C9F2E08",
  "value": {
    "address": "D2A7EAFFAC63040166C1FB669D2B32CEC40240EB",
    "coins": [
      {
        "denom": "gov1Token",
        "amount": 1000
      },
      {
        "denom": "steak",
        "amount": 150
      }
    ],
    "public_key": {
      "type": "AC26791624DE60",
      "value": "PriatOAF7D3PNIRmiVWDcTyy7+xFKkLUwPlpfa47gkw="
    },
    "sequence": 2
  }
}

再次发送MsgDo消息 查询账户余额为150steak,因为100steak+5*10steak,一共是150steak

gaiacli undo $VADDR1 --name=gov1 --chain-id=gov-test
gaiacli account $VADDR1                                                              
{
  "type": "6C54F73C9F2E08",
  "value": {
    "address": "D2A7EAFFAC63040166C1FB669D2B32CEC40240EB",
    "coins": [
      {
        "denom": "gov1Token",
        "amount": 1000
      },
      {
        "denom": "steak",
        "amount": 50
      }
    ],
    "public_key": {
      "type": "AC26791624DE60",
      "value": "PriatOAF7D3PNIRmiVWDcTyy7+xFKkLUwPlpfa47gkw="
    },
    "sequence": 2
  }
}

发送MsgUndo消息 查询账户余额为50steak,因为150steak-50steak-50steak,最后剩50steak

You can’t perform that action at this time.