cosmos の hellochain チュートリアルを動かしてみる

Cosmos

以前、cosmonの以下チュートリアルやってみたんですが、結構ページ数が大量だったので

もっとシンプルだと思われる 以下Hellochainというチュートリアルをやってみました。

Sponsored Link


インストール

$ vi ~/.bash_profile
---
export PATH="$GOPATH/bin:$PATH"
---
$ mkdir -p $GOPATH/src/github.com/todoroki
$ cd $GOPATH/src/github.com/todoroki
$ git clone https://github.com/cosmos/hellochain.git
$ cd hellochain
$ make install
--> Ensure dependencies have not been modified
GO111MODULE=on go mod verify
all modules verified
GO111MODULE=on go install -tags "" ./cmd/hcd
GO111MODULE=on go install -tags "" ./cmd/hccli
$ $ hcd
hellochain AppDaemon

Usage:
  hcd [command]

Available Commands:
  init                Initialize private validator, p2p, genesis, and application configuration files
  collect-gentxs      Collect genesis txs and output a genesis.json file
  gentx               Generate a genesis tx carrying a self delegation
  validate-genesis    validates the genesis file at the default location or at the location passed as an arg
  add-genesis-account Add genesis account to genesis.json
  start               Run the full node
  unsafe-reset-all    Resets the blockchain database, removes address book files, and resets priv_validator.json to the genesis state

  tendermint          Tendermint subcommands
  export              Export state to JSON

  version             Print the app version
  help                Help about any command

Flags:
  -h, --help               help for hcd
      --home string        directory for config and data (default "/Users/takashimatsukaze/.hellod")
      --log_level string   Log level (default "main:info,state:info,*:error")
      --trace              print out full stack trace on errors

Use "hcd [command] --help" for more information about a command.

$GOPATH/bin をPATHに追加してないと、hcdなどコマンド実行できないので注意。
これを改造して色々試してみる。

ドキュメント見る

ちなみに、インストールなどのdocumentの見方が記載されていたので、そちらもやっときました。

$ yarn global add vuepress
$ cd hellochain
$ vuepress dev

すると、http://localhost:8080/ で以下画面表示できました。

ブロックチェーンを作成する

$ hcd init hellochain
{
  "moniker": "hellochain",
  "chain_id": "test-chain-t0bejj",
  "node_id": "ba83a3252bc1851bb1aec5b921936100272f1ac7",
  "gentxs_dir": "",
  "app_message": {
    "accounts": [],
    "auth": {
      "params": {
        "max_memo_characters": "256",
        "tx_sig_limit": "7",
        "tx_size_cost_per_byte": "10",
        "sig_verify_cost_ed25519": "590",
        "sig_verify_cost_secp256k1": "1000"
      }
    },
    "bank": {
      "send_enabled": true
    },
    "params": null,
    "supply": {
      "supply": {
        "total": []
      }
    }
  }
}

アカウント作成する

以下では alice と bob というユーザーのキーを作成

$ hccli keys add alice
$ hccli keys add bob

そして、stakeとhelloというコインを付与。

$ hcd add-genesis-account $(hccli keys show alice -a) 100000000000stake,100hello
$ hcd add-genesis-account $(hccli keys show bob -a) 100000000000stake,1000hello

チェーンを起動

$ hcd start
I[2019-11-20|18:05:24.152] Starting ABCI with Tendermint                module=main
E[2019-11-20|18:05:24.279] Couldn't connect to any seeds                module=p2p
I[2019-11-20|18:05:29.325] Executed block                               module=state height=1 validTxs=0 invalidTxs=0
I[2019-11-20|18:05:29.331] Committed state                              module=state height=1 txs=0 appHash=60FB9E0764BD9C8BE3837516D8EA177DA78664ADEA50BC9C6D48D77D8351D376
I[2019-11-20|18:05:34.354] Executed block                               module=state height=2 validTxs=0 invalidTxs=0
I[2019-11-20|18:05:34.361] Committed state                              module=state height=2 txs=0 appHash=60FB9E0764BD9C8BE3837516D8EA177DA78664ADEA50BC9C6D48D77D8351D376

それを別windowでstatus確認

$ hccli status | jq
{
  "node_info": {
    "protocol_version": {
      "p2p": "7",
      "block": "10",
      "app": "0"
    },
    "id": "ba83a3252bc1851bb1aec5b921936100272f1ac7",
    "listen_addr": "tcp://0.0.0.0:26656",
    "network": "test-chain-t0bejj",
    "version": "0.32.1",
    "channels": "4020212223303800",
    "moniker": "hellochain",
    "other": {
      "tx_index": "on",
      "rpc_address": "tcp://127.0.0.1:26657"
    }
  },
  "sync_info": {
    "latest_block_hash": "C7766AC5B09D37EA843C545AD6EB346C28B5EA0E9CE6CDABB385401ED38C910C",
    "latest_app_hash": "60FB9E0764BD9C8BE3837516D8EA177DA78664ADEA50BC9C6D48D77D8351D376",
    "latest_block_height": "18",
    "latest_block_time": "2019-11-20T09:06:49.903974Z",
    "catching_up": false
  },
  "validator_info": {
    "address": "F472AF664A67196E93EF13913362262DF3EE85BE",
    "pub_key": {
      "type": "tendermint/PubKeyEd25519",
      "value": "B1we20NLDXNt7tCzaja1dvTayFnlymqbzx64OlzNbjI="
    },
    "voting_power": "100"
  }
}

残高もついでに確認

$ hccli query account $(hccli keys show alice -a) --trust-node
|
  address: cosmos103k22d3flev8lajnq5t4qj6vc5rctr5lm26wsa
  coins:
  - denom: hello
    amount: "100"
  - denom: stake
    amount: "100000000000"
  pubkey: ""
  accountnumber: 0
  sequence: 0
  
$ hccli query account $(hccli keys show bob -a) --trust-node
|
  address: cosmos1wq77gchctxpc95zs6svk9rngz8trj0gtxav5af
  coins:
  - denom: hello
    amount: "1000"
  - denom: stake
    amount: "100000000000"
  pubkey: ""
  accountnumber: 1
  sequence: 0

コインの送金やってみる

まず、chainidを確認しておく。hccli statusで取得した node_info.network の値になる。
これを踏まえて以下実行

$ hccli tx send $(hccli keys show alice -a) $(hccli keys show bob -a) 50hello --chain-id test-chain-t0bejj
{"chain_id":"test-chain-t0bejj","account_number":"0","sequence":"0","fee":{"amount":[],"gas":"200000"},"msgs":[{"type":"cosmos-sdk/MsgSend","value":{"from_address":"cosmos103k22d3flev8lajnq5t4qj6vc5rctr5lm26wsa","to_address":"cosmos1wq77gchctxpc95zs6svk9rngz8trj0gtxav5af","amount":[{"denom":"hello","amount":"50"}]}}],"memo":""}

confirm transaction before signing and broadcasting [y/N]: y
Password to sign with 'alice':
height: 0
txhash: FCDF04259EFF32C2595ACA686DBACD342AA12ED0D5E6F73E20869893B531A45D
code: 0
data: ""
rawlog: ""
logs: []
info: ""
gaswanted: 0
gasused: 0
events: []
codespace: ""
tx: null
timestamp: ""

残高を確認すると、Alice から Bob に 50 hello が渡っている事が確認できた。

$ hccli query account $(hccli keys show alice -a) --trust-node
|
  address: cosmos103k22d3flev8lajnq5t4qj6vc5rctr5lm26wsa
  coins:
  - denom: hello
    amount: "50"
  - denom: stake
    amount: "100000000000"
  pubkey: cosmospub1addwnpepqfznzu9hk9r8evg3uhgj8wnj00wnca7pcrqfwdkltvw3y9n7y06kcxd6g9e
  accountnumber: 0
  sequence: 1

$ hccli query account $(hccli keys show bob -a) --trust-node
|
  address: cosmos1wq77gchctxpc95zs6svk9rngz8trj0gtxav5af
  coins:
  - denom: hello
    amount: "1050"
  - denom: stake
    amount: "100000000000"
  pubkey: ""
  accountnumber: 1
  sequence: 0
Sponsored Link
コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


Hyperledger Fabric
Hyperledger fabric コマンドまとめ

よく使うHyperledger fabricコマンドのメモ[随時追記] Contents1 chai …

仮想通貨全般
Hyperledger fabric の Commercial Paper チュートリアル を試す

以下チュートリアルを試す。 Commercial paper tutorial Sponsored …

仮想通貨全般
Substrate Tutorial (#1 Basic – Creating a Module)

前回からの続きで引き続き、Substrate Tutorialを進めていきます。 Sponsored …