前置き
rudo@CTOです。
我らがFiNANCiEテックチームでは日々ブロックチェーンに関する研鑽を重ねているのですが、現状はリアルタイムにパブリックチェーンで全てのトランザクションを実行するのは難しいという結論です。
経緯はこちらの記事↓
にまとまっていますが、個人的には敗北感に打ちひしがれています。ユーザーファーストのためとはいえ、ブロックチェーン原理主義者ブロックチェーンに夢を託す者としては忸怩たる思いです。いつかリベンジしてやろうと次世代を担うブロックチェーンを模索しているのですが、今回は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.
起動できたッ
ということで後編に続きます。 ちなみにサラッと書いてますが、↑の工程は色々の開発タスクの合間を見て試していたので足掛け一週間ぐらいかかりました。