banner
leaf

leaf

It is better to manage the army than to manage the people. And the enemy.

実装する簡単な分散ネットワーク

ブロックチェーンネットワークは分散型であり、これはブロックチェーンが単一の中心ノードに基づいているのではなく、多くの分散型ノードが共同で維持されていることを意味します。

このセクションでは、Python を使用してシンプルな分散型ネットワークをシミュレートします。このシミュレートされた分散型ネットワークでは、複数のノードが同じコンピュータ上で実行されますが、それぞれのノードは異なるローカルポート番号を使用しており、独立したスレッドで実行されます。機能的には、これらの独立したノードは個別に実行され、互いに影響を与えません。しかし、ブロックチェーン上では、これらのノードはお互いに協力してブロックチェーンの正確性を維持し、ブロックを検証し、新しいブロックを生成してチェーン全体を拡張します。

(1)ノードの定義

この分散型ネットワークを実現するために、まず、ブロックチェーン上のすべてのノードを保存するためのグローバル変数を定義し、ノードの構造を定義する必要があります。各ノードには一意のポート、ノード名、一意のウォレット、およびブロックチェーンのコピーが含まれています。コードは以下の通りです。

image

(2)ノードの起動

各ノードは起動時にブロックチェーン情報を初期化し、指定されたポートを常に監視し、他のノードのリクエストを処理します。コードは以下の通りです。

image

(3)ブロックチェーンの初期化

ブロックチェーンの初期化プロセスでは、まずブロックチェーンネットワークに他のノードが存在するかどうかを判断し、存在する場合は初期化リクエストを送信し、そのノードのブロックチェーン情報を要求して自身のノードに同期します。ネットワーク内の最初のノードである場合は、ジェネシスブロックを初期化する必要があります。具体的なコードは以下の通りです。

image

(4)リクエストの処理

ブロックチェーンの初期化後、各ノードは常に実行され、他のノードからのリクエストを処理します。ノードが受け取るリクエストは 3 つの場合に分かれます。1 つ目は初期化リクエストであり、ノードはこのリクエストを受け取ると、ローカルのブロックチェーン情報を返します。2 つ目は新しいトランザクションのブロードキャストであり、ノードはこのリクエストを受け取ると、トランザクションの妥当性を検証し、有効であれば新しいブロックを採掘し、ローカルのブロックチェーンに追加し、ネットワーク全体にブロードキャストします。3 つ目は新しいブロックのブロードキャストであり、ノードはこのリクエストを受け取ると、まずブロックの妥当性を検証し、有効であればローカルのブロックチェーンに追加します(実際のネットワークでは、この新しいブロックが現在のブロックチェーンに既に存在するかどうかもチェックする必要があります)。具体的なコードは以下の通りです。

image

他のノードのリクエストの処理

(5)データのブロードキャスト

以下のコードで定義されている broadcast_new_block 関数は、新しいブロックを分散型ネットワークにブロードキャストするためのものです。ノードリスト全体をループして、自身以外の他のノードに送信します。以下のコードを参照してください。

image

上記の機能に加えて、ノードはトランザクションを送信し、分散型ネットワークの他のノードにブロードキャストすることもできる必要があります。以下のコードを参照してください。

トランザクションの送信関数

上記の作業が完了したら、このブロックチェーンネットワークの機能をテストすることができます。まず、ノード 1 を初期化し、ポート 8000 でこのノードを実行し、ノード上のブロックチェーン情報を出力します。ジェネシスブロックが含まれていることがわかります。以下のコードを参照してください。

image

ノード 1 の初期化

次に、ノード 2 を作成し、ポート 8001 で実行し、このノードのブロックチェーン情報を出力します。ノード 1 から同期されたジェネシスブロックが含まれているはずです。以下のコードを参照してください。

image

ノード 2 の初期化

次に、2 つのノードの暗号通貨の状況を出力します。ノード 1 はジェネシスブロックの生成後に 1 つの暗号通貨を取得しましたが、ノード 2 は暗号通貨を持っていません。以下のコードを参照してください。

image

トランザクション機能をテストするために、ノード 1 のアカウントからノード 2 のアカウントに 0.3 の暗号通貨を送金し、分散型ネットワークに送信します。以下のコードを参照してください。

image

トランザクション機能のテスト

次に、2 つのノードのブロックチェーンの状況を出力します。2 つのノードの両方に 2 つのブロックが含まれていることがわかります。以下のコードを参照してください。

image

その時点でのノードの暗号通貨の状況は、ノード 1 のアカウントが 0.3 の暗号通貨になり、ノード 2 のアカウントが 0.3 の暗号通貨を受け取り、マイニングにより 1 つの暗号通貨を獲得して合計 1.3 の暗号通貨になるはずです。以下のコードを参照してください。

image

トランザクション後の暗号通貨の状況の出力

以上で、シンプルで完全な機能を備えたブロックチェーンネットワークが完成しました。読者の皆さんがこの Python 実装からブロックチェーンの基本的な機能の実装方法を学ぶことを願っています。興味のある読者は、このプロトタイプを改善し、最適化するか、自分が習得しているプログラミング言語を使用して別のバージョンのブロックチェーンプロトタイプを実装することもできます。この Python で実装されたブロックチェーン関連のコードは GitHub に公開されています。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。