Loom PlasmaChainに初めてのアプリをデプロイしよう: Loomのインストール、環境設定、鍵の生成
本記事は、Deploying Your First App to Loom PlasmaChain: Installing Loom, Setting up Your Environment, and Generating Keys(Dev Bharel) の翻訳です。万一誤訳などありましたらPrivate Note機能でお知らせ下さい。
Loom PlasmaChain入門
あなたが開発者で、Ethereum上のスケーラブルなDApps構築に関心をお持ちであれば、トランザクションスループット及びトランザクションあたりのコスト対処という問題に直面するだろう。
Delegated Proof of Stake(DPoS)を使用したサイドチェーンネットワーク・Loomを導入すると、Ethereumメインネットへのトランスファーゲートウェイを使ってセキュリティのチェックポイントを取りつつ、スループットを向上させることができる。Loomについての詳細は、こちらのハンディガイドをチェックすること。
PlasmaChainとはLoomブロックチェーンネットワーク内の1つのブロックチェーンであり、ブロックチェーンゲーム向けの安定的なプラットフォームを提供するものである。これらのチェーンは、トランスファーゲートウェイを使用し、サイドチェーン(この場合PlasmaChain)からEthereumメインネット(または他のチェーンでも)へのアセット移転を可能にしている。
1. Loomのインストールと環境構築
新しいことを学ぶ最初のステップは、それを使って遊ぶことだ!早速システム上にLoomバイナリをインストールして、テスト用のローカルチェーンを手に入れよう。私はプラットフォームとしてLinuxを使用しているが、基本的にLinuxとMacでの手順は同じだ。もしWindowsをお使いならWSLをチェックしよう。だがバグがあることもあると警告しておく。その代わりに、仮想マシンやもしくはリモートサーバー上、好きな方を選んでチェーンを実行してテストしよう!
$ curl https://raw.githubusercontent.com/loomnetwork/loom-sdk-documentation/master/scripts/get_loom.sh | sh && chmod +x loom
もしこのコマンドが動かなければ(例えば、公式にテストされたバージョンはdebian、ubuntu、CentOS用であるので、私はがArch Linuxを実行していることは認識されない)、その代わりに以下のコマンドで最新バイナリをダイレクトにダウンロードすることができる:
$ curl -sL -o loom https://private.delegatecall.com/loom/linux/stable/loom && chmod +x loom
ではgenesisファイルとチェーンデータディレクトリを初期化するため、以下を実行しよう:
$ ./loom init
チェーンを起動するには、こちらのコマンドを使用する:
$ ./loom run
チェーンはデフォルトではポート46657で実行されており、トランザクションをリアルタイムで見たい場合は、提供されているblock explorerを使用すれば可能となっている:
https://blockexplorer.loomx.io/
(チェーンをローカルでホストしていない場合、単に下欄のURLとポート番号をあなたがホストしているチェーンの場所に変更しよう。) ブロック生成時間は1秒なので、トランザクションはほぼ即時のものとなる。
最後に注目すべき便利なコマンドがある:
$ ./loom reset
このコマンドは、構成ファイルをクリアすることなくチェーンデータをリセットし、真っ新なチェーンにすることができるとされている。単にチェーンをフレッシュなものにしたいなら、./loom run コマンドを実行しよう。
2. 鍵の生成
トランザクションをチェーンに送信するには、鍵の生成も必要だ。
$ ./loom genkey -k priv_key -a pub_key
このコマンドは、ディレクトリ内に鍵を含むpriv_keyファイル及びpub_keyファイルを作成する。注意したい点として、これは鍵をエンコードされた形式で保存するので、出力されるローの公開鍵へのアクセスが必要となる。そのため、ローカルアドレスの公開鍵のアウトプットをどこかに保存しておき、後から簡単にアクセスできるようにしておこう。
3. サンプルコード
非常にシンプルなコントラクトを作成して、チェーンにデプロイしてみよう。Truffleをまだお持ちでない方は、入手する良い機会だ。Truffleとは複雑なSolidityアプリケーションを作成し、テストし、デプロイするためのフレームワークである。
マシンにtruffleをインストールしたら、LoomのGithubからサンプルリポジトリをクローンしよう:
$ git clone https://github.com/loomnetwork/truffle-dappchain-example $ cd truffle-dappchain-example
# copy the private key generated earlier to the root directory of the example repo
$ cp ../priv_key extdev_private_key
Yarnを使って、このdependenciesをダウンロード/インストールすることができる。
この面白いリポジトリには何があるか見てみよう:
truffle-dappchain-example\
-> extdev_private_key
-> priv_key
-> pub_key
-> truffle_config.js
-> contracts/
extdev_private_keyは生成した鍵であり、コードをテストネットにデプロイするのに使用する。truffle-dappchain-exampleディレクトリ内のpriv_keyファイル及びpub_keyファイルは、ローカルチェーンにデプロイするための鍵と同じものである。
truffle_config.jsでは、接続可能な様々なネットワークが定義される。ではその中身を見てみよう:
具体的にネットワークオブジェクトを見てみると、現在3つのネットワークが定義されていることが確認できる。
loom_dapp_chain
はローカルチェーンネットワークとして定義されており、クイックテストに使用される。extdev_plasma_us1
はLoomテストネットのplasmaチェーンと定義され、ここへのデプロイはトークンを必要とする。rinkeby
はEthereumのRinkebyテストネットで、今後トランスファーゲートウェイの記事にて使用していくものだ。
これは、自分のネットワークを追加する方法を学ぶのに非常に良いテンプレートだ(例えば、AWS上のテストネットワーク、もしくは代わりのEthereumネットワークとしてRopstenを追加するなど)。もしEthreumノードに接続するためのInfura APIキーがなければ、こちらでゲットするか、もしくはシンプルに任意のノードに接続する独自のノードを運営しても良い。
そしてついに、サンプルコントラクトシリーズをContractsフォルダ内に見つけることができるだろう。これらはPlasmaChain向けに、ERC20及びERC721トークンを作成する方法を扱っている。
このチュートリアルはSimpleStore.solのみを扱っていく(その他のものは、今後の記事で取り上げる)。SimpleStoreとは、その名が示す通り、ブロックチェーン上の価値を保存し回収するためのシンプルなコントラクトである。なんの工夫もトークン化もない、ただの必要最小限のコントラクトだ。これは、学んでいくにつれて機能を補っていける、ハックしがいのあるコントラクトになっていくはずだ。
4. Karma
Ethereumがスマートコントラクトのデプロイにgasを課しているように、Loomブロックチェーンにスマートコントラクトをデプロイするのにも資金が必要となる。コントラクトのデプロイメントに対する支払いとして、Karmaが課される。しかしEthereumと違い、自分のコントラクトとやりとりするトランザクションに対しての支払いは必要ない。コントラクトの所有者は通常月額料金を支払い、彼らのコントラクトへの全トランザクションは無料となる。
PlasmaChainテストネットは、学習環境そしてプロトタイプ環境として使用されることを目的としているので、無料で使うことができる。Karmaトークン(Karma faucetから無料で入手できる)を提供するだけでよく、月額料金を機にする必要はない。
ローカルチェーンにデプロイするには、まずこれを実行してローカルチェーンが動いているか確認しよう:
$ ../loom run
その後、別のターミナルを開いて:
$ yarn deploy
yarn deployはデフォルトで、loom_dapp_chainネットワークへデプロイを行う。このネットワークはあなたのローカルチェーンであり、デプロイメントに対してトークンが課されることはない。「 : 」を使用して異なるネットワークを指定することができるし、さらに有効なデプロイオプションのフルリストがpackage.jsonファイルにて利用可能である。
もし以下のデプロイメントを実行しようとすると、十分なKarmaトークンがないとエラーが出ることになる。これはextdevがPlasmaChainテストネットへデプロイを行うためであり、コードのデプロイを成功させるには前述のようにKarmaが必要となる。
$ yarn deploy:extdev
こちらのURLを開き: https://faucet.dappchains.com/
genkeyコマンドで保存した公開鍵を使用しよう。このフォーセットは、pub_keyファイル内のエンコードされたものではなく、Ethereumスタイルの16進数アドレスを探すことに気をつけたい。ステップ3でどこかに保存しておいた16進数アドレスをしっかり使うこと。
数秒後、‘faucet-karma: 100’ と右側に表示され、使用可能な100Karmaトークンを獲得したことを教えてくれる。
では今度はこれを実行すると:
$ yarn deploy:extdev
TruffleはSimpleStoreを(マイグレーションで定義されたその他全てのコントラクトも併せて)実行そしてデプロイし、それらがデプロイされた全アドレスを返却する。web3のextdev-plasma-us1.dappchains.com
エンドポイントを使用して、通常のチェーンを扱うようにこれらのコントラクトと対話することができる。
DAppのwebapp部分に以下を追加するだけだ:
var extdev = new Web3('extdev-plasma-us1.dappchains.com);
次の記事では、PlasmaChain上にERC721トークンを作成し、それをEthereumのRinkebyテストネットに移転する方法を取り上げていく。
Loom Network は、イーサリアムのハイスケーラブルなDPoSサイドチェーン構築のためのプラットフォームで、大規模ゲームやソーシャルアプリにフォーカスしています。
さらなる情報は こちらから.
あなたがブロックチェーンゲームのファンであれば、 Zombie Battlegroundをチェック!世界初・独自のブロックチェーン上でフルに稼働するPC & モバイルカードゲームです。
そしてもしこの記事をお楽しみいただけ、最新情報の受け取りをご希望であれば、私たちの プライベートメーリングリストへの登録や、Telegram、Twitter、GithubやQiitaのフォローをお願いします!
Thanks to Jacob Frey, Robert H, and James Martin Duffy. Some rights reserved