皆さん、こんにちは。ブロックチェーン技術共有の第 3 フェーズが近づいています。早速、始めましょう。
ブロックチェーンのことになると、誰もが「改ざんできない」と言うかもしれません。しかし、なぜブロックチェーンは不変なのでしょうか?
ブロックチェーン データ構造のハッシュ ポインターとマークル ツリーに関連する答えを最初に与えてください。そこで今日はハッシュポインタに関連した内容を共有しましょう。
1. 当時学んだリンクリスト
ブロックチェーンも名前が示すとおりチェーンであり、コンピューターのデータ構造を研究したことのある友人は、データ構造の 1 つがリンク リストであることを知っています。では、ブロックチェーンリンクリストとは何でしょうか?
構造とリンク リストは、コンピューター サイエンスの基礎コースに属します。しかし、長い間働いていると、誰もが次のような反応をするかもしれません。
リンク リストを理解するために、北京、西安、上海、杭州に家があると仮定した簡単な例を使用して説明します。
ただし、知っているのは北京の家の住所だけで、残りの家の住所は他の部屋に保存されています。
あなたは北京の家の住所に基づいて北京の家を見つけ、北京の家の状況を知っており、その中に上海の家の住所が書かれたメモがあり、同様に、あなたは上海の家を見つけます。この住所をもとに上海、上海の家の状況もわかり、西安の部屋の住所が書かれたメモもあり、というように杭州の家が見つかるまで続きます。最後の家であれば、住所を書いたメモは空になります。
上記の例は、リンク リスト内の単一リンク リストの例です。
リンクドリストは、ポインタを介して不連続なメモリ空間にジャンプし、動的拡張の機能を実現します。
上の例では、次の家の住所を格納するメモは、次の家の住所を表すポインタです。
不連続な空間は誰もがよく理解しています。北京、上海、西安、杭州にあるあなたの家と同じように、地理的な位置は不連続です。
リンク リストにはランダムにアクセスできず、順次にのみアクセスできます。
上記の例からも、住所が北京にしかないため、北京の部屋からしかアクセスを開始できないことがわかります。
通常のポインタはメモリ内の構造体のアドレスを指します。
では、ブロックチェーンで使用されるハッシュポインターは何を意味するのでしょうか? ポインタなのでアドレスである必要があり、構造体の位置を保存するだけでなく、構造体のハッシュ値も保存する必要があります。
ハッシュについて詳しくない場合は、この記事「パスワードは安全ですか?」を参照してください。| ブロックチェーン技術のハッシュ
2. ハッシュポインタとハッシュリスト
では、なぜハッシュ ポインターを使用するのでしょうか?
最も重要な機能は、構造を見つけるだけでなく、アドレスで指定されたデータが改ざんされるのを防ぐことでもあります。
ハッシュポインタで結ばれた連結リストをハッシュリストと呼びます。
引き続き 4 つのセットを例として使用してください。北京、上海、西安、杭州。
たとえば、通常のハッシュ リンク リストは上の図のようなもので、4 つのノードで構成されます。
ノード 4 のアドレスは、背後にノードがないためランダムになる可能性があります。
杭州の家のノードであるノード 4 はデータと結合されてハッシュ値を計算し、このハッシュ値を西安の家のノード 3 に割り当てます。これにより、家のノードの住所が計算されます。西安では杭州のノード 4 の家を指します。
同様に、西安の家のノードであるノード 3 がデータと結合されてハッシュ値を計算し、そのハッシュ値を上海の家のノード 2 に代入することで、西安の家のノードの住所が計算されます。上海の家はノード 3、西安の家を指します。
ノード 2 にも同じことが当てはまります。
次に、ノード 1 がデータと結合された後、ハッシュ値が計算され、そのハッシュ値が北京の家の住所に割り当てられ、北京の家の住所はノード 1 を指します。
このように、北京の家の住所が入り口として公開されるので、将来自分の何十億ドルを知りたければ、北京の家の住所を取得するだけで済みます。
あなたは金持ちすぎるので、悪い人たちがあなたの記憶力の悪さを利用して、あなたの家の情報を改ざんしようとしています。
1. ノード 3 の西安の家のデータを変更しました。西安はアラビア語に変更され、ノード 3 で改ざんされたデータをマークしました。
2.ノード 2 の西安の家の住所は、ノード 3 の改ざんされていないデータから計算されたものであるため、データを変更した後、西安の家の住所をノード 2 が再びノード 3 を指すようにするには、ノード 2 で西安の家の住所を。そうすることで、西安の家の住所が変更され、西安の家の住所をマークします。 ;
3. 類推すると、ノード 1 の上海の家の住所も変更されているので、それをマークします。
4. 上海の家の住所が変更された後、古い北京の家の住所は古い上海の家の住所とノード 1 のデータから計算される ため、上海の家の住所が変更されました。北京の家の住所をノード 1 にポイントするには、北京の家の住所を再度計算する必要があるため、北京の家の住所も変更されており、北京の家の住所をマークします。
ノード 3 のデータが変更されたため、西安の家の住所、上海の家の住所、北京の家の住所がすべて変更されたことがわかりました。
このようにして、北京の新居の住所が玄関として公開され、新しい住所が以前の住所と違うことが分かり、情報が改ざんされているので大変なことになります。
これがハッシュリストです。
3. ブロックチェーンのデータ構造
ブロックチェーンは、ハッシュ ポインターでリンクされたさまざまなブロックで構成されるチェーンです。
2 番目の部分の隣にある上の写真は小さなブロックチェーンで、最初のブロックはシステムによって生成され、Genesis ブロックと呼ばれます。最初のブロック チェーンの前のブロックのアドレス H(0)、2 番目のブロックの前のブロックのアドレス H(1) はブロック 1 を指し、3 番目のブロックはアドレスを含む最新世代のブロックです。 H(2) はブロック 2 を指します。同様に、ブロック 3 のアドレスもシステムに保存されます。
2 番目の部分のハッシュ ポインタの特性によれば、特定のブロック内の情報が改ざんされると、後続のすべてのブロックが変更されます。
しかし実際には、各ブロックの情報は上記よりもはるかに複雑です。
各ブロックは、ブロック ヘッダー (head)とブロック本体 (body)で構成されます。
ブロックヘッダーには構造化データが格納され、サイズは80バイトです。
ブロック本体は、ブロックを掘り出す期間中のすべての取引情報をマジックツリー構造で記録するため、比較的大きなスペースを必要とします。
平均して、ブロック内に 400 のトランザクション情報があると仮定すると、ブロック本体はブロック ヘッダーの 1000 倍を超える可能性があります。
各ブロックを展開すると、上の図に示すようにブロックの情報が表示されます。
バージョン番号: 参照されたルールを識別するために使用されます。Android や iOS システムのバージョン番号と同じように、ソフトウェア システムは常に反復され、進化しています。
前のブロックのハッシュ値:「親ブロックのハッシュ値」とも呼ばれます。このハッシュ値は、前のブロックのブロック ヘッダー データをハッシュすることによって取得されます (SHA256 アルゴリズム)。その意味は次のとおりです。新しくマイニングされた各ブロックは前のブロックに接続されます。順番に。
マークルルート: ブロック本体では、すべてのトランザクション情報が最初に 2 つのグループに分けてハッシュ化されます。この構造はマークル ツリー (Merkle Tree) と呼ばれ、逆さまのツリーになります。リーフノードにはトランザクションが格納され、その上位にはハッシュ値が格納されます。
タイムスタンプ:このブロックが生成された時刻を秒まで正確に記録します。新しいブロックが誕生するたびに、チェーン全体のブロックが時系列順に配置されるように、対応するタイムスタンプがスタンプされます。
難易度値:ブロックを掘り出す難易度の目標。サトシ・ナカモトがビットコインを設計したとき、ビットコインのブロック生成時間を理想的には約 10 分で一定にするマイニング難易度調整メカニズムを追加しました。
ビットコインプロトコルは、 2016 ブロックごとに、過去の最後の 2016 ブロックの合計時間に応じて次の 2016 ブロックのマイニング難易度を自動的に調整することを規定しています。2016 ブロックの所要時間は 2 週間 (2016*10s) が理想ですが、実際の時間が 2 週間未満の場合は難易度が上がり、2 週間を超える場合は難易度が下がります。
乱数: マイニングとは、最終的なハッシュ値が難易度の要件を満たすように、ハッシュ操作 (ブロック ヘッダー) に参加する乱数 (Nonce) を見つけることです。
ビットコインはマイニングを通じて新しいブロックの会計上の権利をめぐって競争します。誰が新しいブロックの簿記の権利を取得しても、その人が作成する新しいブロックは合法です。マイニングの目的は、簿記権を獲得し、新しいブロックとトランザクションを確認することです。
今日のキーワードは主にリンクリスト、ポインタ、ハッシュポインタ、ハッシュリンクリスト、ブロックチェーンです。次回は、マークルツリーであるマークルツリーについて紹介します。
あなたもブロックチェーンに興味がある方は、WeChat公開アカウント「Candy Chain Notes」を検索して、一緒に前進していきましょう。