Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

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

■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のウォレットデータベースを持っているので問題が起きたときに追いにくい
  • 秘密鍵を保有しなければならない
you21979@github
なにごとも初心者です
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away