Daily Archive2022-02-19

Starport / Cosmos

今回は、Cosmosの開発環境Starportについて試してみました。

参考: https://docs.starport.com/guide/hello.html

環境: Go 1.17.6, npm 8.1.2, node 16.13.1/Ubuntu20.4/WSL/Windows 11

インストール

sudo curl https://get.starport.network/starport! | bash

starport scaffold chain github.com/cosmonaut/hello
cd hello
starport chain serve

ひとまず動作確認。(AliceとBobのアドレスとニーモニックひかえる。二回目以降は以下のように表示しない)

参考ページにあるように、POSTでtitleとbodyを返すAPIを作成するためコマンド実行。

starport scaffold query posts –response title,body

コマンドを実行するとソースが自動的に変更・追加されます。(git diffで確認。下記は手動で変更)

x/hello/keeper/grpc_query_posts.go func (k Keeper) Posts(c context.Context, req *types.QueryPostsRequest) (*types.QueryPostsResponse, error) { //... return &types.QueryPostsResponse{Title: "Hello!", Body: "Starport"}, nil } x/hello/module.go import ( "encoding/json" "fmt" //.. "context" ... func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) }
Code language: JavaScript (javascript)

もう一度チェーン立ち上げ、下記URLをブラウザでアクセスします。(チェーンを立ち上げっぱなしでコード変更しても動いた)

http://localhost:1317/cosmonaut/hello/hello/posts

ちなみに下記コマンドでも動作するとありますが、そのような実行モジュールがみあたりませんでした。

hellod q hello posts

http://localhost:1317/ にアクセスしてAPIコンソールからも確認することができます。(それぞれクリックするとパラメータを入力する画面がでてきてリクエストを投げることができる)

ちなみにTendermint Node (http://localhost:26657/)は下記画面。

次に、フロントエンドを立ち上げて、AliceからBobに送金してみます。(下に参考動画: バージョンが違うためかコマンドが若干違うのと、上記の流れで作成しているのでネットワーク接続が動画どおりにできず)

cd vue
npm i
npm run serve

http://localhost:8080

AMOUNT 1 でBobに送金した後の画面。WalletはKeplrでChormoe Extensionのものを使用。(最初に控えたAliceのニーモニックを入力して作成)

次に、先ほどのAPIコンソールで、AliceとBobのBalanceを確認しました。

1 ATOM(?)送金されていることは確認しました。(小数入力できなかった)

この画面で、Cosmos Hubを選択しても何も変化が起きなかったためか、うまく接続できていないのかもしれません。(そのためにWalletの方には残高が反映されていない)

いろいろと試しながらやったため、手順になるようにスクリーンショットがとれず、エビデンスのみになってしまいました。

コマンド一つでブロックチェーンを作れてしまうのはなかなか強力なツールです。いろいろとやりたいことがでてきますが、今回はここまでとします。