無料で仮想通貨を配るBitcoinFaucetを試行錯誤しながら作るよ

BitcoinFaucet開発

どうも、最近は仮想通貨の話ばっかりの本サイトですが、今回からBitcoinFaucetというWebサービス形態を開発していく様をシリーズ物として書いていきます。正直完成できるかわかりませんし、片手間作業になるため更新速度は遅めになります。それでも一生懸命開発していくのでよかったら読んでいってください。

初回となる今回は、作業環境の構築とビットコインを扱うためのHello World的な作業をやっていこうと思います。



OS : Ubuntu 16.04 LTS
VPS : ConoHa


0. BitcoinFaucetとは

本記事のメイン部分に入る前に”Bitcoin Faucet”というサービス形態について簡単に説明しておこうと思います。”Faucet”とは”蛇口”という意味がある単語で、”Bitcoin Faucet”とはその名の通り”Bitcoinが蛇口の水のように恵んでくれる”サービス形態です。基本的には数分から数時間に一度、Faucetのページに訪問(&請求)すると小額のビットコインが無料でもらえるという機能を持っています。サイトによってはデイリーボーナスがつくものや、もらったコインを元手にギャンブルで増やすことができる機能なんかを提供しているものもあります。イメージとしてはいわゆるポイントサイトと呼ばれているもののビットコイン版と思ってくれれば大丈夫かと思います。

自分はこれまで色々なFaucetを試してきました。その記録は本サイトの記事として書いたことがあるので、興味のある方は読んでみてください。世の中には本サイトでは紹介しきれないほどのFaucetが無数に存在しています。それは主観で数千個あるのではないかと思うほどです。なぜそんなにたくさんのFaucetがあるのかというと、実はFaucetのテンプレートが提供されているため、多少知識があれば誰でも簡単に作ることができるからです。ですがテンプレートを使っては面白くないので、今回はテンプレートを使わないことを方針に頑張っていこうと思います。

もしお手軽にFaucetを開設したいという方がいらっしゃったら、FaucetSystemさんなんかを使ってみればいいと思います(未検証)。

1. 作業者の実力

今回のシリーズにおける作業者……つまりは本記事の筆者なんですが……の実力はズバリゴミレベルです。一応PHPの基本構文を元にWebサービスを開発した経験はあります。しかし仮想通貨については、ネット上の記事を読んだ程度です。そのため仮想通貨の用語については理解をしているつもりですが、サービス開発となるとなかなか不十分というのが現状です。本シリーズでは仮想通貨についての勉強と並行してFaucetを開発を行なうことで、自分の仮想通貨レベルを向上させたいなというのがモチベーションです。

もし間違っていることがあったら、ご指摘いただけると幸いです。

2. 環境構築

では、作業を始めていきます。今回はBitcoinサービスのHelloWorldらしい、”bitcoind”のセットアップをやっていきます。”bitcoind”はRCPでビットコインの処理を実行するために作られたプログラムらしいです(勉強不足)。これを使うことでWalletの残高確認や送金処理なんかを行うことができるようになります。

では早速インストールしていきましょう。今回の作業はConoHaさんのVPSをレンタルして作業を行いました。ちなみにOSはUbuntuで1GBプランです。今後VPSやプランは必要に応じて変えていこうと思いますが、とりあえずはこれでやっていきます。ちなみに、検索するとUbuntuで作業している人が多いのでUbuntuで環境構築した方が情報が多いかと思います。

bitcoindは以下のコマンドを使って、リポジトリを追加してインストールすることができます。

インストールが完了したら、以下のコマンドを実行して”Not found”的なエラーがでなければインストールは完了です。ちなみに”-daemon”のオプションでデーモンにしているので、これを外せば普通に実行できます。

さて、このbitcoindを実行していると裏ではブロックの同期が行われています。これは全てのBitcoin取引を記録したもので、これがBitcoinがお金として成り立っている”信頼”の証でもあります。これが全てダウンロードし終わると晴れて環境が整ったということになります。現在ダウンロードし終わっているブロック数は以下のコマンドで確認することができます。

これで表示される数値がこちらのWebサイトで表示される数値と同じになれば同期完了です。しかし、これは本番環境であるため単にテストを行うだけなら本番環境と同期させる必要はありません。そもそも、今回の契約したConoHaの1GBプラン(SSD:50GB)だと容量的にブロックのダウンロードすらできません。それを踏まえまして、Bitcoindの設定ファイルを書いていきます。好きなテキストエディタでbitcoin.confを作成して編集してください。

内容はとりあえずこんな感じになるかと思います。

こちらに書くことができる項目はこちらのBitcoinWiki(英語)を参考にしてみてください。とりあえずこれで、テスト環境の構築は完了です。

3. PHPからbitcoindを使う

さて、単純にBitcoinをいじりたいならおしまいなのですが、今回はWebサービスに将来的に昇華させたいため、PHPからbitcoindをいじれるようにします。”いじれるように”と言ってもライブラリが提供されているので、それを呼び出して使うだけです。今回は有志の方が開発してくださったEasyBitcoin-PHPを使っていきます。このディレクトリの”easybitcoin.php”をダウンロードするなりコピペするなりしてWebサーバーのディレクトリに配置してください。

ちなみに今回、まっさらなUbuntuで作業を開始したためWeb環境が整っていませんでした。そこで”tasksel”コマンドを使ってLAMP環境を整えました。こちらのコマンドについては以前記事を書いているのでそちらを参考にしてください。

配置したら以下のPHPファイルを作成して、ちゃんと動作しているのを確認してみてください。

これで、”false”と表示されなければ大丈夫です。”false”とでちゃった場合はどこかが間違っているので、再確認してみてください。ちなみに”bitcoind”は起動した状態にしておいてください。もし500エラーなんかが出ていたらログを確認してみてください。おそらくログは”/var/log/apache2/error_log”にあると思います。今回の自分の環境では”Call to undefined function curl_init()”と言われたので、以下のコマンドで対応しました。 バージョンはご自身の環境に合わせて書き換えてください。

とりあえず今回の作業はここまでです。

おわりに

さて今回はとりあえず下準備の下準備が終わった感じかと思います。次回はテスト用のコインを使って送金する仕組みを確認するか、ページのフロント部分を作っていこうかなと思います。あとは自分が逃げ出さないようにドメインでも取ってしまおうかなと思います。
とりあえずは、こちらがよくまとまっているみたいなので、これを参考にしていこうと思います。

2017-08-24BitcoinFaucet開発