【備忘録】【ビットコイン】PHPで送金したくて調べてみた
前回、PHPでコマンド打てるようになったよ! やったね!
というところまでやったわけですが、肝心のコマンドって何があるの?
というお話
そんなわけでちょっと調べてみたら
こんなサイトを発見
ここに乗ってる分のコマンドが使えるわけね……よしじゃあ試してみよう!
って思うじゃん?
実行したらメソッドがありませんって怒られるんですよ……
もちろん全部じゃなくて物によっては、なわけですが
要はここに乗ってる情報古いんじゃね?と
そんなわけでまた検索
で、検索をかけてみたらリリスノートっぽいものにメソッドが変わったよ
みたいな感じで書いてあったのを発見
今まで使ってたのが使えなくなったんだ……というのはわかったんですが、じゃあ結局いま何が使えるんだよ?と
同じサイトにあるDEVELOPMENTからRPC DOCSを選んでバージョン0.20を選んだら右側にメニューが出てきて、使えるっポイコマンドが一覧で見られるようになってました
そんなわけで、とりあえずこれでコマンドは打てるように
そんなわけで早速テストをすることに
まずはテスト用のコインがないと話にならんな……ってことで上のサイトからゲット
計算式の答えを入力して、アドレスはgetnewadressコマンドを実行してそこに送金してもらうことに
そんなわけでまず一番最初にテストするのはやっぱり送金だよね
ってことで、sendtoaddressコマンドを実行
phpで書く場合は引数にアドレスと通貨量がいるみたいなんで
$bitcoin->sendtoaddress("アドレス" 通貨量);
としました
で、実行したら無事送金できました!
とはなりませんね、はい
もうね……毎度まともに実行できるとは最初から思ってないですわ……
今回のエラー原因はパスフレーズを入力してください、みたいな感じで出ました
パスフレーズはBitcoin Core起動したときに表示されてるウォレットのパスフレーズのことなんでしょうが……
起動直後にデフォルトウォレットが設定されてます
さっきのテスト用のコインもここに送金されています
さて、ここで問題です
Q:デフォルトウォレットのパスフレーズは何でしょう?
A:わかりません!
……いやこれ、もしかしたらインストールしたときにパスフレーズとか入力したのかもしれないけど、全く記憶にない……
なんせインストールした後動かないってことでいろいろ調べまわってたし……
デフォルトのウォレットだからパスフレーズも共通というか簡単なの設定されてるんじゃ?とか思ったけど調べても出てこない……いったいどうすればいいんだ……
まあ結論から言うとどうにもならんので、新しいウォレットを作ることに
ウォレットはBitcoinCoreの方で簡単に作れるので、名前をtestにして作成
テストコインをもう一度貰って今度こそ実行だ!
ってことで実行したら、今度は送金とかパスフレーズ以前のエラーが
どうもウォレットを二つ以上開いているときは、どっちのウォレットを使うかちゃんとしていしろ、と怒られる模様
いやどうやって指定したらいいんだよ……と、言いたいところですが、今回はご丁寧に/wallet/ uriという風にしていしろと書いていてくれたので助かりました
ところでこれ、easybitcoin.phpで用意されてるクラスのどこに指定したらいいんですかね……?
となってまたソースコードを見ることに
そしたらコンストラクタに$urlの引数が用意されてるのを発見
__call関数の中を見たら、そこで設定された$urlがリクエスト先のアドレスの末尾に追加されてるのを確認したので
$bitcoin = new Bitcoin('ユーザ名", 'パスワード','localhost','18332','wallet/test');
こんな感じで書くと無事実行できました
できたんですが……このまま実行したところでパスフレーズを要求されることは変わらず
ウォレットの方にパスフレーズを設定してあるんですが、その設定してあるパスフレーズをどうやって入力するの? 引数にそんなのないよ?
ということでまた困ることに……
で、ドキュメントを見てたらwalletpassphraseというコマンドがあるのを発見
どうやらこれでパスフレーズを設定できるっポイ
$bitcoin->walletpassphrase("ウォレットのパスフレーズ", 60);
$bitcoin->sendtoaddress("送金先アドレス", 贈る通貨量);
そんなわけで、これで無事送金できました
ここまで長かった……これでまあここまで調べれば後はもう楽ちんだろ……
って思うじゃん?
残高調べるのにちょっと困ったことになったんだよなあー困るなー
状態なんで、まだまだ調べることはありそうです……