Simplified Payment Verification (SPV)とは何ですか?
Simplified Payment Verification (SPV)は、ウォレットがすべてのブロックや取引をダウンロードせずに支払いが正当であるかを確認する方法です。小さな要約と短い証明を参照して資金を確認します。店の台帳全体を読む代わりに領収書を確認するイメージです。
Simplified Payment Verification (SPV)は自分でノードを動かすのと同じ安全性を提供する、という誤解があります。そうではありません。支払い確認には強力ですが、一部の情報はピアに依存するため、フルなローカル検証とは同等ではありません。
Simplified Payment Verification (SPV)の仕組み
例えばカフェで待っている間に支払いを確認したいモバイルウォレットを想像してください。ウォレットはピアとやり取りし、ヘッダーの小さな要約を取得し、あなたの取引に結びつく短い証明を要求します。簡単な流れは次の通りです。
- ステップ1:ウォレットはピアに接続し、ブロックチェーンのヘッダーを要求します。
- ステップ2:次に、ウォレットはあなたの支払いがそのブロックのMerkle 証明で含まれていることを示すための証明を、Merkleツリーに対して要求します。
- ステップ3:ウォレットはその証明をヘッダーと照合し、その後に続いたブロック数を数えます。
- ステップ4:ピア間で意見が分かれる場合は、複数の情報源を比較し、最も多くの作業量を積んだヘッダーチェーンを優先します。
- ステップ5:確認数が設定に達したら、ウォレットは支払いを確定として扱います。
手順は短く、データは少量、応答は素早い。便利です。
Simplified Payment Verification (SPV)が重要な理由
注目する理由は次の通りです:
- 利点:モバイルのデータと時間を節約します。ほとんど帯域幅に負担をかけません。
- 比較:いくつかの検証を速度と引き換えにします。一方で、フルノードは最大限の独立性で重い処理を担います。
- 関連:モバイルウォレットやライトクライアント、日常の支払いで登場し、利便性が求められる場面で使われます。
多数のピアに接続するウォレットを使い、高額の取引ではいくつかの確認を待ちましょう。目が多ければ驚きは減ります。
Simplified Payment Verification (SPV)の主な特徴
特徴は次の通りです:
- 軽量:ヘッダーをダウンロードし、フルブロックはダウンロードしないため、起動が速く容量が小さいです。
- 証明:各ブロックに結びつくコンパクトなメンバーシップ証明を使用します。
- 信頼:完全なトランザクション検証を省略するため、大多数のマイナーが正直であることを前提とします。
- プライバシー:フィルタや工夫が使われない限り、ピアに関心を知られる可能性があります。
- 同期:ストレージを小さく保てるため、携帯や不安定なWiFiでの利用に向いています。
バリエーション
SPVにはいくつかの種類があります:
- クラシック:ヘッダーと取引ごとの証明をピアから要求します。
- Neutrino:コンパクトフィルタをダウンロードし、ウォレットが関心のあるブロックのみを取得できるようにして、プライバシーを高めます。
- ハイブリッド:フィルタと直接証明を組み合わせ、速度とプライバシーのバランスを取ります。
- ウォッチ:秘密鍵をオンラインに置かずに支払いを監視するモードです。
Simplified Payment Verification (SPV)は包含とその上の作業を証明するものであり、端末上のすべてのルールを検証するものではありません。独立性を最大化したい場合は、自分でフルノードを運用してください。
例
新しい街に着いてモバイルウォレットを開くと、最新のヘッダーを取得し、入金の証明を確認して、乗車サービスが到着する前に「確定」と表示されます。
豆知識
サトシはビットコイン論文でSPVの案を示しており、携帯端末向けのウォレットが一般的になるずっと前に、重いダウンロードなしで支払いを確認する軽量な方法として提案しました。
まとめ
こう考えてください。SPVはアーカイブ全体を持ち歩かずに領収書を信頼できるようにするので、スマートフォンが控えめで頼れる小さな銀行のように振る舞える理由です。
