はじめに

gethを起動してプライベートネットワークでRemixを利用しコントラクトを実行の記事でweb3.jsについて何度か触れる機会がありましたが、今回はweb3.jsを紹介します。
web3.jsの概要、web3.jsのインストール及び利用を行なっていきます。
web3.jsとは

web3.jsとはEthereumブロックチェーン上のノードとローカルとの通信を可能にしているJavaScriptのライブラリです。通信はHTTPやIPCを利用しています。
web3.jsはgethを毎回起動せずにコントラクトを実行することが出来ます。
web3.jsを利用しない場合、毎回gethを起動しSolidiityで記述されたコントラクトを実行しなくてはいけません。これは日常的に利用されるアプリケーション等でコントラクトを利用することを想定すると非常に不便です。
web3.jsはこのような問題を解決することが出来ます。
web3.jsインストール
これからまず、web3.jsをインストールします。任意のディレクトリを作成し、インストールします。以下を参考にし、web3.jsのインストールを試して見てください。
~ example$ mkdir web3_js ~ example$ cd web3_js web3_js example$ npm install web3@0.20.0
ウェブソケットを開いた状態でgethを起動
以下のコマンドでgethを起動させます。
ディレクトリはテストネットワークでGethを起動させる方法などで利用したtestnet_blockを利用します。
geth --networkid 11112 --dev --datadir /Users/user_name/testnet_block --ws --wsorigins "*" --wsapi "admin,db,eth,debug,miner,net,ssh,txpool,personal,web3" --rpcapi "admin,db,eth,debug,miner,net,ssh,txpool,personal,web3" console 2>> /Users/user_name/testnet_block/geth.log
上で利用されているコマンドの意味を知りたい方はCmmand+Tで別の画面を開き、
$geth --h
あるいは
$geth --help
のいずれかを試して見てください。コマンドの説明は英語で記述されています。
いくつか今回gethの起動時に利用したコマンドを紹介します。
–ws : WS-RPCサーバを利用できるようにするコマンドです。APIを受け取り可能にするためにウェブソケットを開いています。
–wsorigins “*”:APIをどこからでも受け付けることを可能にするコマンド。
–wsapi “~”:WS-RPCインタフェースで利用するAPIを指定するコマンド
web3.jsを通してgethからリファルンス受け取り
起動したgethは外部からのAPIを受け付けることができる環境となりました。
web3.jsをインストールする際に作成したフォルダにnode_modulesがあります。そのフォルダを覗くと、web3.jsに関連するファイルがあります。
では、test.jsを作成していきます。任意で作成したディレクトリ直下で以下の内容を持っているtest.jsを自ら作成してください。
var web3_test = require('web3-eth'); var eth_test = new Web3Eth('ws://localhost:8546'); web3_test.eth_test.getCoinbase(console.log)
これでgethからのリファレンスを受け取ることが出来ます。 そして、違うコンソール画面を開いて、
$node
を実行してください。
> var web3_test = require('Web3'); > var web3_test = new Web3(Web3.givenProvider || 'ws://some.local-or-remote.node:8546'); > web3_test.eth_test.accounts
順番通り、実行していくと様々な情報がコンソール画面に表示されます。
まとめ

いかがでしたでしょうか?今後Ethereumで開発を進めるとweb3.jsを利用する機会が増えると思います。うまく使いこなせられるように頑張りましょう。