EthereumにPHPから接続してみた その2
こんにちは、デジタルサイネージチームの吉田です。
先日、弊社はブロックチェーン関連でプレスリリースを発表いたしました。
今回は実証実験ですが、それ以外でもブロックチェーンのご相談が有りましたら是非ご連絡ください!
さて、本日は以前書いた以下の記事の続きになります。
前回は環境構築から始まり初歩的なAPI呼び出しまでを行いました。
今回はAPI周りをもう少し掘り下げていこうと思います。
<トピック>
1. 前回の補足
前回、geth の起動オプションの説明をしましたが、 --rpcapi の説明が抜けていました。
このオプションは API で受け付ける HTTP-RPC インターフェースの種類の指定となります。
インターフェース名はカンマ区切りで記述する必要があり、特に指定が無ければ "eth,net,web3" という設定とみなされます。
ちなみにこのオプションで指定できるインターフェースは admin, debug, eth, miner, net, personal, rpc, txpool, web3 になります。
前回の起動オプションでは以下の通り記述しており、標準のインターフェース以外に personal を使用するよう指定しています。
2. APIの種類について
先ほどの説明で少し触れましたが、APIにはいくつか種類があります。
大きくはインターフェースで分けられ、{インターフェース名}_{メソッド名}という形で定義されています。
各APIの説明は wiki を参考にしていただければと思いますが、インターフェースにより記載されているURLが異なるので注意が必要です。
web3, net, eth 系のインターフェースは https://github.com/ethereum/wiki/wiki/JSON-RPC に記載されています。
admin, debug, miner, personal, txpool 系のインターフェースは https://github.com/ethereum/go-ethereum/wiki/Management-APIs に記載されています。
3. PHPからの呼び出し
さて、APIの概要もわかったことなので、今回もAPI呼び出しをしてみましょう。
前回は eth 系を使ったので今回は Management-APIs の personal を利用してみます。
と、ここで前回利用した ethereum-php の ethereum.php のソースを覗いてみると、 Management-APIs 系の function が無いのに気付くと思います。
このままでは personal 系の API が利用出来ないので少しソースをいじってみましょう。
今回は personal インターフェースの newAccount メソッドと unlockAccount メソッドを利用してみたいので、以下の記述を追加します。
追加するのは Ethereum クラスの一番最後でいいでしょう。
※他のクラスの記述もあるので、記述場所を間違えないよう注意してください。
ちなみに personal_newAccount はアカウントの追加処理になります。
前回コンソールから使用しているのでなんとなくイメージはつくでしょうか?
もう1つの personal_unlockAccount はコインの送金等を行う前に必要な処理になります。
こちらに関しては次回以降で詳しく説明したいと思います。
それでは改めて API を実行していきましょう。
今回は test2.php というファイルに記述しました。
こちらを実行してみます。
はい、アカウントが作成され、アドレスが返ってきました。
せっかくなので前回作った eth_accounts を実行するスクリプトも叩いてみましょう。
こちらもアカウントが増えているのが確認できましたね。
4. 最後に
今回は少し短めでしたが、PHPからのAPI呼び出しに関しては理解が深まったのではないでしょうか?
とはいえまだまだ説明出来てない部分も有るので、次回は送金の辺りを説明したいと思います。
それではまた次回(おそらくビールネタで)お会いしましょう!
書いた人:デジタルサイネージチーム 吉田