Lisk SDK v6を使ったブロックチェーンアプリの作り方 その2
はじめに
こんにちは万博おじです。
前回は開発環境の準備を行いましたね!
なので、今回からさっそくブロックチェーンアプリを作っていきましょう!
…と言いたいのですが、その前にシステム開発についてLisk SDKの特徴をまじえながらお話が今回の記事です。
Lisk SDK について
Lisk SDK とは
「JavaScriptやTypeScriptでブロックチェーンアプリケーションを構築できるオープンソースな開発キット」です。
Module(モジュール)
Lisk SDKではブロックチェーンアプリの機能をある単位にまとめたものをモジュールと言いいます。
作成したモジュールや配布されているモジュールを組み合わせてブロックチェーンアプリを作ります。
ブロックチェーンアプリは作らず、便利なモジュールの作成のみ行い配布するというのもアリかもしれませんね!
Plugin(プラグイン)
Lisk SDKではモジュールによって登録されたブロックチェーン上の情報にアクセスしたりモジュールの機能を実行するような、自ブロックチェーンアプリ以外の機能のために作成するものをプラグインと言います。
モジュールとは違い、ブロックチェーンアプリを作る際に必須ではありません。
Store(ストア)
Lisk SDKではモジュールに含まれています。
ストアは以下の2種類存在します。
オンチェーンストア
オフチェーンストア
オンチェーンストアはブロックチェーン内に情報を保持したい場合に使用します。
オフチェーンストアはオンチェーンストアに保持するほどでもないような補完情報などを保持したい場合に使用します。
他のノードと同期されるのはオンチェーンストア内の情報のみです。
Command(コマンド)
Lisk SDKではモジュールに含まれています。
トランザクションをトリガーとしてブロックチェーンに情報の登録などを行います。
Event(イベント)
Lisk SDKではモジュールに含まれています。
ブロック実行中にブロックチェーンネットワークで発生したイベントのログを保管します。
これはブロックごとに発生します。
Method(メソッド)
Lisk SDKではモジュールに含まれています。
自ブロックチェーンアプリケーション内の他のモジュールから、このメソッドが含まれているモジュールに関連する機能の呼び出しを行う際に使用されます。
Endpoint(エンドポイント)
Lisk SDKではモジュールおよびプラグインに含まれています。
メソッドと同じようにモジュールに関連する機能を提供しますが、外部のアプリケーションからも使用可能です。
まとめ
Lisk SDKでブロックチェーンアプリケーションを作成する場合、最低限以下を作成する必要があります。
モジュール
コマンド
イベント
メソッド
エンドポイント(モジュールに含まれるもの)
ストア(オンチェーンストア)
考えること色々
フロントエンド開発の必要性
ユーザーが利用するサービス・機能をフロントエンドと言います。
例えばWEBサイトやスマホアプリなどですね。
Lisk SDKを使って作るブロックチェーンアプリはバックエンドなので、UXを考慮したうえでフロントエンド開発も行う必要があります。
Liskのサイドチェーンアプリにするか否か
Lisk SDKを使ってブロックチェーンアプリを作ってもサイドチェーンアプリにするかどうかは自由です。
ユースケースを考える
モジュールを作り、そのコマンドやエンドポイントを作成するにはユースケースをしっかりと考えておく必要があります。
例えばショッピングサイトをイメージしてみましょう。
購入者と販売者は概ねどのショッピングサイトでも以下のようなことが出来ると思います。
また、販売者は購入者と同じことが出来るはずです。
[購入者]
・ショッピングサイトにログインする
・自分の情報を確認する
・商品の情報を確認する
・商品をカートに入れる
・商品を購入する
[販売者]
・商品を販売する
※他購入者と同じことが可能
そして、上記の内容は何で作成するかを考えましょう。
ショッピングサイトにログインする
これはLiskで言うとパスフレーズを入力して自身の情報にアクセスするといったことで賄えるのではないでしょうか。
なので、基本的には実装は必要のない機能ということがわかります。
自分の情報を確認する
これは前述「Lisk SDKについて」のところで説明したエンドポイントを使用します。
商品の情報を確認する
これも上記同様にエンドポイントを使用します。
商品をカートに入れる
これはフロントエンドの機能になります。
商品を購入する
購入情報はブロックチェーンに登録してあげる必要があるので、前述「Lisk SDKについて」のところで説明したコマンドを使用します。
商品を販売する
商品情報はブロックチェーンに登録してあげる必要があるので、こちらも前述「Lisk SDKについて」のところで説明したコマンドを使用します。
上記以外には「販売者」と「購入者」をブロックチェーン上で明確に分ける必要があるか否かも考える必要があります。
分ける場合は販売者登録を行うモジュールの作成が必要になるかもしれません。
セキュリティリスクを考える
リアルマネーが絡まないサービスであれば問題にならないだろうと思うかもしれませんが、そうではありません。
サービス公開を行う際にVPSなどを使用すると思いますが、サーバー乗っ取り、踏み台などにされないようにセキュリティ対策はしっかりと行っておくべきです。
踏み台にされたあげく逮捕とかありますからね。
おわりに
おわりです。
読み物なので面白くなかったですね。うん。
次回から開発していきますよ!
なお、公式サンプルのhelloを使います。
お疲れさまでした。