Chapter 01無料公開

はじめに(Cosmosとは?)

Kimura Yu
Kimura Yu
2021.10.16に更新

はじめに

この教科書では、分散型台帳のインターオペラビリティプロジェクト「Cosmos」のエコシステムのうちの一要素である「Cosmos SDK」を詳細に解説します。

解説に入る前に、「Cosmos」とはなにか、「Cosmos SDK」とはなにか、といった内容を整理していきます。

Cosmosとは?

一口にCosmosと言っても、意味が複数あります。

  • Cosmos Network
  • Cosmos Hub (Gaia)
  • Cosmos SDK

簡単に言えば、Cosmos Networkはネットワークの名前、Cosmos Hub(Gaia)はブロックチェーンの名前、Cosmos SDKはソフトウェア開発キット(Software Development Kit)の名前です。

従って、「Cosmos」は決して一つのブロックチェーンを指している名前ではない(一つのブロックチェーンを指している名前は「Cosmos Hub(Gaia)」である)ということが言えます。

本書では主にこのComsos SDKを解説します。

しかしながら、後述しますが、Cosmos SDKを理解するにあたってはCosmos NetworkとCosmos Hub(Gaia)も理解する必要があるため、これらすべてを、この本を読むことで知っていただけたらと思います。

Cosmos Network

Cosmos Networkとは何かというと、IBC (Inter Blockchain Communication)という通信規格による、ブロックチェーンのインターオペラビリティネットワークです。

IBCにより、異なる台帳(特に、ブロックチェーン)の間で任意の情報のやり取りを行うことができるようになります。

「任意の情報」と言ってもイメージが湧かないと思うので、「ブロックチェーン上のトークン残高情報」を考えてみましょう。

この情報を、異なる台帳間でやり取りするとはどういうことか?簡単に言うと、

  • ブロックチェーンAにトークンA'が記録されている
  • ブロックチェーンBにトークンB'が記録されている

このような状況で、

  • ブロックチェーンAからブロックチェーンBにトークンA'を送信する

という動作を行うことができるようになる、ということなのです。

このような動作を1対1のブロックチェーンだけでなく、複数のブロックチェーン間で行えるようにするのがCosmos Networkだということです。

Cosmos Networkの根幹をなすIBCは、ブロックチェーンに限らず、
一般的な資産台帳間の残高送受信の標準プロトコルになりうるポテンシャルがあります。

Cosmos SDK

Cosmos SDKは、ブロックチェーンそのものを作るためのソフトウェア開発キットです。

https://github.com/cosmos/cosmos-sdk

Cosmos SDKは単なるブロックチェーンを簡単につくることのみならず、
Cosmos Networkに対応するブロックチェーンを、簡単に作ることができます。

Cosmos SDKを使うことで「ただのブロックチェーン」を作ることもできますが、このIBCに対応したブロックチェーンも簡単に作れるようになるのです。

Cosmos SDKは現在、Go言語に対応しており、Cosmos SDKでブロックチェーンそのものをつくるにあたってはGo言語を使うことになります。

理論上はRustなど、他の言語でCosmos SDKライブラリを作ることも容易にできる(後述)のですが、Go言語は習得が容易かつバックエンド実装の言語として実用的ですので、
Cosmos SDKがまずGo言語から対応したことには一定の合理性があると言えるでしょう。

Cosmos SDKには、公式のチュートリアルもあります。

本書は、上記の公式チュートリアルを触った上で不足していると考えられる情報を補完する目的で書くようにしました。
チュートリアルをあわせて読みながら、読み進めていってください。

https://github.com/cosmos/sdk-application-tutorial

本題に入る前に、ブロックチェーンとはなにか、など、前提として必要な知識を補論にまとめました。

これらの知識がすでにある方は、とばして読み進めてください。