Lisk Academy 日本語翻訳bot

Lisk Academy の日本語翻訳botです。

ハッシング

以下のサイトから引用して翻訳しています。

lisk.io

ハッシング

ブロックチェーンの信頼性と完全性は、二重支出などの詐欺的なデータや取引が受け入れられるか、記録される機会がないことに根ざしています。技術全体の要点であり、この信頼性を維持するための主要コンポーネントはハッシングです。

ハッシングは、任意の長さの入力を受け取り、数学的アルゴリズム(例えば、BitcoinはSHA-256を使用)を介して暗号の固定出力に変換するプロセスです。そのような入力の例には、トランザクションブロックやインターネットに含まれるすべての情報など、さまざまな情報のメッセージや巨大なキャッシュなどの短い情報が含まれます。

www.youtube.com

ハッシングによるデータの保護

ハッシングは、データのセキュリティを大幅に向上させます。ハッシュを見てデータを解読しようとしている人は誰でも、ハッシュに基づいて暗号化された情報の長さを計算することはできません。暗号ハッシュ関数には、有用とみなされるいくつかの重要な性質が必要です。

異なる入力に対して同じハッシュ値を生成する:
これは不可能です。入力の真偽を追跡することが不可能な場合は、これが重要です。 

同じメッセージが常に同じハッシュ値を生成する:
これの重要性は、以前の点に似ています。

与えられたメッセージのハッシュを生成するために速くする:
システムは効率的ではなく、そうでなければ値を提供する。

ハッシュ値に基づいて入力を判断することは不可能です: 
これは、ハッシングとデータの保護の最も重要な側面と品質の1つです。

入力に対するわずかな変更だけでも、ハッシュが完全に変更されます:
これはセキュリティの問題でもあります。わずかな変更だけでわずかな違いがあった場合は、入力が何であったかを考えるのがかなり簡単になります。ハッシュアルゴリズムが優れていれば複雑になればなるほど、入力を変更することによる影響は出力に反映されます。 

f:id:Lisk_Japan:20180809142448p:plain

ハッシングは、意図された受信者に見られる前に改ざんされていないことを確実に提供することによってデータを保護します。したがって、例として、機密情報を含むファイルをダウンロードした場合、ハッシュアルゴリズムを使用してそのファイルを実行し、そのデータのハッシュを計算し、データを送信した人が示すものと比較することができます。ハッシュ値が一致しない場合は、ファイルを受け取る前にファイルが変更されている可能性があります。

f:id:Lisk_Japan:20180809142456p:plain

Blockchain Hashing

ブロックチェーンでは、ハッシュを使用して現在の世界の状態を表現するが、より正確にはブロックチェーンの状態を表現します。そのため、入力はブロックチェーン上で発生したすべてのものを表します。したがって、その時点までのすべてのトランザクションは、追加される新しいデータと組み合わされます。これが意味するのは、ブロックチェーン上で発生したすべての以前のトランザクションに基づいて出力が生成され、その結果によって形作られるということです。

前述したように、入力のいずれかの部分を少し変更するだけで、出力が大幅に変更されます。これにはブロックチェーン技術の反駁できないセキュリティがあります。ブロックチェーン上で以前に起こったレコードを変更すると、すべてのハッシュが変更され、それらを間違ったものとすることになります。ブロックチェーン透過性を考慮に入れると、これは不可能になります。これらの変更は、ネットワーク全体を見渡す必要があるからです。

最初のブロックとして繋ぐblockchainは、合わせて検証するとき、一意の製造そのトランザクション含まれるハッシュ。このハッシュと処理中のすべての新しいトランザクションは、チェーンの次のブロックで使用される新しいハッシュを作成するための入力として使用されます。これは、各ブロックがそのハッシュを通じて前のブロックにリンクして、起源ブロックへのチェーンを形成することを意味します。したがって、名前はブロックチェーンになります。このようにして、ネットワーク上のノードがハッシュの内容を合意している限り、トランザクションを安全に追加できます。

f:id:Lisk_Japan:20180809142509p:plain

データ構造の説明

データ構造は、データを格納する特殊な方法です。この機能を実行する2つの主要なハッシングオブジェクトは、ポインタとリンクリストです。ポインタは、変数としてアドレスを格納し、そのように他の変数の場所を指します。リンクされたリストは、ポインタによって互いに接続された一連のブロックです。したがって、各ポインタ内の変数は、次のノードのアドレスであり、最後のノードはポインタを持たず、ポインタは最初のブロックにあり、起点ブロックは実際にはブロック自体の外側にある。最も単純なブロックチェーンは、単にハッシュポインタを介して相互に指し示す記録されたトランザクションのリンクされたリストです。

ハッシュポインタは、ポインタが前のブロックのアドレスだけでなく、そのブロックのハッシュデータも含むので、ブロックチェーンが確実性の点で離れている場所です。先に説明したように、これはブロックチェーン安全性の基礎です。たとえば、ハッカーが連鎖内の9番目のブロックを攻撃してデータを変更したければ、後続のすべてのブロックのデータを変更する必要があります。ハッシュも変更されるためです。つまり、ブロックチェーンに記録されているデータを変更することは不可能です。

f:id:Lisk_Japan:20180809142522p:plain

ハッシングは、ブロックチェーン技術の不変かつ決定的な潜在的可能性の中核となる最も重要な側面です。これは、記録され、閲覧されたデータの信憑性を保持し、ブロックチェーン全体の完全性を保持します。これは技術のより技術的な側面の1つですが、それを理解することは、ブロックチェーンの機能とそれが果たす計測可能な可能性と価値を理解する上での一歩です。

f:id:Lisk_Japan:20180809142530p:plain

メルクルツとは何ですか?

Merkleツリー(ハッシュツリーとも呼ばれる)は、データをブロックチェーンに安全かつ効率的に記録するために使用されるハッシュのデータ構造です。このコンセプトは1979年にラルフ・メルクルによって特許取得されました。

このシステムは、元のトランザクションに基づいてそのデータの妥当性を検証する手段として、ハッシュを生成するアルゴリズムを介してトランザクションのブロックを実行することによって機能する。トランザクションのブロック全体は、一度にハッシュ関数によって実行されるのではなく、各トランザクションがハッシュされ、これらのトランザクションがリンクされ、一緒にハッシュされます。最終的には、ブロック全体に対して1つのハッシュが作成されます。

f:id:Lisk_Japan:20180809142538p:plain

可視化されると、構造はツリーの構造に似ていますが、各ブロックには通常数千ものトランザクションが含まれているため、単純な方法ではありますが、トランザクションに似ています。最下行のハッシュは「葉」と呼ばれ、中間のハッシュは「枝」と呼ばれ、先頭のハッシュは「ルート」と呼ばれます。

Merkleツリーは、誰でもブロックチェーン全体をダウンロードすることなく、個々のトランザクションの有効性を確認できるので、特に便利です。たとえば、ルートハッシュ(12345678)があれば、ハッシュ(7)、(56)、(1234)を考慮してトランザクション(8)を簡単に確認できます。それらがすべてブロックチェーン上にある限り、トランザクション(8)は確かに存在し、そのように説明され、結果として真実であり、そこに存在することを意味する。

f:id:Lisk_Japan:20180809142548p:plain

通常、Merkleルートのハッシュは次のものとともにブロックヘッダーに含まれます。

  • 前のブロックのハッシュ
  • タイムスタンプ
  • ノンス
  • ブロックのバージョン番号
  • 現在の難易度目標

Merkleツリーとハッシュは、セキュリティ、完全性、反駁可能性を提供しながらブロックチェーン技術を機能させる上で重要な要素であり、コンセンサスプロトコルと並んで、ブロックチェーン技術の最も重要な側面です。