search
LoginSignup
15
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

ビットコインウォレットの開発にはどれがいいか(JSON-RPC,bitcoinjs-lib,bitcore-lib)

ビットコインウォレットの開発はどれがいいか

良いところ悪いところ上げておきます

■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のウォレットデータベースを持っているので問題が起きたときに追いにくい
  • 秘密鍵を保有しなければならない

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
15
Help us understand the problem. What are the problem?