CodeLab技術ブログ

プログラミング技術まとめ

bitcoin-cliによるbitcoin決済の実験 その1

ふと、bitcoinの決済ってどうやるんだろうと疑問に思ったのでちょっと調べてみました。

テンポなりECサイトなりで実運用で使う場合は、決済会社のAPIを使ってやるんだろうし、どうせその場で円に変換するはずなのでその方が良いかと思います。
でもまぁそれじゃつまらないので、もっとローレベルなところからやってみようかなといったところです。
要はbitcoinのウォレットを実装して自由にいじれればよいわけですが、それはさすがに難しい。

こちらのサイトにrubyで作った実装例があります。

Bitcoinウォレットを実装する
http://bitcoin.peryaudo.org/implement.html

見たところそんな難しいものではなさそうな雰囲気ではあるのですが、専門用語もあるのでわかったようなわからないようなということでさすがにそこまでやるのは厳しそう。

ということで今回は、本家のbitcoin-coreが提供するAPIをコマンド経由で試してみます。

インストール

gitからアプリを落としてビルド&インストールします。
詳しくはこの辺りを参考にすればよいでしょう。
https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.md


% git clone https://github.com/bitcoin/bitcoin.git
% cd bitcoin
% ./autogen.sh
% ./configure
% make
% make check
% make install

結構いろいろライブラリを使いますので、都度メッセージを見て必要なライブラリをインストールしましょう。
configureコマンドでライブラリのチェックが入るので、出てきたエラーメッセージをもとに、yum search (ライブラリ名) で探しながら入れるとよいでしょう。
ビルドに必要なので hogehoge-devel といった感じの開発用のライブラリも入れる必要があります。

どうしても回避できなかったエラー
configure: error: Found Berkeley DB other than 4.8, required for portable wallets
Berkeley DBが必要なようだが、デフォルトでインストール可能なバージョンが4.7だったのでとりあえず、
./configure --with-incompatible-bdb
オプションで回避してみました。

~/.bitcoin/bitcoin.conf

rpcuser=test
rpcpassword=password
HOST=localhost
server=1
txindex=1
rpcport=18332
testnet=3

テストの場合は
rpcport=18332
testnet=3
本番ではrpcport=8332にしてtestnetの行は消す

コマンドラインでの操作は、テスト環境の場合は-testnetを付加して起動する。

起動
$bitcoind -testnet -damon
デーモンを起動してブロックチェーン同期が始まります。
かなりの時間がかかります。

動作確認
$bitcoin-cli -testnet -getinfo
[
–略–
“blocks”: 485686,
–略–
]
こんな感じのデータが返ってきますが、blocksが読みこみ済みのデータ数です。

という感じで一応動き始めたのですが、ここで問題発生。
ブロックチェーンのダウンロードでディスクフルになってしまいました。
かなりの容量を食うので空き容量を確認してインストールしたほうがよさそうです。

ということで今回はいったんここまでで、空き容量があるサーバーで再度試してみたいと思います。

コメントは受け付けていません。