FiNANCiE Lab

ブロックチェーンで世界を変える、株式会社フィナンシェのテックチームブログです

Polkadot / Substrate触ってみた(前編:環境構築)

前置き

rudo@CTOです。

我らがFiNANCiEテックチームでは日々ブロックチェーンに関する研鑽を重ねているのですが、現状はリアルタイムにパブリックチェーンで全てのトランザクションを実行するのは難しいという結論です。

経緯はこちらの記事↓

lab.financie.jp

にまとまっていますが、個人的には敗北感に打ちひしがれています。ユーザーファーストのためとはいえ、ブロックチェーン原理主義ブロックチェーンに夢を託す者としては忸怩たる思いです。いつかリベンジしてやろうと次世代を担うブロックチェーンを模索しているのですが、今回はPolkadotというプロトコルを触ってみたのでご紹介します。

Polkadotってなんぞ?

独自チェーンを作って、他のチェーンと相互につなげて運用するための仕組みをもったプロトコルです。似たようなクロスチェーンを目的としたソリューションにCOSMOSがありますが、自前でコンセンサスノードを用意する必要があります。Polkadotはコンセンサスノードを共用する仕組みになっており、COSMOSとの大きな違いはそこにあります。将来FiNANCiEでリアルタイムオンチェーンに回帰する際、それをあてにできないかと目論んでいます。ただ、現状でPolkadotのメインネットに参加する(ParachainをRelaychainに参加させる)には色々とハードルが高く、今すぐに採用できるわけではなさそうです。

なお日本では @WatanabeSota さんがかねてよりPolkadotに取り組んでおり、詳しくは渡辺さんのQiitaを参照いただくのがよいと思われます。 qiita.com

Substrateってなんぞ?

昔流行った◯◯ツクールみたいなやつです。独自チェーンツクール。Polkadotに接続可能な独自チェーンを構築することができますが、Polkadotとは独立したフレームワークなのでPolkadotに接続することは必須ではありません。

早速導入...が、ダメ!

というわけでまずは開発環境を構築してみます。いつもこういう環境構築って一発ですんなり行った試しがないのですが、今回もご多分に漏れずしっかりばっちりハマりました。ちなみにmacOS Mojaveです。そのうち長いものに巻かれてCatalinaになると思います。

まず第一歩目でローカルにノードを立てようとして

curl https://getsubstrate.io -sSf | bash

を実行するも途中でこける。gccがないとかナントカ言われる。

brew install gcc

を実行してからリトライ。進む。が、こける。 なんやかんや調べてるうちに

brew doctor

で文句言われたところの修復を全部ためしてくれという案内を見る。 診断してみたら出るわ出るわの警告、それらを全て直す(brew cleanup)。直す(brew link)。直す(brew unlink & link)ッ!

そして再度

curl https://getsubstrate.io -sSf | bash

. . .

   Replacing /Users/rudo/.cargo/bin/subkey
    Replaced package `subkey v2.0.0 (/private/var/folders/2z/wpg0klfx1_vfqllndt_zvrv40000gn/T/tmp.W1z4gHE8/subkey)` with `subkey v2.0.0 (/private/var/folders/2z/wpg0klfx1_vfqllndt_zvrv40000gn/T/tmp.bLAcwjZZ/subkey)` (executable `subkey`)
~/Documents/substrate
Cloning into '/var/folders/2z/wpg0klfx1_vfqllndt_zvrv40000gn/T/tmp.24n4shma'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 200 (delta 3), reused 2 (delta 0), pack-reused 194
Receiving objects: 100% (200/200), 42.82 KiB | 270.00 KiB/s, done.
Resolving deltas: 100% (113/113), done.
Run source ~/.cargo/env now to update environment

通ったッ

おそるおそる

substrate

. . .

2019-11-11 13:40:34 Substrate Node
2019-11-11 13:40:34   version 2.0.0-9037ce12f-x86_64-macos
2019-11-11 13:40:34   by Parity Technologies, 2017-2019
2019-11-11 13:40:34 Chain specification: Flaming Fir
2019-11-11 13:40:34 Node name: stimulating-skate-4160
2019-11-11 13:40:34 Roles: FULL
2019-11-11 13:40:34 Initializing Genesis block/state (state: 0xd733…e696, header-hash: 0xb653…1d25)
2019-11-11 13:40:34 Loading GRANDPA authority set from genesis on what appears to be first startup.

起動できたッ

ということで後編に続きます。 ちなみにサラッと書いてますが、↑の工程は色々の開発タスクの合間を見て試していたので足掛け一週間ぐらいかかりました。