Lisk SDK を使ってブロックチェーンアプリを作りたい ~環境構築編~
はじめに
はじめまして。おひさしぶりです。万博おじです。
今回からブロックチェーンアプリを作ることを目標として記事を書いていきます。
わりとまじめな開発の話とかすると思いますが、どうぞお付き合いください。
※不定期更新
今回の内容
Lisk SDKを使ったアプリを作るための環境構築とサンプルプログラムでの動作確認
記載する環境構築方法は万博おじのやり方なので、慣れている人は随時好きにカスタマイズしてください
開発環境はこの記事を書いている 2019/12/2 時点の内容です。
Lisk SDKのバージョンアップなどにより、環境が変わる可能性があります。
公式ドキュメント:https://lisk.io/documentation/lisk-sdk/setup.html
そもそもLisk SDKってなんぞ?
ブロックチェーンアプリケーションプラットフォームであるLiskのサイドチェーン開発キットです。
[参考]
公式:lisk.io
github:lisk-sdk
Node.jsを使用して開発が可能なので、JavaScriptを使ったことがある人であればすぐに慣れるかと思います。
公式推奨環境
推奨環境は以下の通りです。
[OS]
・Ubuntu 16.04 (LTS) x86_64
・Ubuntu 18.04 (LTS) x86_64
・MacOS 10.13 (High Sierra)
・MacOS 10.14 (Mojave)
[環境]
Node.js 10.15.3
PostgreSQL 10+
Redis (optional) 5+
Python 2
以下から抜粋
https://lisk.io/documentation/lisk-sdk/setup.html
Windows 公式サポートしてないですが、環境が作れれば問題なし。
ちょっとだけ環境構築めんどくせーのと、実際にアプリケーションとして外部公開する際のサーバーレンタル費用がちょっとお高いくらいだよ。
事前準備 (各OS共通)
以下が必要です。
・パソコン (Windows, Mac, Linux系)
・エディタ (Visual Studio Code, IntelliJ IDEA, Atomなど)
・Lisk Desktop
・やるぞという気持ち
エディタとLisk Desktopはパソコンにインストールしておきましょう。
やるぞという気持ちは自身にインストールしておきましょう。
※万博おじは Mac & Visual Studio Code を使って開発します。
開発前はイケイケな気持ちです。
Mac での環境構築
[はじめに]
ターミナルと書かれているものは、標準アプリのターミナルでもエディタに付属のターミナルでもどちらでもOKです。
[注意]
Macのシェルが zsh になっている場合があるので bash コマンドを zsh に置き換えることが出来ない人は bash に戻しときましょう。
※zsh か bash かの確認と変更の方法は以下のQiita記事が分かりやすいです
catalinaでterminalがzshになったのを一旦bashに戻す方法
1. bash_profile の作成
ターミナルで以下を入力
ls -a ~
.bash_profileが表示されなければ以下を入力
touch ~/.bash_profile
.bash_profile が嫌な人は .bashrc
zsh の人は .zshprofile や .zshrc とか好きに作ってください。
2. Xcode を導入
Mac App Store から Xcode をインストール
https://apps.apple.com/jp/app/xcode/id497799835
めっっちゃ時間がかかるので、空いている時間にやっておくのを推奨。
最低限の開発環境を自分で導入できるような詳しい人は Xcode は入れなくてもOK
※サイズでかすぎなので、入れなくていいなら入れたくない!
3. Command Line Tools for Xcode の導入
ターミナルで以下を入力
xcode-select --install
インストールするか聞かれるので素直にインストールしましょう。
4. homebrew の導入
ターミナルで以下を入力
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
最新のコマンドは https://brew.sh/ の Install Homebrew の下に記載されているコマンド
5. 必要なライブラリの導入
ターミナルで以下を入力
brew install autoconf automake libtool
command not found と言われたらターミナルで source ~/.bash_profile と入力。または、ターミナルを終了して再度起動
6. Docker IDを登録
Dockerのサイトで登録
「Sign Up for Docker Hub」ボタンから登録
ID、パスワード、メールアドレスを入力すると登録メールアドレス宛に確認メールが届くので認証を行って下さい。
その後、名前や目的の入力を行い登録完了です。
7. Docker Desktop for Macを導入
Onboarding Tutorial画面からダウンロード&インストール
※画面右下にNext Stepというボタンがありますが、あくまで使い方の説明なので必ず行う必要はありません。
インストールが終わったら画面を閉じてOKです。
※ユーザー登録後にサインアウトしてしまっていたら、Dockerのサイトの右上にあるSign Inをクリックしてサインインしてください。
※Docker Hub画面が表示された場合は「Get Started with Docker Desktop」ボタンをクリックするとOnboarding Tutorial画面が開きます。
※DockerイメージファイルがOSと同じ領域に作成されるのが嫌な人は設定からイメージの作成場所を別ディスクにしましょう。
※Dockerのコンポーネントの開始・終了などコマンドでやるのが億劫なひとはKitematicを入れるといいかも。
8. PostgreSQLを導入
ターミナルで以下を入力
docker run --name lisk_db -p 5432:5432 -e POSTGRES_USER=lisk -e POSTGRES_PASSWORD=password -e POSTGRES_DB=lisk_dev -d postgres:10
DockerにPostgreSQLを設定します。
コマンドのPOSTGRES_USER, POSTGRES_PASSWORDは本来変えるべきですが、開発環境なのでそのままでもOKです。
9. Node.jsのバージョン管理ツールを導入
ターミナルで以下を入力
brew install nodebrew
バージョンを変えての開発をするつもりがなければ Node.jsのサイトから直接推奨バージョンを入れてもOKです。
※Lisk公式では NVM を使用していますが、万博おじはnodebrewが好きなのでnodebrewで説明します。
※Node.jsを以前入れたことがある場合はバージョン管理する前に削除する必要があります。方法は以下のQiita記事が分かりやすいです
macにnodebrewをインストールする
10. Node.jsを導入
ターミナルで以下を入力
nodebrew install-binary 10.15.3
nodebrew use v10.15.3
node -v と入力して 10.15.3 と表示されたらOK
command not found と言われたらターミナルで source ~/.bash_profile と入力。または、ターミナルを終了して再度起動
11. PM2を導入
ターミナルで以下を入力
npm i pm2 -g
command not found と言われたらターミナルで source ~/.bash_profile と入力。または、ターミナルを終了して再度起動
※npmが一向にcommand not foundとなる場合はNode.jsの導入に失敗している可能性があります。node -vで導入できているか確認しましょう。
それでもだめならとりあえずMac再起動(笑)
12. アプリケーションのソースファイルを入れる為のフォルダを作成
好きな場所で好きな名前でフォルダを作成
例:デスクトップ/tutorial
13. Visual Studio Codeを起動し、上記で作成したフォルダを開く
アプリケーションの一覧から起動
別のエディタを入れた人はそのエディタを起動
14. Node.js初期設定
Visual Studio Code内のターミナルで以下を入力
npm init
色々入力を求められますが、とりあえずEnter連打でOK
※公開することを考えて開発する場合はちゃんと入力しましょう。
もちろん、後から変えられます。
※Visual Studio Code内のターミナルでやる必要はありませんが、開いたフォルダパスが初期パスになるので何かと便利です。
15. Lisk SDKの導入
Visual Studio Code内のターミナルで以下を入力
npm i lisk-sdk
ようやくLisk SDKにたどり着きました(`・ω・´)
16. Lisk SDKのサンプルコンフィグを元にコンフィグを作成
1. lisk_sdkフォルダ内のsampleフォルダをコピー
コピー元
tutorial
└ node_modules
└ lisk-sdk
└ src
└ samples ← コレを
2. コピーしたフォルダを作成したフォルダの直下にペースト
コピー先
tutorial
└ node_modules
└ samples ← こう
3. 名前変更
tutorial
└ node_modules
└ config ← そしてこう
公式ドキュメントにはsamplesのコンフィグをそのまま使用するようになってますが、ずーっとsamplesを使用するのも微妙なので初めて開発する段階からコンフィグは独自で作成する癖をつけましょう。
17. コンフィグの内容を変更
上記でコピーしたコンフィグファイルには最低限以下の変更をする
1. config_devnet.json
"label": "devnet-alpha-sdk",
→ "label": "あなたのアプリケーション名",
2. genesis_block_devnet.json
"recipientId": "16313739661670634666L",
→ "recipientId": "好きなLiskアドレス",
genesis_block_devnet.jsonの好きなLiskアドレスは、パスフレーズがわかるアドレスにしましょう。
※DockerにPostgreSQLを導入した際、IDとパスワードを変更している場合はconfig_devnet.json の "storage": { ・・・ } 内にある、 "user" と "password" をそれぞれ変更しましょう。
"user": "lisk", → "user": "変更したID"
"password": "password", → "password": "変更したパスワード"
※メインネットで使用しているLiskアドレスは使用せず、Lisk DesktopやLisk Mobileなどで別のアカウントを作成しておきましょう。(パスフレーズはメインネット、テストネットで特に分かれているわけではないので、何で作ってもOK)
18. サンプルプログラムを作成
index.jsを作成し、以下のコードをコピペ
const { Application } = require('lisk-sdk');
const { genesisBlockDevnet, configDevnet } = require('./config');
const app = new Application(genesisBlockDevnet, configDevnet);
app
.run()
.then(() => app.logger.info('App started...'))
.catch(error => {
console.error('Faced error in application', error);
process.exit(1);
});
フォルダ内は以下のようになっているはず
tutorial
└ config
| └ config_devnet.json
| └ genesis_block_devnet.json
| └ index.js
└ node_modules
└ index.js ← 今作成したのがこれ
・・・
19. サンプルプログラムを起動
Visual Studio Code内のターミナルで以下を入力
pm2 start --name tutorial index.js
--name の後ろはなんでもいいですが、アプリケーション名やフォルダ名に合わせておくとよいです。
うまくいくと、PM2の稼動状況リストがターミナルに表示されます。
※Modeがforkとなっていても、forkモードでPM2がアプリを起動しているという意味であり、ブロックチェーンがforkしてるわけではないので安心してください。
[PM2のコマンド]
アプリ一覧確認: pm2 list
アプリ停止: pm2 stop リストの番号
アプリ起動(初回起動後): pm2 start リストの番号
ログ参照: pm2 logs リストの番号 ※tailいらずで便利
ログ参照から抜ける: command + C
20. Lisk Desktopで稼働確認
1. Lisk Desktopを起動後、設定からネットワークスイッチをON
2. サインイン画面に戻る
3. 画面右上にリストボックスが出現するのでそれをクリック
4. Custom Nodeのテキストボックスに 127.0.0.1:4000 と入力
5. Connectedボタンクリック
6. パスフレーズを入力してサインイン
genesis_block_devnet.jsonの変更時に記載したアカウントのパスフレーズを入れた場合、1億LSK保持しているはずです。
アカウントの作成も自由にできますが、メインネットと同じように、そのアカウントで送金を1度行う必要があります。
作成したアカウント宛てにLSKを送金する役割はgenesis_block_devnet.jsonの変更時に記載したアカウントからやりましょう。
Ubuntu での環境構築
lisk-sdk-installer を使って環境構築できます。
使い方はReadme参照
万博おじお手製の環境構築スクリプトです。
スクリプトが正常終了したらMacでの環境構築の
12. アプリケーションのソースファイルを入れる為のフォルダを作成
13. Visual Studio Codeを起動し、上記で作成したフォルダを開く
と
16. Lisk SDKのサンプルコンフィグを元にコンフィグを作成
以降を実施してください。
Windowsでの環境構築
[はじめに]
Windows Server ですか?
→ 「はい」の方はこの構築方法をご覧ください。
Windows 10 pro ですか?
→ 「はい」の方はこの構築方法をご覧ください。
上記どれでもない方は、Virtual Boxをインストール後、推奨環境にあるUbuntuを導入しUbuntuでの環境構築を参考に構築してください。
1. Hyper-Vの導入
以下の公式ドキュメントを参考に有効化してください。
Windows 10 上に Hyper-V をインストールする
2. Docker Desktop for Windowsを導入
Macでの環境構築の以下を参考に導入してください。
・6. Docker IDを登録
・7. Docker Desktop for Mac
以降は Macでの環境構築の8. PostgreSQLを導入~ を参考に構築してください。
[Node.jsについて]
バージョン管理する場合、NVM for Windows などを使用
※導入は以下のQiitaの記事がわかりやすいです
nvm-windows 導入
バージョン管理しない場合、Node.jsの公式サイトから10.15.3をインストール
おわりに
これで、Lisk SDKを使ったアプリケーションの開発環境が構築できましたね。
良い開発ライフを! (`・ω・´)b
万博おじについて
万博記念公園と新しいものが好きなプログラムやさん
お金がなくていつもこまっているので支援おねがします(;^ω^)
Twitter:@ys_mdmg
github:lisknonanika
Discord:@mdmg
Lisk:mdmg(5380827711560203827L)
その他加入している非公式コミュニティ
・Lisk Japan
・Lisk 情報システム部 (Twitter内グループ)
・Lisk ゲーム部 (Twitter内グループ)
この記事が気に入ったらサポートをしてみませんか?