ブロックチェーン注:ビットコインのバックボーン、ネットワークのノード、ビジネス・トランザクション・データ構造、UTXO、ブロックコンテンツ、鉱業原則、結果整合性、SPV

バックボーンビットコイン

  • 私たちは、より具体的な説明に通貨ビットブロック鎖の角度に立ちます
  • これは、技術のクラスのための唯一のブロック鎖の一般的な用語であり、かつ信用の使用は、最初の一般的なアプリケーションを開発したビットブロックチェーンの技術であります
  • したがって、ビットコインから始まる技術ブロックチェーンの我々の知識は必要な方法です
  • まず、ビットコインのバックボーンが何であるかを、見て?
    • まず、ビットコインブロックチェーンがネットワークシステムである、それのバックボーンは何ですか?それは、また、主要なチェーンでのフルバージョンまたは当社のソフトウェアシステムの本番環境と同等です
    • 場合の処理​​ブロック鎖形成においてだけでなく、一本鎖、実際にはいくつかの点ため
    • まず、最初のものは、そのようなビットコインのコミュニティとしてのコンセプトテストのチェーン、我々はその後、テストネットワーク、ソフトウェアのテスト版と同等の、その中にテストネットワークを提供して、我々はすべての操作を行うことができますが、ない何資産心配です損失やその他の問題
    • テストネットワークに関して主鎖のテストバージョンがあります
    • 第二のケースでは、ブロックのチェーン(パック間の競争の過程)を形成する工程では、作業領域を強化することが実証されている硬貨によってビットので、ブロックを満たすことがより困難に表示されますパッケージ右側のブロック
    • だから、ネットワーク全体のために競争する権利、および無メカニズムを梱包する過程でのみ同時にノードで定義することができ、複数のノードが右のパッケージを取得することが可能です
    • まあ、それのためのこの時間は、複数のノードが、ブロックの難易度に合わせて、より生じることがあります
    • 示されているような方法ので、その過程で、このような分岐を生成するために、実際に可能です
    • ビットコインの内部には、どんなに分岐農産物の種類を(一時的に途中で分岐を生成する)、常に主鎖として最大の困難チェーンそれと
    • 主鎖内部だから、ビットコインは、チェーンがビットコインネットワークで真に効果的であるビットコインのバックボーン、データリンクであることが最も困難を維持するために、公式のネットワークを指し、
    • 実際には、これは我々はそれが、この過程で、それが可能である伝統的な集中管理サーバーとは異なり、このようなデータの保存は、非常に明確であるように、合意のためにこのような特定のストレージ構造とメカニズムだ、ブロック鎖の内部に見ることができますこれは、これらのデータの分岐部の一部のコピーを持っています
    • そのため、全体ブロックチェーン・ネットワーク、真に効果的なデータは、多くの場合、それ以降のブロックを確認するために通過するどのようなデータを必要としています
    • いわゆる最大の難点は、チェーンでは、チェーンのその後の確認でブロックを維持することですが難しい最大の鉱山であるので、これは実際には基準(プロトコル)の一つであります
    • もちろん、それは他のすべてのブロックチェーンシステムではこのような行為ではない、これは例えばビットコインにあり、それは、その機能の一つです。

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

  • ビットコインはそれをノードとは何ですか?ソフトウェアの観点を立ち、それが実際にノードのセットでプログラムを指します。
    • 完全节点 英語は、このノード上で、それはすべての機能が含まれており、ブロック鎖のデータ・ブックビットコイン、主要ビットコインネットワークサポートで、または最も重要なサポートである「フル・ノード」と呼ばれます。
    • フルノードに加えて、それぞれの特別な独自の機能を持つ他のノードのような、ストリッピング
      • 専用挖矿的节点(のみマイニング機能を保持しています)
      • 网络路由节点異なるノード間の収束P2P通信のために、それは、データをルーティングするための主原因であります
      • 钱包それは一緒に仕事への完全なノードと財布の一種である場合はもちろん、財布の全ノードの財布と呼ばれる、本当に実際のノードではなく、また状況を指し
      • いくつかの軽量財布(Web版、モバイル財布などの他の形態が)、これは実際にはより多くの財布がクライアントに属している場合、それは実際の移転支出にフルノードが通信を維持することができます。
  • 私たちは多くの種類に分かれているノードのネットワーク内のビット通貨ノード、でそれを見ることができます
  • 私たちは、ノードを統合されていること、一緒に展開時に統合され、これらの機能のすべてを置くことができます
  • ネットワーク内のビットノードがポイントネットワーク通信にノード点によって構成されるクレジットの数を必要とします

取引トランザクションデータ構造

  • 機能ビットコインは、それが銀行や、A系(システム)の転送のような類似の取引を達成するために、主に非常に簡単です
  • それは、転送トランザクションの実現であるので、まあ、貿易取引があり、最終的に取引事項は、どのようなデータ構造のでしょうか?
    • 実際には、主に2つの部分から構成されている:最初の部分が呼び出され输入交易、後半呼ば输出交易
    • 我々は、以前の対応するハッシュ値を超える入力される主要入力のハッシュ値を含む、入力トランザクションで見て、(検証手順のための)スクリプト入力することができ
    • 出力の取引条件、最初は(回転数)転送の値、および(いくつかの検証手順のための)スクリプトの出力が含まれてい
    • 私達はちょうど検証スクリプトに含まれている合計を、ターンではなく、正確に銀行などのように、いわゆる取引事項を見ることができるので、入力と出力のスクリプトを使用してbitcoinsの試合の所有権を変換するように決定することができます
    • 同時に、前回の取引リンク情勢、実際には、単に倉庫事業内の記憶にあるように、ライブラリー、ストレージへのライブラリ必見の対応、そのようなリンクのそのような鎖形成があります
    • 私たちは、以前のトランザクションデータを指し、それは、このハッシュ値を介してリンクさせることもあり、また、このようなチェーンを形成し、物事の間の取引を阻止するだけでなく、間のこのようなリンクの形成を見ることができます
    • これは、取引ビットコイン物事の基本構造であります

UTXOについて

  • より具体的な業務トランザクションで見てみましょう - UTXO:Unspendトランザクション出力(未使用トランザクション出力)
  • 以下の最初の例では、トランザクションに対応するトランザクションは、二つの部分の出力からの入力を発生させます
  • Coinbase業務をマイニングシステムの報酬によって生成されたものと同等ではなく、他の誰かによってターンオーバー、我々はそれがアリスに12.5ビットコインアドレスを出力することがわかります
  • 私たちは、取引番号002を見て次の取引事項の第2条で、これは通常の転送トランザクションで、それはボブのアドレスに移動、アリスのアドレスから回すようになりました
  • 入力では、実際に(入力後を持つために、出力の前になければならない)出力が入力と出力との関係が対応するリンクである理由である001トランザクション番号を指しています
  • 彼女は自分自身の変化6.5を与えるので、これにより、入力と出力の間に新たな関係を形成し、ボブに、この転送6をアリスはボブ転送に、彼女は6になって、アリスの採掘報酬は12.5です。
  • アリスが懸念されるため、得られた12.5ビットコインマイニング報酬によってトランザクション番号001内部はそれがバランスコスト、に使用することができることであり、UTXOいわゆる未使用トランザクション出力、
  • 我々は、未使用残高として見UTXOを置くことができますが、それは、このようなAの数のバランスの概要が、そのような取引の取引(出力取引)ではありませんので、
  • 私たちは、6ビットコインを獲得し、その後、ボブはまた、自分自身を見つけるために、我々はボブがリリーに2 bitcoinsをオンに見ることができ、ユリ、取引番号003の内側への転送もボブの002年間で見てきましたゼロ4
  • 私たちは、エンドツーエンドの接続数001002003取引は、完全な入力と出力、入力および出力リンクように継続し、すべての出力で、あなた自身の時間の入力に使用することができる含まれていることがわかりますまたUTXOとして知られている値は、
  • しかし、それは今も倉庫保管ライブラリ内の概念に非常に似て、それは対照的に理解することができます

コンテンツブロックが含まれています

1)ブロック本体ビットコインのヘッダ領域

  • ビットクレジットに含まれるコンテンツブロックが非常に簡単である:それは、ヘッダ領域とブロックからなるボディであります
  • ブロックでは先に6つの主要なフィールドが含まれています。
    • 区块版本:バージョン番号、現在のプロトコルとデータ構造であり、
    • 前一个区块哈希フロントへのリンクを生成するために前のブロック内のハッシュブロック
    • 时间戳:このブロックが発生した時間を指します
    • 梅克尔根この記事では、後に詳細を促進し、ハッシュ値を計算するために、すべてのトランザクションのトランザクションをブロック体を指し
    • 难度值:これは、採掘の過程で、ビットコインの採掘に関連している、それは実際には二つの連続したハッシュ値によって行われるが、ゾーン・ヘッダを満たすために、より困難な目標を得るために計算され、この値が一致することは困難です予選の採掘
    • 随机数:我々は、ハッシュ計算プロセスが、ランダム番号と一致し続けるた連続ダブルハッシュ計算されるデータヘッダ領域、同様としてブルートフォースを使用する必要があるため、また、採掘に関連しましたハッシュ計算パラメータとして。我々は、対象ブロックの難易度に合わせて値を計算するとき、我々が使用する乱数は、ヘッダの内側の領域に入金されます。
  • ブロック体は、トランザクションのトランザクションの合計です

2)詳細メルケルルート(ツリー)

  • ルートメルケルを理解するために、我々はメッケルツリーと呼ばれるツリー構造を見ていきます
  • 、A、B、C、D、E:私たちは、このブロック5つの取引事項、すなわちがあることを前提としてい
  • 5 A、B、C、D、E 5つのハッシュ値によって生成されたハッシュ値を計算した。この業務トランザクション、
  • 5ハッシュ値と、ハッシュ値を計算するために再び一緒に対になった:B、C及びDとの組合せ結合のみEでき、そして新たなハッシュ値を作成するために自分のと組み合わされ
  • 再び計算根、木メルケル内部の各ノード、ツリーの各ノードは、実際には、ツリーもメルケルハ呼ばれるハッシュ値になるまで一緒に対になったら、新しいハッシュ値ギリシャの木
  • メルケル、ルート(またはツリー)それは何ですか?私たちは、データブロックがビットコインノードの連続転送する必要があることを知って、その後、有用なデータの破損やその他の問題の移転のプロセスが発生することがあります
  • 1つのノード(受信ノード)がブロックを受信すると、それは何メルケルツリーを復元するためにハッシュ値を計算するために、再び取引トランザクションをブロックします
  • ルートゾーンと矛盾で計算されたルートメルケルメルケルヘッダのであれば、それは問題があるビジネスの取引で取得した示し、そして今回は、ルートメルケルそれを通して最後に戻って来ることができます質問のうち取引事項
  • 例えば、我々は取引Cを取引に問題があり、その後、メルケルルートビューで、それはN1とN2、問題のうち、ハッシュ値はありますか?比較することによりだから、メルケルは同じではありません、元の木のハッシュ値とN1に発見されている場合
  • そして、このラインに沿って見て、私たちは問題H1やH2があることを見に来た、H2は、あなたが問題を見つけた場合、その後、CまたはDのこのラインに従って、再び見えるということですが問題です
  • このように一定のバックトラックしたら、問題のデータの一部が、あなたが再ダウンロードをブロック全体のトランザクションデータを必要としないことにした比較的高速なデータでこれを見つけることができますが、それだけで、対応する質問をダウンロードするために行くために、A
  • データの整合性を証明するために使用されることを意味メルケルツリーの役割であり、データ・ブロックの問題を見つけるために、より効率的な方法することができます

3)検証ルールのタイムスタンプ

  • 時間が(サーバー自体から)タイムサーバから統一することができますので、通常基本的に問題になっている時間のサーバーソフトウェアアーキテクチャの中心で、解決することは比較的容易です
  • 専用サーバーの面でブロックチェーンシステムに、当然のことながら、我々はまた、ビットコイン特にネットワークタイムサービスで展開されていない、ことも可能です
  • ビットコインネットワーク自体は、各ノードはまた、おそらく異なることがあるため、時間帯、例えばA・ネットワーク・アーキテクチャの点であるので
  • タイムスタンプトークンの検証ルールのビット:
    • ビットコインは、一般的には特定のタイムサーバーはありませんが、我々はビットコインのために、このようなサービスを展開するために、サーバーに行くことができます
    • 新しいブロック前の平均タイムスタンプは、ビットブロック11枚の硬貨のタイムスタンプよりも大きく、かつ次の2時間未満でなければなりません
    • これは、コイン検証ルールビットのタイムスタンプであります
  • このアーキテクチャの時点以来、私たちは、時間の特定の結束を取得するために行くことができません
  • あなただけの、そのような検証ルールを持つことができる非常に非常に大きな違いはありません、それを各ブロックのタイムスタンプを作成します

マイニングプロセスの原則

  • 実際には、そこにビットコインマイニングはコンセンサス機構の一部であります
  • ポイントのネットワークソフトウェアに、このようなポイントの場合は、そのデータは、サービスセンターを行うには、単一の正式なリファレンスではありません
  • これは、機構である期間にわたってそれぞれ、他のノードと同期データの整合性に包装パッケージ化データ対象にパッケージャデータを選択する必要があります
  • 誰がしばらく一度のそれを詰めるのでしょうか?ビットコインでワークロードは、このような仕組みを証明しているメカニズムによって強化されています
  • プロセスのイメージであることが証明された。この努力が呼び出され挖矿、この過程では、オペレータは、単に鉱山労働者として、計算するには、コンピュータの多くの電力を消費する必要があります。
  • 常にハッシュ値算出ブロック手段は、(もちろん、2つのハッシュ、ダブルハッシュを作った)ことは何
  • 我々は、領域内の二重ヘッダ領域ハッシュヘッダの計算を指し、すべてのパラメータが調整可能ではない、ハッシュの一例ブロックについて、タイムスタンプ、メルケル根、等です
    • 私たちは、取引の体内ブロックの数を調整した場合には、取引や注文、その後、ルートメルケルが変わるがあるため、これらの異なるパラメータでは、メルケルルートはメイので、変更することができますカーは、参加のメインルートパラメータ算出の一つである(採鉱または参加、主なパラメータは、ハッシュ演算を計算し、前記)
    • もちろん、タイムスタンプが調整さではなく、大きな調整範囲することができます
    • 他のパラメータ、それは主に乱数が、比較的に言えば、調整可能な範囲が比較的大きいが、それはこの計算を懸念していることは、広い範囲のこのような修飾された値を検索することが容易です
  • でも成功した鉱山あああれば、そのマッチが成功した後の結果は、対象ブロックの難易度と一致していることを、パラメータの調整は、この調整によって計算することがどんなにだから、でも終わり
  • いわゆるマイニングは二重ヘッダハッシュ計算の定常領域の組成にプロセスパラメータを指し
  • ビットコインの内部に、SHA256ハッシュアルゴリズムは、主にこのようなアルゴリズムを指し

最終的一貫性ネットワーク

  • 彼らが持っているネットワーク内の各ノードは、すべて同じではありませんビットコインデータのいわゆる最終的な一貫性は、彼らの本を指し、
  • 自身が分岐が発生しますビットコイン、それは、特に明確な方法では難しいので、常に常に一貫ビットコインデータの本は、これを行うことは困難であること
  • いつでもノードがダウンしているので、損傷の様々な問題が発生したため、さらに、FLPの原則では、我々は、インターネット非同期ネットワークということを知っています
  • ネットワークビットコインはそう、それが一貫性の決定論リアルタイムに到達することはできませんが、唯一、最終的な一貫性に到達するために
  • 例えば、我々は、この転送トランザクションブロックの番号で、当社の記録として、ビットコインの合計を転送5
  • 私たちが推薦するこの時間は、あなたが安全を確保したい場合は、それが承認6つのブロックを待ち、それは最初の11個のブロックの後に生成されるまで、5 + 6 = 11の後に生成された11個のブロックまで言うことです
  • トランザクションは、主鎖にまだある前に、我々が対処する場合は、基本的には問題を示しません
  • もちろん、この問題は確率だけではない、唯一の時から基本的に結果整合性ではなく、一貫性の確実なので、これは非同期ネットワークに基づいている限りとしてあること、改ざんの可能性は非常に低くなっていると言うことができます

SPVについて

  • SPV:簡体支払い検証シンプル入金確認
  • ビットコインのネットワーク転送の概念は、二つを混同することは比較的容易であるビジネストランザクションの確認と取引の検証、の支払われます
  • 入金確認:私はお金の金額を支払っていること(ビットコイン)、自身を発生する支払いの正当性を検証することである、例えば、私のバランスが適切であり、私は自分自身でこれを支払う法的ではありません
  • 取引検証:検証が最も完全である、それは本に基づいて、最も完全なデータ検証のいずれかになります。
  • 入金確認のために、ちょうどこの支払いはブロック内に存在することを証明したいので、データを検証するために、完全な本との必要はありません
  • データは、時間の経過とともに、多くの場合、すべてのブックのある非常に大きくなりますので、ビットコインは200以上のGの大きさに達しています
  • その後、入金確認のため、のみによるテストへのトランザクションの支払いが存在するかどうか、そのため、それが唯一の本なしでこの検証の全体的アップブロックに基づくことができます
  • SPVの検証プロセス:
    • 私たちが誰かにお金のビットを支払う必要があった場合、我々は今、確認してください
    • 取得ヘッダにのみ領域として、本体は、ブロックを取得しないので、我々はそこいくつかのフィールドのデータのヘッダ領域を得ることができ
    • 第一の捕捉ヘッダ(ヘッダは、最長鎖をキャプチャを指し、また、バックボーンエリアヘッダである主鎖を指す最大困難です)
    • ヘッダー領域を取得した後、我々はビジネストランザクション(支払取引業務)のハッシュ値を計算し、ハッシュ値の支払取引でのブロック取引会社を探します
    • その後見つけ、あなたはハッシュ値メルケルルート計算を得ることができます
    • メルケルルートを計算するために、1つのアプローチは、その後、一般的な手順によって算出され、物の各ハッシュ値に対して別々に計算されます
    • 第二のタイプは、我々が個別に物事毎に算出一つずつ行く必要がないので、ハッシュ値メルケルツリーの中間ノードを取得するということです
    • 私たちは木の枝の一つを出したので、それはメルケルルート直接計算することができます
    • 次に、我々は両方が等しい場合と等しくない、それはありませんがあることを示した場合、それは、この支払い取引の業務があることを意味し、ちょうどメルケルルートにヘッダ領域を比較します
    • これは比較的単純な入金確認で
公開された432元の記事 ウォンの賞賛251 ビュー710 000 +

おすすめ

転載: blog.csdn.net/Tyro_java/article/details/104814639