ビットコインP2Pネットワーク、全てのノード、SPVブルームブルームフィルタとノード:P2Pネットワーク - ビューのJavaブロック鎖実践シリーズ3の点から

ネットワークビットクレジット

ビットコインネットワークは、P2Pネットワーク、相互に異なるピア関係におけるネットワークノードであり、ノードのそれぞれは、異なる機能を有していてもよいです。ノードルーティング、データベース・ブロック・チェーン、鉱業、ウォレットサービス:合計は、4つの部分に分割されます。

4つの機能:ルーティングノード、ブロック連鎖データベース、マイニング、ウォレットサービス
4つの機能:ルーティングノード、ブロック連鎖データベース、マイニング、ウォレットサービス

 ノードルーティング:主に検証し、取引関係とブロック情報の普及を担当し、検索し、ピア・ノードとの接続を維持します。

ブロックチェーンデータベース:すべての外部参照から借用する必要なしに、これらのデータは、独立して、すべてのトランザクションを確認することができ、ブロックチェーンデータの完全かつ現在のコピーを保ちます。

マイニング:新しいブロックを作成するには、競合の方法でワークロードを実行することにより、アルゴリズム(実証の作業)証明;(私たちはコンセンサスで詳細ますPOWセクション)

ウォレットサービスは:鍵ペアの生成、署名取引、取引サービス放送に関連する、などの財布を提供し;(鍵署名と署名アルゴリズム我々はセクションの詳細について)。

私たちは通常、ビットコインネットワークは、P2Pプロトコルを実行している通信ネットワークを指すものと、実際には、ビットコインのネットワーク拡張は、他の特殊な業務委託契約が含まれていることを言います。他のノードの動作は、このような細胞鉱石階層プロトコルネットワーク、早期FIBER UDPベースリレーネットワークなどのプロトコルを接続するように多くの鉱物及びプロトコルゲートウェイ・サーバ・プールに接続されたP2Pネットワーク。

ノード、ゲートウェイとネットワーク・プロトコル拡張ビットクレジットの様々なタイプ
拡張ビットクレジットは、様々なネットワークノードタイプを表示し、プロトコルゲートウェイ

全ノード

このタイプのノードは、すべての完全なトランザクション・データ・ブロックのネットワークが含まれています。初期の一般的なブロックチェーンでは、すべてのノードは、すべてのノードであり、多くの場合、ビルドにコミュニティによって維持されています。フルノードが開始された後、最初に行うべきことの必要性が、最初にすべての、それは最後のピア接続ノードアクセスと相互作用し、その後、送信getblocksは最新を受け取るために要求し、ローカルのブロックデータを向上させることですブロックデータ。

ここではいくつかのノードが維持する、言及取引ピットを、トランザクション・キャッシュ・プールの役割は未確認の取引で、(チェーン・トランザクションプールを持つことになります最高の公共事業の一部を)ので、ユーザの財布ノードのクエリが受信されているが、まだ属し、確認されていないことユーザーの財布の事前支払い情報。いくつかのノードは、また、別個維持単離された取引プールのような親トランザクションを親の喪失に関連するトランザクションとして未知の入力トランザクションとトランザクションがまだパッケージ化されていない場合、単離されたトランザクションが一時的に格納されている単離されます、メッセージは、親トランザクションに到達するまで、プールでの取引。

 

全体のプロセスノードの同期ブロック
探索ブロックチェーンピアから完全なノード同期ブロック

 

SPV光ノード

「かんたん決済検証ノード」と呼ばれるSPV - 「簡体支払いの検証」、ノードと呼ばれた彼は、データの完全なブロックをダウンロードする必要がないため、光で保存されている、あなただけのダウンロードエリアのヘッダを必要とする、完全なブロック1000のサイズのみ、現在、2020年3月30日、完全なデータ・ブロック・サイズGB 314.40のよう

さて、問題について考えてみましょう、全体のノードがデータの完全なブロックに応じて過ごしたことUTXO確認することができ、その後、SPVは、どのようにトランザクションを確認する必要がありますか?

単にチェーンの中で、SPV取引を入れ深さではなく、トランザクションを検証するために、。

ブロック鎖の深さと高さとは何ですか?

高さは、ブロックの作成に新しいブロック間の距離です。

深さ、ブロック番号と、現在のブロック数ブロックの距離の合計と最新のやり取りに取引が6つのブロックの後に確認された場合には、ビットコインブロック確認番号6を、指し、基本的に不可逆的なので、また、二重の花の攻撃を回避することができます。このトランザクションでブロック後と6つのブロックを重ね合わせ、その深さに対応します。

ブロックチェーン内のブロック位置より深い、トランザクションはあまり変更されてもよいです。

例えば、完全なノードはトランザクションブロック番号300,000検討する必要があり、それはUTXOがあったこと、すべてが一緒にリンクされ30万から作成ブロック(ブロック1)に開始UTXOライブラリーを構築し、その後、確認しますUTXOの妥当性を検証するのにかかります。

その代わり、SPVはUTXO情報を使用し、それがマークル路ブロックとの間のリンクを確立しました。次いで、ブロックの高さまで待機にSPVノードがUTXOの有効性を証明する、後で6つのブロックを発生させる300006ブロックに到達するために、取るために使用することができます。ブロックは6回確認されているプロキシゲートウェイ・プロトコルによると、そのトランザクションは、二重賃金ではないことを証明しています。

SPVは、ブロック鎖のワークロードの証拠を実証し、検証することにより、リクエストによってマークルパスを取得しますトランザクションが本物でないかを決定するために(マイニングは確認してください)

大人の貿易の存在を証明することができますが、トランザクションがあるかどうかを証明することはできないものの、SPV の二重支払い攻撃、それはすべてのトランザクションのレコードがないので、。

ノードの少なくとも信頼性の高い接続の確率を高めるために、複数のランダムなピア・ノードを接続するために、このような脆弱性を、SPVの必要性を防止するため、しかし、SPVはまたに対して脆弱であることをこのノードが接続手段でネットワーク分割攻撃シビル魔女攻撃(この記事では、私たちは次のものを導入される連鎖攻撃をブロックするように関係します)

ほとんどの場合、優れたネットワーク接続が安全に十分SPVでいる、一般的にはSPVノードはトレードオフのリソース要件、実用性と安全性の間となっています。あなたは誰にでもセキュリティを確保する必要がある場合はもちろん、最も信頼性の高い方法は、完全なノードを実行することです。

プロセスにおけるSPVノードは、フィルタを設けられている図は、取得のgetheadersヘッダ領域に要求を送信することにより、SPVのノードを下げます。

SPVヘッダノード同期エリア
SPVヘッダノード同期エリア

 

SPVとピア・ノードgetheaders相互作用するので、それはまた、新しいプライバシーのリスクを作成して、アドレスのプライバシーへのSPVは、(後にプライバシー問題についての私達に)ブルームブルームフィルタによるリスク。

ブルームフィルタ

このチャネルの説明において「マスターは、クレジットビット」:ブルームフィルタは、ユーザが特定のキーワードの組み合わせを正確確率に基づく方法をフィルタリング発現する必要はない記述することを可能にすることです。これにより、ユーザーは効果的な検索キーワードと同時に、彼らのプライバシーを保護することができます。トランザクションのアドレスが露出されないながら、この方法は、ピア・ノードへの送信トランザクション情報問い合わせ要求に使用されるSPVノードで。

ブルームフィルタ作品

図1に示すように、我々は、ハッシュ関数の長さNとMは、アレイ内の各要素は、最初はゼロ1〜Nの間のMのハッシュ関数の結果の第1のアレイを有しています。ここでは、16ビットの配列と3つのハッシュ関数を実証します。

ブルームフィルタ
ブルームフィルタ構造

キーワードはそれぞれ、Mのハッシュ演算であるインデックス位置が0である場合、1が修正、または変更されていない2は、キーワードを追加するプロセスは、インデックスの結果は、Nはアレイに提供されます。キーワードを追加: "A"。

キーワードを追加:「A」
キーワードを追加:「A」

 

キーワードBを追加
キーワードを追加:「B」

フィルタ内の検証鍵は、それがMのキーワードハッシュの計算結果から遠く離れている場合、対応するビットが1に、すべての場合にキーワードが設定されている場合は3は、それぞれ、配列Nは、確認し存在し、またはキーワードが存在しません。次に、我々は、キーワードを追加していく:「B」。

 

キーワード「X」は、すでにブルームフィルタに存在することを確認します
キーワード「X」は、すでにブルームフィルタに存在することを確認します

図4は、アレイ全体が0に設定され、この設計に基づいて、ブルームフィルタの誤り率が非常に高くなります。それにもかかわらず、それはまだでブルームフィルタをカバーすることはできませんスペース利用およびクエリ時間データとデータクエリの挿入時間の複雑さの優れた点は、O(M)です。SPVノードブルームフィルタは、ビットコインを使用し、イーサネットスクエア契約はまた、このようなログを見つけるために標的としての用途を有します。

SPVブルームフィルタは、どのようにそれを使用するには?

(ブロック情報を含む)他のノードから受信した取引にブルームフィルタを伝える主に(アドレスを含む、鍵、ハッシュ)ノード鍵を介してSPV。次の我々の詳細全体のプロセス:

図1は、SPVのノードは、「空」と「フィルタ」フィルタは、すべてが利用可能でフィルタリングする場合は、それが空に初期化します。

2、リストのすべてのアドレス、およびハッシュキーのSPVの財布。

図3に示すように、この情報は、これらのキーワードに基づいて取引ブルームフィルタ後のブルームフィルタ、フィルタの意志にキーワードとして追加されます。

4、にSPVノードピアノードは、負荷への要求がブルームフィルタfilteradd送信し、その後、所望の函取引を得るためにメッセージを送信します。

5、ピアごとの着信トランザクション用ブルームフィルタに基づいてフィルタリング、コンテンツマッチングは、以下が挙げられる:トランザクションIDを、ブルームは、公開鍵ハッシュ、スクリプト、OP_RETURN値、公開鍵の署名、インテリジェント又は複合契約をフィルタリングすることができスクリプトの将来成分(署名セクションのスクリプトを詳細に説明します)。

6、を含む要求函に応答してピアノード、:メッセージ関連merkleblock送信トランザクション情報、メッセージは、マッチドフィルタブロックとヘッダ領域の(次のセクションで説明)各マッチング取引マークルパスを含みます。

7は、SPVのノードが応答メッセージを受信し、ローカル財布の残高およびUTXOセットが更新され、その後、プロセスを繰り返す前に、ブルームフィルタを修正します。

SPVのプライバシーの問題

プライバシーを確​​保するために、SPVは、アドレス情報は、通常のキーとして部分アドレス情報と、フルブルームフィルタを教えてくれありません。さらに、我々はまた、次の方法でプライバシーSPVノードを保証することができます。

1、暗号化された接続認証:Torのタマネギネットワーク伝送。生徒が理解していればダークネットはすぐにここでは、次のように簡単な紹介を理解することがあります。Torの匿名ネットワークは多層プロキシの方法、およびランダム追跡できないオンラインのプライバシーであることを確実にするためであり、暗号化とデータパッケージを提供していますが、プロキシサーバーの転送を追跡したい場合は、実サーバを要求する複数のプロキシサーバの層を分割する必要があります、亀裂の難し大きいです。

2、暗号化された接続認証:認証と暗号化などが挙げられます。クレジットは、我々はできる、BIP-151に従って確立された2つの暗号化通信ノード、認証要件の前にBIP-150、P2P支援の認証と暗号化のビットBIP-151クレジットの洗練のビットBIP-150と2種類の増加しましたこれら二つの提案にSPVのプライバシー保護を強化します。

概要

このセクションでは、フルノードが格納完全なデータ、すべてのノードを導入した後、ノードSPVは、詳細な、ビットコインP2Pネットワークの概念を導入し、SPVは、部分的にのみ保存されたヘッダデータブロック領域をノードSPVノードとある程度非常に安全ではない、交換する一般2+別のノードを使用せずに、フルノード。最後に、我々はあなたがチェーン「チェーン」をブロックします知識の概念は一定の理解を持って、それを通してアプリケーションとソリューションSPVのプライバシーの問題ブルームフィルタを導入します。

あなたはこの記事ではどんな欠点を持っていると考えられる場合は、コメントへようこそ!私は完璧であるために最善を尽くします〜

 

参考文献:

「マスタリングビットコインSecond Editionの」

 

公開された21元の記事 ウォン称賛11 ビュー20000 +

おすすめ

転載: blog.csdn.net/weixin_38652136/article/details/105198046