ビットコインウォレット
ビットコインはブロックチェーンだけでは運営することはできません。
送信の指示を出したりビットコインアドレス内の枚数を管理するウォレットを使って、ユーザーにトランザクションを生成するための送受信を行ってもらう必要があります。
2009年にビットコインが誕生して以来、ビットコインのウォレットは仕組みやデザインの仕方によってタイプの異なるものが多く作られてきました。
ウォレットを動かすコンピュータはブロックチェーンネットワーク上で「ノード」と呼ばれ、送受信を行ってトランザクションを発生させたり、取引記録を管理したりとネットワーク上の役割を与えられます。
ノードの役割に応じてウォレットの仕組みが異なっており、導入に必要な時間や使われるディスク容量が異なります。
ユーザー視点から見る分類
Webウォレット
ブラウザ上で動作するWebウォレットはデバイスに負荷をかけないという点でとても気軽に用いられています。仮想通貨取引所のウォレットもWebウォレットと呼べます。
Webウォレットは常時インターネット上に存在しているため、パスワードや秘密鍵など重要な情報だけをオンライン上に保存しない形で作成されます。
しかし、暗号解読を行うようなハッカーからは標的にされやすく、サーバー側がウォレットの秘密鍵を保管しているので自己管理ができず、信頼性が低いと言われています。
Blockchain.info や Copay などが有名です。
デスクトップウォレット
Webウォレットとは別に、PC上にダウンロードして用いるデスクトップウォレットも存在します。
デスクトップウォレットの場合も、PCをインターネットに接続しているとハッキングの恐れはありますが、インターネットから切断する手段が生まれます。
ペーパーウォレット
アドレスや秘密鍵をオフラインで生成し、紙面上の情報として記録するペーパーウォレットを作成することも可能です。
インターネット上に情報を残さないでビットコインの管理を行うことができるのでハッキングリスクを大きく減らすことが可能です。
ハードウォレット
秘密鍵を表示させず、USBのような物理デバイス上の情報を用いてウォレットへのアクセス権限を管理します。
ペーパーウォレット同様、インターネット上に秘密鍵の情報を残さずにビットコインの管理を行うことができます。
Ledger nano や trazor などが有名です。
仕組みから見る分類
ビットコインウォレットの通信方法の仕組みから見ると、「完全クライアント」「SPVクライアント」「サーバー・クライアント型クライアント」の三種類に分類することができます。
名前 | 利用者 | セットアップ | 必要な容量 | 対応OS | 種類 |
Bitcoin-Qt | 一般 | 数時間以上 | 160GB | Windows, Mac, Linux | 完全クライアント型 |
bitcoind | プログラマー | 数時間以上 | 160GB | Windows, Linux | 完全クライアント型 |
Electrum | 一般 | 数分 | 数十MG | Windows, Mac, Linux | サーバー・クライアント型 |
MutiBit | 一般 | 数分 | 数十MG | Windows, Mac, Linux | SPVクライアント型 |
Bitcoin Wallet | 一般 | 数分 | 数十MG | Android, Blackberry | SPVクライアント型 |
完全クライアント型( MultiBit, Bitcoin Wallet)
Bitcoin-Qtやbitcoindなどの完全クライアント型ウォレットはビットコインブロックチェーン内の全てのデータを保存する仕組みのウォレットになっており、
Satoshi Nakamotoの考えるビットコインネットワークの理想論において”標準的”とされるウォレットです。
もし全てのウォレットが完全クライアントであれば、ネットワーク内の全員がブロックチェーン内の全ての取引記録を確認する事ができ、全てのユーザーが不正検知の役割を担う事ができます。
しかし、ビットコインの全ての取引履歴は既に150GBを超えており、全てをダウンロードするにはかなりの時間と相応の保存容量を持ったコンピュータが必要です。
現在の一般ユーザーのほとんどはコストのかかる完全クライアントのウォレットを使うことはないでしょう。
bitcoindはJSON-RPCで開発者向けAPIを提供しているので、Webウォレットのバックエンドやマイニングプールのサーバーとして使われる事があります。
以下のbitcodes.earn.comの画像では、2018年5月頃の全世界の完全クライアント型ウォレット(一般的にフルノードと呼ばれる)の分布を見る事ができます。
SPVクライアント型( MultiBit, Bitcoin Wallet)

ビットコインでは取引記録をマークル木構造で管理しているので、僅かなデータを用いて特定の取引がブロックに含まれるかどうかを検証することができます。
これを利用したSPV(Simplified Payment Verification)クライアント型ウォレットは、原則的に各ブロックのヘッダーのみをダウンロードします。
全データをダウンロードしないのでSPVクライアントは数十MBのデータをダウンロードすればよく、セットアップに要する時間も数分で済みます。
しかし、SPVクライアント型ウォレットが正しく動作するためには、信用できるフルノードの存在が不可欠となります。
サーバー・クライアント型(Electrum)

Elecrumはデスクトップに保存するウォレットですが、起動するとbitcoindを使って実装されたいくつかのElectrumサーバーを通して全ての情報を受け取るのでWebウォレットと似ています。
しかし、ユーザーが保管すべき秘密鍵さえもサーバー側が保管するような一般的なWebウォレットとは異なり、Electrumでは、秘密鍵を保有するのはウォレットを作成したユーザーに限られます。
[…] Copayなどのビットコインウォレットなどに良く用いられる技術で、一定数の秘密鍵情報が揃わないとビットコインにアクセスできないようにすることでセキュリティレベルを上げるケースが多くみられます。 […]