Gitの内部データ構造はデータオブジェクトのツリーで、各オブジェクトはその先行オブジェクトを指すだけです。各データブロックはハッシュされます。中間ブロックの変更(ビットエラーまたは攻撃)は、保存されているハッシュと実際のハッシュが乖離したときに認識されます。
この概念はブロックチェーンとどう違うのですか?
Gitはブロックチェーンの例として挙げられていませんが、少なくとも要約では、両方のデータ構造の記述は似ています:データブロック、単一方向の逆方向リンク、ハッシュなど。
Gitがブロックチェーンと呼ばれていないという違いはどこにありますか?
git
は、いくつかの理由でブロックチェーンテクノロジの例ではありません(これらが最初に思い浮かぶものです)。
ブロックチェーンの実装では、ブロックチェーンに追加される前に、すべてのブロックが独立して複数回検証されます。これは確かにブロックチェーン技術に関する最も重要なことの1つであり、それがその「ハッキング性」を保証するものです。一方、多くのgit
プロジェクトは独立した検証を必要とせず、そうする場合、リポジトリにコミットされる前に1人の人が変更を承認するだけで済みます。そのため、git
は、信頼しなければならない検証の最大1つのポイントで、ブロックチェーンテクノロジのコア原則の1つを破ります。
git
リポジトリは、多くのサーバーで必ずしも複製されるわけではありません。 git
リポジトリからローカルに作業することができ、ローカルディスクが破損していると、すべてが失われることになります。ブロックチェーン技術は、サーバー間で元帳を複製することを意味します。
git
の履歴を書き換えることができます。 git Push <remote> <branch> --force
が<branch>
の状態よりも前の状態に設定されている<remote>
は、履歴を書き換えます。ブロックチェーンでは、元帳は不変の歴史です。
Gitとブロックチェーンが似ているように見えるのは、両方とも基礎となるデータ構造として merkle trees を使用しているためです。メルクルツリーとは、各ノードにその内容の暗号化ハッシュ値がラベル付けされているツリーです。これには、その子のラベルも含まれます。
Gitの有向非巡回グラフはまさに、各ノード(タグ、コミット、ツリー、またはBLOBオブジェクト)がそのコンテンツのハッシュとその「子」のラベルでラベル付けされたメルクルツリーです。コミットについては、「子」という用語がGitの親の理解と少し矛盾することに注意してください。親コミットはコミットの子です。グラフを再表示することで成長し続けるツリーとして。
ブロックチェーンはこれと非常によく似ています。ブロックチェーンは、そのように成長し続けているためです。また、データの整合性を確保するために、そのマークルツリープロパティも使用しています。しかし、通常、ブロックチェーンは単なるメルクルツリーではなく、 「バカなコンテンツトラッカー」Git から切り離されています。たとえば、ブロックチェーンは通常、ブロックレベルで高度に分散化されたシステムを使用することも意味します(すべてのブロックが同じ場所にある必要はありません)。
ブロックチェーンを理解するのはちょっと難しいです(個人的には、私はまだそれについてすべてを理解するのはまだ遠いです)が、Gitの内部構造を理解することはブロックチェーンについての基本的な部分を理解するのに確実に役立ちます。
Bitcoinのようなサイバー通貨は、分散コンセンサス暗号化ブロック・チェーン(merkle tree)を使用します。一般的な用法ではこれが「ブロックチェーン」に短縮されました
Gitは一連のブロック(merkleツリー)を使用しますが、 'BlockChain'という用語の一般的な用法が暗示する分散合意暗号コンポーネントは欠けています。
暗号通貨ブロックチェーン;とは異なります。 gitはP2Pの信頼できないコンセンサスメカニズムを持っていません。
Blockchain
はではないあらゆるブロックのあらゆる連鎖です。
Blockchain
は、whenが2つ以上転用された場合にメインチェーンを決定する方法があり、その決定に中央権限が不要な場合です。