この記事では、Go を使用して基本的なブロックチェーンを構築する手順を見ていきます。 MD5 よりも安全な SHA-256 を使用したブロック構造、ハッシュ、トランザクション検証の基本について説明します。
Go は効率的で習得しやすい言語であり、同時実行性と速度が関係するプロジェクトに最適であり、どちらもブロックチェーン実装にとって重要です。
ブロックチェーンは、暗号化ハッシュによってリンクされた一連のブロックです。各ブロックには以下が含まれます:
この設定により、チェーン内の各ブロックが一意に識別可能であり、改ざん耐性が確保されます。
Go では、Data、Hash、PrevHash、Nonce、Transactions のフィールドを含む各ブロックを定義します。
type Block struct { Hash string Data string PrevHash string Nonce int Transactions []*Transaction }
SHA-256 ハッシュの計算
各ブロックを保護するために、SHA-256 を使用してブロックのデータと以前のハッシュに基づいてハッシュを計算します。
func (b *Block) ComputeHash() { data := b.Data + b.PrevHash hash := sha256.Sum256([]byte(data)) b.Hash = hex.EncodeToString(hash[:]) }
ジェネシスブロックの作成
ジェネシスブロックはブロックチェーンの最初のブロックであり、開始点を確立するために独自の「コインベース」トランザクションで初期化されます。
func Genesis() *Block { coinbaseTx := &Transaction{Sender: "Coinbase", Receiver: "Genesis", Amount: 0.0} return CreateBlock("Genesis Block", "", []*Transaction{coinbaseTx}) }
ブロックチェーンの構造
私たちのブロックチェーンはブロックの配列で構成されています。ジェネシスブロックで初期化します。
type Blockchain struct { Blocks []*Block } func InitBlockChain() *Blockchain { return &Blockchain{[]*Block{Genesis()}} }
ブロックを追加するには、ターゲット条件を満たすハッシュを見つける Proof-of-Work アルゴリズムが必要です。このプロセスには、ハッシュが目標の難易度を満たすまで Nonce をインクリメントし、ブロックが簡単に追加されないようにすることが含まれます。
ウォレットの機能をシミュレートするために、トランザクションに署名して検証するための RSA キーを生成します。
ブロックチェーンの使用方法は次のとおりです:
type Block struct { Hash string Data string PrevHash string Nonce int Transactions []*Transaction }
このプロジェクトは、ブロックチェーンのコアコンポーネントである構造化、ハッシュ化、プルーフオブワークマイニング、デジタル署名によるトランザクション検証をカバーしています。当社の SHA-256 ハッシュにより、各ブロックの安全で一意の識別子が確保され、RSA ベースのウォレットにより基本的なトランザクション検証が追加されます。
このブロックチェーン実装は簡略化されたモデルです。これをさらに発展させるには、次のことができます:
完全な実装を最初から確認するには、次のリポジトリを参照してください:
Go でのブロックチェーン実装。ブロックチェーン テクノロジーの重要な概念を示します。このプロジェクトには、基本的なブロック構造、Proof-of-Work コンセンサス、暗号トランザクション署名、ブロック検証が含まれています。
type Block struct { Hash string Data string PrevHash string Nonce int Transactions []*Transaction }
func (b *Block) ComputeHash() { data := b.Data + b.PrevHash hash := sha256.Sum256([]byte(data)) b.Hash = hex.EncodeToString(hash[:]) }
以上がGolang でシンプルなブロックチェーンを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。