ビットコインウォレットの開発はどれがいいか
良いところ悪いところ上げておきます
■bitcoind + JSON-RPCを使った開発スタイル
bitcoindの持つ機能をAPIとして呼び出せる
pros
- ビットコインの仕様をあまりしらなくても開発ができるので楽
- json-rpcのライブラリは各言語に用意されている
- ビットコインウォレットの設定は設定ファイルで出来るから楽
- アルトコインもAPIはほとんど変わらない(Proof of StakeなどのコインでAPIが追加になっていたりするくらい)
cons
- 開発機にbitcoindをインストールする必要があるのでブロックチェーンの同期が大変
- ビットコインのRPCは負荷耐性が低いので負荷に弱い。本格的にやる場合はジョブキューなど併用
- 入金用ウォレットでもウォレット機能を使うので秘密鍵をもつ必要があり、セキュリティ的に危ない
- HDウォレットにできないので秘密鍵の管理が発行したビットコインのアドレス分管理しなくてはならない
■bitcoinjs-libを使った開発スタイル
ビットコインの機能を細分化しJSのライブラリとして実装されたもの
pros
- javascriptだけで完結するプログラミングができる(ブラウザで使える)
- アルトコインの追加が楽(最初からlitecoin、dogecoinのパラメータ有り)
- 入金用ウォレットに秘密鍵をもつ必要がない
- HDウォレットの実装ができる
- マルチシグの実装ができる
- 高度な実装ができる
cons
- 鍵の生成や署名の作成が遅い
- トランザクションを自分で作らないと行けないので大変
- おつりの管理とか考える必要がある
- 手数料の計算をしなくてはならない
- ビットコイン特有な攻撃対策を実装しなくてはならない
- ビジネスで使うにはどこかにブロックエクスプローラーを用意する必要がある(公共のものはリクエスト制限があったりする)
■bitcore-libを使った開発スタイル
ビットコインの機能を細分化しJSのライブラリとして実装されたもの
pros
- JSで高速に動くようにチューニングされている(それでも遅いことには変わりないけど)
- javascriptだけで完結するプログラミングができる(ブラウザで使える)
- 入金用ウォレットに秘密鍵をもつ必要がない
- HDウォレットの実装ができる
- マルチシグの実装ができる
- 高度な実装ができる
cons
- 素のライブラリでアルトコインの追加は想定されていないのでカスタマイズする必要がある
- トランザクションを自分で作らないと行けないので大変
- おつりの管理とか考える必要がある
- 手数料の計算をしなくてはならない
- ビットコイン特有な攻撃対策を実装しなくてはならない
- ビジネスで使うにはどこかにブロックエクスプローラーを用意する必要がある(公共のものはリクエスト制限があったりする)
■bitcoinj
javaで実装されたspvクライアントライブラリ
スタンドアローンで起動可能
pros
- javaだけで完結するプログラミングができる
- HDウォレットの実装ができる
- 高度な実装ができる
- SPVクライアントなのでブロックチェーン同期が速い
- bitcoindはどこかにつながればいいのでなくても良い
- フルマネージドなので実装が楽
cons
- 素のライブラリでアルトコインの追加は想定されていないのでカスタマイズする必要がある
- 独自にUTXOのウォレットデータベースを持っているので問題が起きたときに追いにくい
- 秘密鍵を保有しなければならない