
初心者が一からブロックチェーンを活用したアプリケーション(Dapps)を作る(①環境構築編)
よくわからないけどブロックチェーンは触っておきたい。。。ブロックチェーンを活用してサービスを開発したいけど知識がない。。。などといった方向けに、初心者(私)がDappsを作って行く過程で目にした知見や気になったことなどを順を追って書き連ねていくノートです。チュートリアルのように使ってもらえればと思います。
他の記事
第二回 コントラクト基礎編
第三回 コントラクト中級編
第四回 セキュリティ、ガスなど編
第五回 ERC721トークン、セキュリティ続き編
1. 環境構築
2018年7月現在、Dappsを作るのに利用できるブロックチェーンは複数あり、それぞれメリットデメリットがありますが(そのうちまとめた記事を書くかもしれません)、おそらく一番普及していて、一番ドキュメントなどがありそうなイーサリアムのブロックチェーンを利用してDappsをつくって行こうと思います。
目次
①手元のPCでイーサリアムのブロックチェーンを使用可能にする
②truffleをインストールする
③コントラクト作成用の作業スペースを用意する
④Truffleプロジェクトの新規作成
⑤開発用チェーンを動かしてみる
⑥開発用チェーンの状況を確認してみる
①手元のPCでイーサリアムのブロックチェーンを使用可能にする
手元のPCでイーサリアムのブロックチェーンを動かすのには有名なGeth(Go-ethereum)や、parityなどの多機能な(メインネットやテストネットにコントラクトをデプロイできる。メインネットなどの用語についてはそのうちまとめます)イーサリアムクライアントを使用する方法と、Truffleなどのスマートコントラクト作成用のフレームワークに付属したりする開発用ブロックチェーンを利用する方法があります。
今回は自動でマイニングしてくれて、ブロックチェーンの初期化の必要もないTruffle付属の開発用ブロックチェーン、Truffle developを使用していこうと思います。
②truffleをインストールする
truffleはnpmを使ってインストールします。入っていない人は各OSにあった方法でnpmをインストールしてください。
npmのインストール方法はここを参考に!
$ npm install -g truffle
npmでtruffleをインストールします。オプションは適宜読み替えてください。
③コントラクト作成用の作業スペースを用意する
$ mkdir mycontract
$ cd mycontract
④Truffleプロジェクトの新規作成
$ truffle init
このコマンドで下記のプロジェクト構造が構築されます。
contracts/:スマートコントラクトのディレクトリ
migrations/:デプロイするファイルのディレクトリ
test/:テストファイルのディレクトリ
truffle.js:truffleの設定ファイル
truffle-config.js:truffleの設定ファイルの雛形
⑤開発用チェーンを動かしてみる
$ truffle develop
.
.
.
truffle(develop)>
このコマンドを実行すると、初期状態で用意されている十個のアカウントのアドレスとその秘密鍵が表示されます。
この際表示されるアカウント情報はコマンドを実行するたび、毎回同じものが表示されます。
また、このコマンドを実行すると、truffleの対話型コンソールに入ることができコマンドラインの表示は『truffle(develop)>』のようになります。
⑥開発用チェーンの状況を確認してみる
truffle(develop)> web3.eth.accounts
[ '0x627306090abab3a6e1400e9345bc60c78a8bef57',
'0xf17f52151ebef6c7334fad080c5704d77216b732',
'0xc5fdf4076b8f3a5357c5e395ab970b5b54098fef',
'0x821aea9a577a9b44299b9c15c88cf3087f3b5544',
'0x0d1d4e623d10f9fba5db95830f7d3839406c6af2',
'0x2932b7a2355d6fecc4b5c0b6bd44cc31df247a2e',
'0x2191ef87e392377ec08e7c08eb105ef5448eced5',
'0x0f4f2ac550a1b4e2280d04c21cea7ebd822934b5',
'0x6330a553fc93768f612722bb8c2ec78ac90b3bbc',
'0x5aeda56215b167893e80b4fe645ba6d5bab767de' ]
上記のコマンドを実行すると、開発用チェーン上にあるアカウントのアドレス一覧が配列として表示されます。(0番目の要素が欲しければweb3.eth.accounts[0]のようにできます。)
truffle(develop)> web3.eth.getBalance(web3.eth.accounts[0])
BigNumber { s: 1, e: 20, c: [ 1000000 ] }
上記のコマンドを実行すると0番目のアカウントの所持するイーサリアムの量が確認できます。この場合0番目のアカウントは1000000weiイーサリアムを持っていることになります。(単位に気をつけてください。1weiは0.000000000000000001etherです。)
これでひとまず開発用ブロックチェーンの準備ができました。次回、実際にコントラクトを書いていきたいと思います。
初心者が一からブロックチェーンを利用したアプリケーション(Dapps)を作ってみる(②コントラクト基礎編)
また、書いているのは初心者のため、間違い、浅い理解などあるかもしれません。その場合はぜひ指摘してもらえればと思います。喜んで修正します。
参考にしたもの:
↑ゲーム感覚でスマートコントラクトの書き方が学べます。
↑ブロックチェーンで開発する際必要なことはだいたい網羅されていると思います。とても勉強になります。
この記事を書いた人:
株式会社Calano
インターン 島村大
学部4年生で大学では機械学習と数理最適化、CalanoではアプリやGCPなどを担当。最近ブロックチェーン始めました。