データ構造としてのブロックチェーン

こんにちは、Habr!



今日は、データ構造の1つとして、コンピューターサイエンスの観点からブロックチェーンを簡単に検討しながら、新しいトピックについて概説します。最近、ブロックチェーンは暗号通貨セグメントの外でますます使用されており、この傾向は確かに注目に値します。では、それについて話しましょう!



ブロックチェーンテクノロジーは、さまざまな方法で説明できます。最近まで、ブロックチェーンは主に暗号通貨の観点から見られていました。ビットコインは、私たちの多くが持っている最初のブロックチェーン協会です。しかし、暗号通貨トランザクションの保存は、ブロックチェーンの多くの使用例の1つにすぎません。この記事では、この観点から離れて、コンピューターサイエンスのより一般的なコンテキストでブロックチェーンについて検討します。



ブロックチェーンはデータ構造です



データ構造は、データを保存、整理、および管理する方法です。データ構造を使用すると、このデータにアクセスして追加し、この構造に含まれるデータを変更および検索できます。最も一般的で基本的なデータ構造には、配列リンクリストが含まれます



アレイ



配列には、列挙された要素がいくつか含まれています。これらは、数字、文字、単語、またはファイル全体である可能性があります。インデックスのおかげで、配列内のすべての要素を参照できます。したがって、配列内のエントリを変更する必要があり、それがどこにあるかがわかっている場合は、すぐにアクセスできます







6つの要素を持つ1次元配列



リンクリスト



ノードは、リンクリストに含まれるデータ項目です。ノードには、少なくとも1つのデータオブジェクトと次のアイテムへのポインタが含まれています。ポインタの機能は、特定のリストの次の項目がどこにあるかをコンピュータに通知することです。



リストの最初の項目を見て、2番目の項目を参照したい場合は、次のノードに移動するポインターを確認してください。リンクリストにデータを追加する方が、配列よりも簡単です。データを1つのノードで展開する必要があり、データを配列に追加すると、この配列の要素数が増えるためです。ただし、リンクされたリストを操作する場合、データにすぐにアクセスすることはできません。



リンクされたリストで特定のデータ項目を探している場合は、最初にこのリストの最初のノードであるそのヘッドを調べます。..。これが探していた要素でない場合は、次のノードに移動するポインターに従います。このノードに探しているデータが含まれていない場合は、必要なデータが見つかるまで、ノードからノードへのリンクをたどり続けます。







3ノードリンクリスト



ブロックチェーン



データ構造のコンテキストでは、ブロックチェーンはリンクされたリストに最もよく似ています。また、ブロックチェーンでは、データはブロックと呼ばれるコンテナに分割されますブロックはリンクされたリストノード非常によく似います。各ブロックには、前のブロックのハッシュであるリンクが含まれています。前のブロックへのリンクとして機能し、ブロックチェーンの順序を維持するのに役立ちます。







ブロックチェーンとリンクリストの主な違いは、ブロックチェーン上のすべてのリンクが暗号的に安全であるということです。ブロックチェーンに適用される「追加のみ」という用語を聞いたことがあるかもしれません。つまり、チェーンを前面から完成させることによってのみ、新しいデータをブロックチェーンに追加できます。保護されたリンクの有効性は常にチェックされます。悪意のあるブロックをブロックチェーンの中央、たとえば下の図のブロック1と3の間に挿入できる場合、前のブロック1にリンクを張ることはできますが、次のブロック3にリンクを張ることはできません。







新しいブロックはそれぞれ既存のブロックの上に構築され、この手順は通常、確認と呼ばれます。ブロックが古いほど、確認が多くなります。確認するたびに、ブロック内のデータを改ざんすることが困難になります。次の図では、ブロック2に1つの確認があります。ブロック2のデータを偽造するには、新しい有効なリンクを含む1つの有効なブロックを再作成する必要があります。次の確認のたびに、別のブロックを再作成する必要があります。したがって、ブロックが古いほど、このブロックに変更が加えられないという確信が高まります。



ブロック間のリンクは、ブロックの順序だけでなく、各ブロックに含まれるデータにも依存します。ブロックチェーン内のブロックにデータを追加したり、ブロックからデータを削除したりすることはできません。ブロックチェーンに配置されたデータには何も起こらないという確信が基づいているのは、この特性に基づいています。当然のことながら、ブロックチェーンのデータ構造では偽物は明らかです。データに変更を加えると、後続のすべてのブロックへのリンクが切断されます。



ブロックチェーン上のデータを削除または変更することはできませんが、チェーンに接続された新しいブロックにデータを追加することは簡単です。たとえば、新しいトランザクションを暗号通貨ブロックチェーンに追加できます。ネットワークに記録された以前のすべてのトランザクションは不変であるため、トランザクションは簡単に確認できます。アドレスYから金額Xが必要な場合、このアドレスの残高には少なくともXの金額が必要です。



Cryptocurrenciesは、ブロックチェーンテクノロジーの特定のアプリケーションにすぎません。ブロックチェーンは、サプライチェーン管理、フリート管理などの実行可能なオプションに急速になりつつあります。



結論



ブロックチェーンは、コンピュータサイエンスに適用できるデータストレージ方法です。ブロックチェーンの要素(そのブロック)は、互いに暗号的にリンクされています。ブロックに書き込まれた後、データを変更することはできません。これはブロックチェーンの値です。これは、信頼できない環境で動作しているときにデータを安全に保存できる不変のレジストリです。



この記事の最後に、ブロックチェーンテクノロジーの特性の真髄を含み、他のデータ構造の中でのその位置を示すツイートで締めくくりたいと思います。



, , .



, , . , – — @NickSzabo4



All Articles