SPV walletの課題への解決アイディア

これはアイディアであり、なにか間違っている可能性が高い。

概要

spv wallet側の情報開示の必要なく、信頼できるfull nodeへの接続を選択できる方法。spv nodeは、full nodeの定める一定の手数料を支払う

備考:Simplified Payment Verification (SPV)

spvは、スマートフォンやタブレット、組み込みシステムなどの軽量デバイス上でblockchainを動作させるための仕組み
ブロックヘッダだけをダウンロードしトランザクション自体はダウンロードせず、必要に応じてfull nodeにrequestする形を取る

動機

spv walletは、自身の公開鍵hashに紐づくTransactionを、bloom filterを用いてfull nodeにリクエストして取得する

  • bloom filterを使ったTXの受信

bloom filterは、確率的探索フィルタであり、欲しいパターンを正確に特定しなくてもよい方法である。ただし、full nodeに一定量の個人情報を提供しているという特徴は残り、かつブロックの真偽性の検証ができない
悪意あるfull nodeが存在した場合に考えられる懸念は、下記がある

  1. Transaction monitoring(資金量の推測・購買動向把握等)
  2. Node間通信の盗聴
  3. Spv nodeへのdos攻撃
  4. 偽のblockの連携

過去には、SPVでもすべてのTransactionを受信し、不要データを自身のデバイス上で削除する形をとることで対策可能だったが、データサイズの肥大化により困難となった

仕様

service事業者が、SPV node向けにfull nodeを提供してインセンティブを得る方法となる
service事業者は一般的な所在を明かした組織であり、自身のフルノード情報を開示し、tranasction monitoring、spv nodeへのdos攻撃、意図的な偽のblockの連携を実施しないことを契約等により保証する
(現状は、SPV node向けにブロック情報を提供することに対するfull nodeのインセンティブは存在しない)

service事業者は、上記サービスを提供することのインセンティブとして、BTCの支払いを受け、それを持ってblockの提供を開始する

Bloom filterには公開鍵をセットすることが可能であり、それをBase 58 encodingすれば支払者の特定が可能であることから、この仕組みが成立する
SPV node側の提供する情報は送金情報のみであり、そのプライバシーレベルは維持できる言える

  • SPV nodeのTX受信のプロセス

  1. SPV node:Full nodeサービス事業者の定める手数料を送金する
  2. SPV node:自身の公開鍵をsetしたbloom filterを送信する
  3. Full node : 公開鍵をBase 58 encodingし、(ⅱ)で追加されたbloom filterのnodeから支払いを受け取っているか確認する
  4. SPV node : get data requestで、tx情報を要求する
  5. Full node : (ⅲ)のチェックに問題がない場合のみ、TX hashを返却する
  6. Full node : (ⅲ)のチェックに問題がない場合のみ、TXを返却する