【備忘録】【ビットコイン】PHPでコマンド打てるようにしてみた
前回、BitcoinCoreを入れてみたのはいいものの、phpで関数呼び出しても結果が帰ってこないというところまでやったわけですが……
もうね……原因がさっぱりわからん
ビットコイン PHPで検索したら
BTC/PHPが出てくるんだもんよ
そんなわけでわかるところから調べるしかなかったわけですが
Bitcoin Coreで調べたら出てきたサイト
このサイト見るに、こっちが使用したい操作はbitcoin-cliなるものを使ってやってるっぽい
で、このbitcoin-cli
Bitcoin Coreをインストールしたフォルダにdaemonフォルダがあるわけですが、そのなかにbitcoin-cli.exeなるものがあるわけですよ
これはもうピンときましたね
cmd起動して該当フォルダに移動して
bitcoin-cli.exe getnetworkinfo
と入力してやれば情報が表示……されない!
それもそのはず、今回立ち上げてるのはtestnetなんで、ちゃんとtestnetにつないであげないといけない
bitcoin-cli.exe -testnet getnetworkinfo
というかんじで-testnetを追加したらうご……かない!
何やらnameとpassを設定してくれよーみたいな感じでエラーが出るんですが、いやいやbitcoin.confに書いたやん?
デモなんかよく見てみると前から出てきてたAppData下に用意してくれよ、みたいなのが書いてあった気がしたので行ってみたらフォルダができあがってたので、前に作ったbitcoin.confをコピペ
改めて試してみたら、ネットワークの情報が表示されました! やったね!
……で?
いやいや別にbitcoin-cliをたたきたかったわけじゃないですし……
ただまあこれでBitcoin Coreが正常に動いてるっぽいことは確認できました
しかしphpの方を動かしても帰ってくるのはfalseだけ……
利用してるライブラリが古いのか……?
というかそもそも、このソースコード、サンプルだと$bitcoin->getinfo()って関数呼び出してるけど、ファイルの中身見たらそんな関数ないじゃん?
__call関数があるだけじゃん
っていうか__call関数ってなんだよ?
と思って調べてみたら
どうもprotectedやらprivateやらの関数を呼び出すためのものらしい
いやprotectedもprivateもそもそも関数が何もないんですがそれは……
と、思いながらページの中を読んでたら……これあれか、メソッドを呼び出すんじゃなくて、呼び出そうとした関数の名前を取得できるのか……
で、その名前から判断して内部でメソッドを呼び出すよっていう仕組みなのね
じゃあ今使ってるeasybitcoin.phpの中身はどうなってんの?
と思って見てみたら……
メソッド名と引数がそのままリクエストパラメータに設定されて、testnetのアドレスに送信されていると
うーん……これだけ見るとちゃんと動くはずなんだけどな……
と思って、試しに$bitcoin->getbalance()と宣言して、残高撮ってみようと試してみたら……
返って来たよ!
これは……つまり……あれか?
環境が悪かったんじゃなくて、サンプルで使われてたgetinfoのコマンドがバージョンアップか何かで使えなくなったと……そういうことですか……?
もう……あれだ……
それに気づくまでめっちゃ時間かかったよ!
ツラタン過ぎる……