Boilerplateを使ったDapps(分散型アプリケーション)の作成(1)

Ethereumを用いて、非中央集権・分散型アプリケーション、いわゆる 「Dapps」 を作成してみます。
今回は、Meteorで作られたBoilerplate(SilentCicero/meteor-dapp-boilerplate)を用います。

到達目標

テンプレートにあるContractを書き換えて、独自のテストネット上にトランザクションを流し、マイニングにより承認されるまでの、一通りの流れを実装する

Meteorの簡単な紹介

  • Ycombinater出身のチームが開発している、JavaScript(Node.js)で超速にアプリケーションを開発できるというクールなフレームワーク
  • MongoDBが組み込まれている
  • サーバー/クライアント間のデータ連携がシームレスに行われる(ちょっと感動するレベル)
  • 簡素で柔軟なMVC
  • Blazeと呼ばれるテンプレートエンジンを採用
  • リアクティブ・プログラミング
  • 公式 : https://www.meteor.com/

Dappsとは

  • Decentralized Appsの略
  • 統一された明確な定義があるわけではないが、ざっくりとした表現だと「P2Pで中央機関が無く、プロトコルに従って自律的に運用されるWebアプリケーション」

その他にも前提となる知識

開発環境

  • Mac OSX : 10.11.4
  • geth, Node.js, Meteor等、必要なものは全てインストール済として進めていきます

gethをプライベートネットワークで起動する

まずはgethテストネットを起動します。

$ geth --networkid "10" --nodiscover --datadir "~/testnet" --genesis "/~/testnet/test.json" --unlock {アカウントNo} --rpc --rpcaddr "localhost" --rpcport "8545" --rpccorsdomain "*" console 2>> ~/testnet/test_err.log

コマンドラインオプションは geth help で参照可能です。
大事なポイントは、アカウントをunlockしておくこと、crosdomainのオプションをつけることくらいかと思います。

※ 参考(https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options)

templateをセットアップ

今回使わせていただくテンプレートをクローンしてきます。

$ git clone https://github.com/SilentCicero/meteor-dapp-boilerplate.git

必要十分なパッケージが既に入っているので、基本的にはライブラリとかはこのままでOK。 ※Include Packagesのリスト
ちなみにMeteorのライブラリは「Atmosphere」と呼ばれています。クールです。

立ち上げてみる

そして、まずはそのままMeteorを立ち上げてみます。

$ cd meteor-dapp-boilerplate/app
$ meteor

これで自動的に必要なパッケージのインストールが始まりローカルホストでサーバーが立ち上がります。 上手くいけば下記画像のようになるはず。

Screen Shot 2016-05-12 at 23.05.37.png

View1には、テストネットとの接続状況や、アカウントの情報、Ether残高などが記載されていると思います。
Miningされているかどうかも確認できます。


長くなったので、後半は第二回に続きます。