NEMventory – NEM Blockchainを使用した安全なSAASアプリケーションの作成

NEMチームは、Robin(Telegram user:@robinped)よりこのブログを利用しようと考えています。
このNEMのブロックチェーンを利用する機能を、必要としたSAASプロジェクトのリソースを提供している記事を執筆しています。
この機能には、次のものがあります。
- 分散された情報
- ブロックチェーンは、一部のデータに対し、共有されている安全で不変なソースとして使用する必要がある
- 信頼できるサーバーのリスト
- メンバーリスト
- マスターアイテム
- ドキュメンテーション
- 不変でタイムスタンプのある情報を共有する必要がある
- 証明書
- サービス業務
- 価値資産
- 処理するにはブロックチェーンを使用する必要がある
- 譲渡可能かつ価値ある資産
- ゲーム内通貨
- フォーラムポイント
- 価値あるトークン
- 身元
- トランザクション
- 決済を送ったり受け取ったりする必要がある
- 寄付
- 電子商取引
- 暗号化
- いくつかの情報を暗号化して保存する必要がある
- 健康記録
- シークレットメッセージ
バックグラウンド
NEMventoryを構築した経験に基づき、この記事を作成しています。
集中型のネームスペースでモザイクを使用するシンプルな概念実証インベントリおよび取引システム。
バックエンドはLaravelで作成され、フロントエンドはVUEで作成されました。
オフチェーンコントラクト
集中化されたネームスペースにおての課題は、ユーザーにネームスペースとのやり取りのための限定された許可、つまりコントラクトを与えることです。
これはしばしばスマートな “オフチェーン"コントラクトと呼ばれ、NEMを使用すると、どの言語でもこのコードを書くことができます。NEMventory内では、集中型のネームスペース上にアセットを創設するコントラクトがあります。
このコントラクトはPHPで書かれており、Webアプリケーションのバックエンド内で実行されています。
また、コントラクトは、特定のメッセージの転送が受信されると開始される。ブロックチェーン内に大量のデータを格納することは避けたいので、メッセージは情報照合のみを保持します。
照合される情報が十分で、転送に十分なXEMがある場合、コントラクトが実行されます。
コントラクトが実行されると、参照される情報に基づいて、ネームスペースにモザイクが生成される。
NEM off-chain smart contract
このコントラクトには別のセキュリティレイヤーがあります。
コントラクトはトランザクションを申し込むだけです。
アカウントはマルチシグ(ビットコインの秘密鍵が一つではなく、複数に分割されており、ビットコインへのアクセスは一定数以上の鍵を合わせる必要があること)であるため、人もしくはbotもそのロジックに基づいてトランザクションを確認する必要があります。
インフラ
もう一つの課題は、公開SAASアプリケーションがNEMネットワークと通信する方法です。ブロックチェーンから公開情報のみを要求する場合は、安全な通信チャネルは必要ありません。しかし、我々の通信手段がプライベートキーを「含む」場合、この接続を保護する必要があり、主に次の2つの選択肢があります。
1)データをリモートノードにアナウンスする前には署をする。
2)データ上に署名して、アナウンスされるローカルノードを実行する。
1)の場合、独自のEd25519サインツールを作成するか、NEM-SDK JavaScriptライブラリを使用する必要がある。
トランザクションに署名できるNEM NISノードとのローカル通信を持つ安全なバックエンドを作成したので私はNEMventoryの1)を試してみませんでした。
トランザクションがクライアントによってのみ署名されたSAASソリューションを想定することもできますが、さらにそれを強化するには、ユーザーパスワードを使用したクライアント側の復号だけで済みます。
しかしそれは別の記事で述べます。
このSAASタイプでは、ローカルNEMノードを持つ2)を使用してブロックチェーンネットワークと通信します。このNEMノードはNISと呼ばれます。
インストール手順はこちら(https://blog.nem.io/ubuntu-installation-guide-standalone/)にあります。
APIについては、こちらのドキュメント(https://nemproject.github.io/)をご覧ください。 我々のWebアプリケーションバックエンドはNEMノードと通信します。NEMノードはAPIを介してWebアプリケーションのフロントエンドに情報を提供します。 NISとの通信を簡素化する、複数の言語のライブラリがいくつか存在します。
- JavaScript
- https://github.com/QuantumMechanics/NEM-sdk“>NEM-sdk
- https://nemlibrary.com/“>NEM Library
- PHP
- https://docs.nem.io/en/nis-wrappers“>See more libraries for other languages…
Multi-sig(マルチシグ)
NEMブロックチェーンには、SAASインフラ内で、資金とともにメインアカウントを安全に保つマルチシグ認証のような機能が組み込まれています。バックエンドWebアプリケーションは、マルチシグコンシグナーキーの一つを保持します。したがって、侵入者は取引を申請することしかできないでしょう。そして、取引にサインする必要があるかどうかについての署名(botまたは人)にロジックを置くことができます。
サーバが侵害された場合(同じサーバ上にボットが存在しない場合)、侵入者はメインアカウントから資金を奪うアクセス権は与えられません。
このシステムが我々の貴重な資金を守ってくれます。 必要に応じて資金を回収することで、さらにそれを推進することができます。
NEM typology 2
独自のブロックチェーンSAASプロジェクトを開始
NEMブロックチェーンが提供する機能を活用するSAASアプリケーションを作成する手順です。
- Ubuntuサーバーを設定します。
2.ここにサーバー上のNEMノードを設定します。
- NEM 2-of-3 multisigアカウントを作成します。 (チュートリアルパート1、パート2)
- Webアプリケーションを設定します。 (Angular2、Laravel)
- WebアプリケーションをNEMノードに接続します。
<br class="Apple-interchange-newline"><div id="inner-editor"></div>
126/5000
[NEMventory here](https://github.com/RobertoSnap/nemventory)にて完成されたSAASの例を見ることができます。
セットアップNEMventoryの例
NEMventoryは、Laravel 5.4バックエンドとVue SPAフロントエンドで構成されています。
安全なネームスペースを実行するには、少なくとも1人のパブリック署名者と1人のプライベート署名者でmultisigアカウントを設定する必要があります。パブリック署名者は、バックエンドの.envファイルに格納されます。 プライベート署名者は自分自身のbotを設定することも可能です。
1、Laravelを設定
https://laravel.com/docs/5.4/installation
1、Windows:https://laravel.com/docs/5.4/homestead
2、Mac:https://laravel.com/docs/5.4/valet
2、このリポジトリをパブリックフォルダgit cloneにクローンします。https://github.com/RobertoSnap/nemventory.git Nemventory
3、composerのインストールを実行します。
4、インストール用のDBを設定し、PHP artisanを移行します。
5、PHP artisan passportをインストールします。これにより、APIベースの認証用キーが生成されます。
6、npm installを実行します。
7、npm run watchを実行します。
8、次に.envファイルで次のように設定します。
“`PHP MAINACCOUNTADDRESS= MAINACCOUNTPUBLICKEY= MAINPUBLICACCOUNTPUBLICKEY= MAINPUBLICACCOUNTPRIVATEKEY= NEMNODEIP=127.0.0.1
参考英文出典:https://blog.nem.io/nemventory/
日本でNEMが買えるのはZaif(ザイフ)だけ
NEMについてもっと詳しく知りたい方はこちら
Written by Yuki Okubo
Related Articles
この記事を書いた人

-
元気いっぱいな女の子、厚かましいという一面も。
読者の皆さんから寄せされたご意見から、 「あのICOは今どうなっているのか?」 を、徹底調査してレポートします。
ICO調査員は、プロジェクトに直接問い合わせるのはもちろん、ネットの意見や口コミからレポートを作成しております。中立な立場を保つため、双方の事実・意見をまとめています。