今回は、Cosmosの中でも今後重要な立ち位置になるCosmWasmが主催するイベント、Riddlethonの紹介をさせていただきます。

CosmWasmとは、Cosmos SDK上で動くスマートコントラクトモジュールのことで、今後Cosmos Hubにも統合されることが決まっています。CosmosのチェーンがIBCで繋がった後にIBCの規格を定めるためにもとても重要なものになります。詳細は以下ツイートを参照ください。

Riddlethonとは

まずはじめに、簡単にRiddlethonについて説明します。

RiddlethonとはCosmWasm(confio社)が主催で行う、比較的簡単な課題を解くことによって少額の報酬をもらえる、ブロックチェーンの”なぞなぞイベント”です。

ハッカソンのように、上級の開発者が一定の長い期間に渡ってプロジェクトを作って審査をして、大きな賞金をもらうようなハードルの高いものではなく、(開発の意味で)ブロックチェーン初心者や学生でも気軽に参加ができて、報酬がもらえるものになる予定となっています。

本紹介記事以上に詳細を知りたい方は、3月半ばに公開予定の公式サイトをご覧ください。

Riddlethonの目的

RiddlethonはCosmWasmに触れてCosmWasmを使ってdAppを開発する人、ビジネスを立ち上げる人を増やし、コミュニテイを成長させることを目的としています。

まず最初はコントラクトを作成してデプロイすることも、初心者にとってはハードルが高いと思われるので、既に作成されているコントラクトを実行してみたり、実行されたトランザクションの中身を確認する方法などを学んでもらう機会を提供するつもりです。

このRiddlethonを入り口として、CosmWasmというチェーン間コントラクトに興味をもってもらい、更にCosmWasm公式のドキュメントやワークショプに目を通してもらえれば、自分でCosmos上のdAppを作成できるようになり、更にもっとレベルが上がればビジネスを立ち上げることもできるようになるはずです。

Riddlethonに参加して欲しい人

もちろん、ブロックチェーンやCosmWasmについて既に詳しい方に参加していただくのもOKです。一緒にCosmWasmを使った開発を、コミュニティを盛り上げていきましょう!

Riddlethonの例


5月6日から約一ヶ月かけて開催された、Cosmosテストネットを用いたコンペティション、Game of ZonesにてHashHubチームがLIVENESS REWARDを獲得しました。

まずは、GoZの運営チーム(Zaki Manianさん、Jack Zampolinさん、Jessy Irwinさん)、Tendermintチーム、そしてIBCの開発に関するコントリビュータの皆さまに感謝をお伝えしたいです。ありがとうございました!

以下、Game of Zonesとはどういうもので、具体的に何が行われていたのかを解説していきます

Game of Zonesとは

Game of Zonesとは、Cosmosのインターオペラビリティを実現するために開発されているIBC(Inter-Blockchain Communication)モジュールローンチに備え、テストネットを用いて参加者間でIBCを用いた競争を行うイベントのことです。

GoZでは、それぞれのチームがIBCが組み込まれたバージョンのCosmos SDKを用いたブロックチェーンと、ブロックチェーン同士のパケットを渡すリレイヤーを立ち上げる必要がありました。

HashHubはhongo-3というブロックチェーンを作成して参加しました。Game of Zonesには主に3つのフェーズがあり、それぞれのフェーズにおいて全体で何が行われていたかを紹介します。

Phase1a・1b

Phase1aはそれぞれがリレイヤーの使い方に慣れるためのフェーズとなっていました。運営が用意したGoZ Hubチェーンといかに長い時間接続状態を維持できるかを競うものでしたが、途中それぞれが用意したチェーンが止まってしまう、また接続エラーがでるという報告が各チームからあり、Phase1自体をやり直す形となりました。原因となったバグ詳細は以下で報告されています。

https://goz.cosmosnetwork.dev/2020/05/28/announcing-the-phase-1-winners-of-game-of-zones/

しきり直しとして、再開したPhase1bでは、IBCを利用してチェーン同士の接続状態を長い時間維持し、さらにその中でもより多くのトランザクションを送った(trusting periodを短くした)チェーンが評価される仕組みとなっていました。

Phase1全体での結果は以下から確認することができ、HashHubが立ち上げたブロックチェーン、hongo-3もリストされていることがわかります。
https://github.com/iqlusioninc/relayer/blob/jack/phase1/docs/goz-phase-1-scoring.csv


12月になってしまった

前回まで

前回、hcdとhccliのコードを書いて、アプリチェーンを実装していく過程において、基盤となるブロックチェーンの基本的なコードを準備しました。

今回はアプリケーション部分である、greeterモジュールを一通り実装していきます。モジュールを作る際にどういうパーツがあるのか、そのファイルは何をしているのかを確認しながら一緒に作成していきます。

今回はとにかくコードを書く作業が中心になりす。
頑張っていきましょう!

Types

まず、types、型についてです。
今回のチュートリアルでは、主にGreetingモジュールを実装していきます。僕らはフルノードに送られる”greeting”(つまるところトランザクション)を作ったり、アップデートしたり、回収するためにこのGreetingモジュールを使うことになります。

そのGreetingモジュールを実装していく上で、必要な型を定義していきましょう。
x/greeter/internal/types/types.go を以下のように作成してください。

たまにコメントで補足説明もしてあるので、一つ一つのコードが何を意味するのか考えながら読んでみると理解が深まるかもしれません。

Module

Cosmos-SDKでできたアプリ専用チェーンは、大半は切り離しができて他のチェーンでも再利用可能なモジュールを組み合わせて構成されています。それらをどう組み合わせるのかの設定に関しては、`app.go`で定義されています。

モジュールというのは、Cosmos SDKにおいてはMessage(ほぼトランザクションみたいなもの)を定義するためのものとなっています。

それぞれ全てのモジュールはAppModule interfaceにしたがって実装される必要がありますが、ここでは簡単のため、その1の時と同様、”starter”パッケージを用いて実装していきます。

x/greeter/module.go を作成してください。
あとでまたこのファイルに戻ってきて編集します。

Handlerはとりあえずわからなくて大丈夫です。

Msgs

Msgsとは、アプリチェーンの状態(ステート)の遷移を定義するものです。こういう言い方をすると少しわかりにくいが、つまるところ、AさんからBさんへの5ATOMの送金の場合、AさんのATOMが5減って、BさんのATOMが5増えるという状態変化が起きており、その変化を起こすためのものをMsgと定義しています。

それってトランザクションじゃない?って声が聞こえてきそうですが、トランザクションはMsgsを内包して、ブロックチェーンネットワークをブロードキャストされるものであり、同義ではありません。Msgsを運んでくれるのがトランザクションってことですね。

一つのモジュールが扱えるMsgは一つだけとなっています。

x/greeter/internal/types/msgs.go を作成してください。

このファイルでは送り主、受取人、”greeting”という情報を持ったメッセージを定義します。

Handler

次はHandler関数についてです。Handler関数は、チェーンに取り込まれたブロックの中にあるトランザクション、の中にあるMsgを全てみて、そのモジュールで実行するべきMsgsがあるかどうかを確認するためのものです。今期の場合、greeterモジュールに関するMsgがないかを確認し、あればそれをgreeterモジュールに渡してチェーンのステートを更新してもらいます。

モジュールの入り口に立って、新しいMsgの中でうちのモジュールで請け負うMsgがないかを判別して、あればモジュールに引き渡してくれるナイスガイです。

x/greeter/handler.go を作成してください。短いです。

Keeper

それぞれのモジュールにいるKeeperは、アプリ専用チェーンにおけるデータストアのCRUDを担当するところ。MVCでいう、いわゆるmodelに対応する部分となる。

今回のHellochainはgreetingモジュールのみを考えるかなりシンプルな実装となっているが、もしより洗練されたアプリチェーンを作る場合は、モジュールが他のモジュールのKeeperと接続し、モジュール間通信を行うこともあるだろう。

それらモジュール間通信を行う際に、必要な関数を定義したのがKeeperとなる。

x/greeter/internal/keeper/keeper.go を作成してください。


はじめに

2019年11月頭、Cosmos SDKのチュートリアルに”hellochain”という新しい項目が追加されました。既に”Nameservice”という別のチュートリアルが存在していましたが、それよりも簡潔で送金機能のみのチェーンを作るためのチュートリアルが、その”hellochain”となります。

今回の記事は、”hellochain”を本家の説明では足りないところを補足しながら、一緒に実装していくものになっています。
Cosmos SDKがどういうものなのか正直よくわかってないけど、とりあえず触ってホクホクしたいそこのあなたにピッタリです!(Cosmos SDKについて知りたい方は以下リンクをどうぞ)

Moduleだ、Keeperだ、Handlerだ、Messageだ〜などなど、Cosmos …


前回の記事

前回は、Cosmos SDKとはそもそもどういうものなのか、Cosmos SDKを用いてアプリ専用チェーンを立ち上げるメリットとはなんなのかという話をしました。テックな話は少なかったかと思います。

今回は、前回と少し趣旨が代わりCosmos SDKを用いて作るチェーンはどういう構造になっており、どういう設計であるのかについてお話をしていきます。前回同様、Cosmos の公式ドキュメントを参考文献とさせていただきます。

最初の方にはステートマシンに関する説明など、ブロックチェーンに詳しい方には耳タコな話にはなっているとは思いますが、参考文献に準拠する形で書かせていただきました。

これを読んでからCosmos チュートリアルに手を出しても、手を出した後にこれを読んでも知識を補完できる内容と …


Cosmos SDKを用いた、チュートリアルに関する記事を書いてきましたが、チュートリアルだけをやっても、なかなか理解が進まなかったと思います。

この記事は、チュートリアルに入りコードを書く前に、まずCosmos SDKとはそもそもどういう意図で作られたものなのか、またそれらの構造がどうなっているのかを確認することを目的としています。
本記事は、主に公式のドキュメントを翻訳したものになりますが、ホワイトペーパーのように回りくどくポジショントークをしている節があるので、そこは割愛しながら説明していきます。
Ethereumとの比較が多いため、Ethereumに比べてここが良い!という話が多いです。Ether界隈の人怒らないで。。

Cosmos SDKについてサッと理解し、開発の一助となれれば …


いつも Sanka Network をご利用くださいまして、誠にありがとうございます。

2019 年 7 月から運営してまいりました Sanka Network ですが、サービス運営方針の見直しのため 10 月 30 日をもちましてサービスを一時停止することになりました。これまでご愛顧いただきました皆様には、お手数お掛けして大変申し訳ありませんが、サービス停止日時までに他のバリデータおよび類似サービスにデリゲートを移してくださいますようお願い申し上げます。

再開時期は現時点で未定となっております。各通貨個別の注意事項を下記のとおり掲載しますので、こちらもあわせてご確認ください。

注意事項

Cosmos(ATOM)

デリゲートしている ATOM を他のバリデータにデリゲート(re-delegate)するか、デリゲートの中止(undelegate)を行なってください。re-delegate は待ち時間なくデリゲートすることができますが、undelegate には 21 日間の unbonding period という待ち時間が発生しその期間が過ぎるまで再度 delegate することはできませんので、基本的には re-delegate をおすすめします。

特に注意していただきたい点として、Cosmos(ATOM) ではこれまで同様に、バリデータが slash される場合はデリゲータの資産も同時に失われることになります。サービス停止日時以降はバリデータノードを停止するため二重署名による slash は発生しません。ただし、デリゲートの受付停止を完全に行うことはできないため、ノードの稼働状況にかかわらず active なバリデータとしてプロトコルに認められる可能性があり、このケースではダウンタイムのしきい値超過によりデリゲートしている資産の 0.01 % を失う slash が発生する可能性があります。

Tezos(XTZ)

デリゲートの中止を行なってください。プロトコル上ですでに確定した報酬でサービス停止日時以降にその凍結が解除されるものについては、サービス停止日時以降もその凍結解除を待ってから随時お支払いします。

IOST

デリゲートの中止(unvote)を行なってください。unvote を行う際に、その IOST を再度 vote に使用できるようになるまで 7 日間の凍結期間が存在します。

本件に関するお問い合わせは、以下のメールアドレスよりお願いいたします。

support_sanka@hashhub.tokyo

サービス開始より、多くのお客様にご利用いただき、誠にありがとうございました。また、急なサービスの一時停止に伴い、皆様にご迷惑をおかけいたしますことを深くおわび申し上げます。

Sanka Networkをご利用いただき、誠にありがとうございました。


この記事では、iWalletを使用してIOSTABCというウェブサイトから報酬を受け取る方法について解説を行います。

以下がiWalletを使用してIOSTABCから報酬を受け取る流れになります。

1.iWalletからの操作で報酬を確認
2.報酬を得る
3.アカウントで報酬を確認

iWalletからの操作で報酬を確認

iWalletにサインインしてIOSTABCへ移動します。サインインの後にIOSTのマークをクリックしてください。IOSTABCのご自身のアカウントへ移動することを確認してください。https://www.iostabc.com/

報酬を受け取る前にご自身のIOST残高を確認してください。

報酬を得る

IOSTABCの画面で報酬が発生していることを確認してください。サイトのBonusの右側に受け取り可能な報酬額が表示されています。


この記事では、モバイルアプリPurewalletからステーキングした後の報酬の受け取り方について解説を行います。

以下の内容の遷移を動画にしたものがこちらになります。
https://youtu.be/Ycd4sJauYaA

・PureWalletを起動する

モバイルからのステーキングで用いたPureWalletを起動します。

・IOSTを選ぶ

ウォレットメニューの通貨の中からIOSTのところを押してください。

・voteを選ぶ

IOSTのメニューが表示されたら、中断中央の「Vote」を押す。

・Bonus withdrawを押す

右上に出ている”Bonus withdraw”(発生している報酬の合計額)を押す

・Withdrawを押す

下からタブが出てくるため、withdrawボタンを押すことで報酬を引き出すことができます。
もし、発生した報酬をそのままステーキングしたい場合は、Revoteボタンを押してください。

・パスワードを入力する

本人確認のためにウォレットを作った際に設定したパスワードを入力してください。正しいパスワードを入力すると、右下の画像のように、「報酬受け取り完了しました。取引が完了するまで数秒お待ちください。」という表記が出ます。


Cosmos-sdkを用いて、アプリケーションチェーンの実装を行うチュートリアルの解説記事を書いてたのですが、なかなかパッとどういうものを作っているのか概要を理解しにくいので、チュートリアル その0的な立ち位置として、すでにチュートリアル側が用意してくれているアプリケーションチェーンのノードを立てて、実際の挙動を確認してみる記事を用意することにしました。

わざわざ実装までしたくないけど、アプリケーションチェーンの雰囲気を知りたい人にもぴったりだと思います。

このチュートリアルで用意されているチェーンは、NamecoinやENS、Handshakeのようなアカウント名を売買可能なアプリチェーンとなっています。ユーザーはまだ使われていないユーザーネームを購入して使うことができ、またそれらの売り …

Takuya Fujita

HashHub Engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store