SubstrateをUbuntu 18.04にインストール

Substrateについていろいろ試すにあたり、なにはともあれインストールしてみます。公式サイト通りにやってもうまくいきませんでした。多分、公式はMacを対象としているのでしょう。環境としては、Ubuntu 18.04 LTSの元で動かしています。まずは、Substrateをインストールします。

インターチェーン技術のPolkadotからの流れで、Polkadotが使用しているSubtrateのフレームワークについての投稿です。こちらのCreating Your First Substrate chainは、Subtrateのブロックチェーンで動くランタイムライブラリを30分以内で作るチュートリアルだそうです。

前提条件

このチュートリアルはNode.jsのバージョン11で確認されているようです。ここは私の環境ではnode.jsのバージョンはv10.16.2だったので、ここは敢えて何も考えずにこの記事投稿時点の最新v12.13.0にしてみたらUIツールのセットアップのステップで失敗しました。バージョンを確認済みの11代のv11.15.0にしたところこのセットアップはうまくいったので、Node.jsのバージョンは11で進めます。

さて、実際に準備をすすめていきます。作業用にGitHubのリポジトリを作成し、そこで作業することにします。

Substrateのインストール

本家のManual Buildの手順ではうまく行きませんでした。

クローンした後、スクリプトを実行するように言われますが、そのスクリプトが見当たりません。多分、

$ curl https://getsubstrate.io > ./Scripts/init.sh

とか実行して落としてくるのかな?「インストール頑張る!」が目的ではないので、あっさりBuildを諦めて

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

でインストールしました。一応ソースファイルとかは、ローカルにクローンしたし。。。

$ substrate --version
substrate 2.0.0-2ffaf0541-x86_64-linux-gnu
$ subkey --version
subkey 2.0.0

チュートリアルで使用するというので、以下のコマンドを2つ実行してフォルダを作成します。

$ substrate-node-new substrate-node-template <author-name>
$ substrate-ui-new substrate
$ ls
substrate-node-template  substrate-ui

ここまでが環境準備です。チュートリアルに向けて、Substrateの開発用のチェーンを起動します。

Substrateの開発用チェーンの起動

まず、開発用のチェーンを起動します。

$ ./target/release/substrate-node-template --dev
2019-11-29 09:33:20 Substrate Node
2019-11-29 09:33:20   version 1.0.0-88c8cad-x86_64-linux-gnu
2019-11-29 09:33:20   by hajime, 2017, 2018
2019-11-29 09:33:20 Chain specification: Development
2019-11-29 09:33:20 Node name: troubled-crowd-5170
2019-11-29 09:33:20 Roles: AUTHORITY
2019-11-29 09:33:20 Best block: #240
2019-11-29 09:33:20 Using default protocol ID "sup" because none is configured in the chain specs
2019-11-29 09:33:20 Local node identity is: QmRt2vmHf1cFfpshCMhpmpuQoUkhnKMBhgk2kmkenVcptT
2019-11-29 09:33:20 Libp2p => Random Kademlia query has yielded empty results
2019-11-29 09:33:20 Listening for new connections on 127.0.0.1:9944.
2019-11-29 09:33:20 Using authority key 5FA9nQDVg267DEd8m1ZypXLBnvN7SFxYwV7ndqSYGiN9TTpu
2019-11-29 09:33:23 Libp2p => Random Kademlia query has yielded empty results
2019-11-29 09:33:25 Idle (0 peers), best: #240 (0x5960…c20f), finalized #0 (0x6507…d867), ⬇ 0 ⬆ 0

うまく行きました。PCリソース的にも大したことなさそうです。

続いて、UIのセットアップと起動です。この投稿の冒頭にも書きましたが、Node.jsのバージョンを投稿時(2019/11/29)時点の最新のv12にしたところ、パッケージのインストールに失敗しました。blake2jsというハッシュを扱うNodeモジュールのインストールがうまく行かないようです。v11.15.0にしたところ、うまくインストールが完了しました。

$ npm run dev

> substrate-ui@1.0.0 dev /home/hajime/git/CreatingYourFirstSubstratechain/substrate-ui
> npm-run-all --parallel webpack-dev server

> substrate-ui@1.0.0 webpack-dev /home/hajime/git/CreatingYourFirstSubstratechain/substrate-ui
> webpack --mode development --watch --debug

> substrate-ui@1.0.0 server /home/hajime/git/CreatingYourFirstSubstratechain/substrate-ui
> nodemon --watch src/ --verbose --exec ./node_modules/.bin/babel-node server.js --ext jsx,js --presets env,react

[nodemon] 1.19.4
[nodemon] to restart at any time, enter `rs`
[nodemon] or send SIGHUP to 15038 to restart
[nodemon] watching dir(s): src/**/*
[nodemon] watching extensions: jsx,js
[nodemon] starting `./node_modules/.bin/babel-node server.js --presets env,react`
[nodemon] spawning
[nodemon] child pid: 15057
[nodemon] watching 15 files

webpack is watching the files…

Listening on port 8000
Hash: f1a26497b7b29b25de7e
Version: webpack 4.41.2
Time: 3053ms
Built at: 11/29/2019 9:41:27 AM
                               Asset      Size  Chunks             Chunk Names
82f60bd0b94a1ed68b1e6e309ce2e8c3.svg   105 KiB          [emitted]  
8e3c7f5520f5ae906c6cf6d7f3ddcd19.eot   104 KiB          [emitted]  
962a1bf31c081691065fe333d9fa8105.svg   382 KiB          [emitted]  
a1a749e89f578a49306ec2b055c073da.svg   496 KiB          [emitted]  
b87b9ba532ace76ae9f6edfe9f72ded2.ttf   103 KiB          [emitted]  
                           bundle.js  8.15 MiB    main  [emitted]  main
Entrypoint main = bundle.js
[0] crypto (ignored) 15 bytes {main} [built]
[./node_modules/oo7-substrate/src/srml sync recursive ^\.\/.*$] ./node_modules/oo7-substrate/src/srml sync ^\.\/.*$ 321 bytes {main} [optional] [built]
[./src/AccountIdBond.jsx] 2.08 KiB {main} [built]
[./src/AddressBookList.jsx] 1.47 KiB {main} [built]
[./src/BalanceBond.jsx] 2.62 KiB {main} [built]
[./src/FileUploadBond.jsx] 1.2 KiB {main} [built]
[./src/InputBond.jsx] 4.85 KiB {main} [built]
[./src/Pretty.jsx] 590 bytes {main} [built]
[./src/StakingStatusLabel.jsx] 2 KiB {main} [built]
[./src/TransactButton.jsx] 4.09 KiB {main} [built]
[./src/TransformBondButton.jsx] 1.67 KiB {main} [built]
[./src/WalletList.jsx] 2.59 KiB {main} [built]
[./src/app.jsx] 15.1 KiB {main} [built]
[./src/denominations.js] 347 bytes {main} [built]
[./src/index.js] 356 bytes {main} [built]
    + 1144 hidden modules

立ち上がったら、http://localhost:8000 にアクセスします。

コメント

  1. […] SubstrateをUbuntu 18.04にインストール 2019-11-28 […]

タイトルとURLをコピーしました