新しいビットコインブロックを生成するプロセス

新しいビットコインブロックを生成するプロセス
これはブロガーの鉱業科学アルバムの2番目の記事です。前回の記事「ビットコイン取引のプロセス」に続き、ビットコイン取引の開始から確認までのプロセス全体を分析して、ビットコインマイニングの全体像を垣間見ることができます。
ビットコイン取引のプロセスは、本質的には、大量の UTXO を消費および生成するプロセスです。これらのプロセスは、ビットコイン プロトコルで指定された方法に従ってトランザクション イニシエーターによって構築され、ビットコイン ネットワークによって生成された新しいブロックによって記録および確認されます。取引情報がビットコインブロックに記録され確認されると、取引が完了し、ビットコインネットワークは価値の移転を実現します。

「ビットコイン取引のプロセス」の記事では、ビットコイン取引情報がどのように構築されるかはすでにわかっていますが、この情報はどのようにして新しいビットコイン ブロックに入力されるのでしょうか。
次に、ブロガーは新しいビットコイン ブロックを生成するプロセスを使用して、ビットコイン ブロックがトランザクション情報を記録し、確認する方法について詳しく説明します。

紹介する知識ポイントは次のとおりです。
知識ポイント
トランザクション プール (英語名: mempool) は、メモリ プールとも呼ばれ、確認されるトランザクションを格納するために使用される場所です。各ビットコインマイニングノードには独自の独立したトランザクションプールがあります。トランザクションプールのボリューム、最小トランザクション手数料率(この記事で言及するトランザクション手数料率は、単位ボリュームのトランザクションに含まれる手数料であり、単位はSat / B、つまり、各Bバイトのトランザクションの手数料はxSatビットコインです。以下同じ)などの違いにより、各ノードのトランザクションプールも異なります。予備ブロックを構築する際、マイナー(マイニングプール)はトランザクションプールからパッケージ化するトランザクションを選択する必要があります。トランザクション プールは頻繁に呼び出されるため、そのデータはノード サーバーの RAM に保存され、トランザクション プールが大きくなりすぎることはありません。
ビットコイン ネットワーク内のマイニング ノードは、ビットコイン データを保存し、ビットコインのトランザクションとブロックの記録と検証に参加するノードです。これらのノードの中には、記録と検証に参加するだけでなく、新しいビットコイン ブロックの作成にも参加するものがあります。彼らは新しいブロックを構築し、PoW プルーフ・オブ・ワークを通じて会計権を競い合い、それによって新しいブロックを作成する権限を獲得します。これらのノードはマイニング ノードです。初期のマイニングノードにはマイナーとマイニングプールが含まれていましたが、現在ではビットコインのマイニングの難易度が高いため、単一のマイナーが新しいブロックを記録して作成する権利を獲得することは困難です。現在、主要なビットコインマイニングノードは、F2Pool、Poolin、BTC.com、Antpool、Slushpool などのさまざまなマイニングプールです。
UTXO ライブラリでは、Bitcoin ノードはノードのすべてのトランザクション情報をスキャンしてUTXO クラスターを構築します。未使用の UTXO がすべて含まれます。新しいブロックが生成されるたびに、UTXO ライブラリは新しいブロックで消費された UTXO を独自のリストから削除し、新しく生成された UTXO を独自のリストに追加します。
Coinbase Rewards は、Coinbase Transaction とも呼ばれます。ビットコイン プロトコルでは、新しいビットコイン ブロックが生成されるたびに、ビットコイン ネットワークが N 個のビットコインを生成し、そのビットコイン ネットワークの維持に対する報酬として、このブロックを作成したマイナーに支払われることが規定されています。同時に、Coinbase 報酬以外のこのブロック内の他のトランザクションに含まれるすべてのトランザクション手数料も Coinbase 報酬と合算され、このブロックを作成したマイナーに支払われます。このうちNの値はビットコインが誕生した当時は50でしたが、その後約4年ごとに半減しています。現在は6.25です。この半減方式では、ビットコイン ネットワークがビットコインの総量を制御します。 Coinbase Reward は、すべてのブロックに記録される最初のトランザクションです
確認されるトランザクションはまずトランザクションプールに入ります

ビットコインのトランザクションを開始する場合、トランザクションイニシエーターがトランザクション情報を構築します。このとき、トランザクション情報は確認対象のトランザクションであり、トランザクション入力情報(未使用のUTXOと正しい秘密鍵署名)とトランザクション出力情報(新しいウォレットアドレスにロックされた未確認のUTXO)が含まれます。

トランザクションが検証されると、トランザクション開始者によって Bitcoin ネットワークにブロードキャストされます。 Bitcoin ネットワーク内のすべてのノードは、ブロードキャスト情報を検証して記録できます。このうち、マイニングノードはブロードキャストを受信した後、確認するトランザクション情報を検証します。検証に合格すると、マイニング ノードは確認するトランザクションを独自のトランザクション プールに追加します。

図1: 確認対象のトランザクションがトランザクションプールに入る

確認が必要な取引情報には以下が含まれます。

  • トランザクションに有効な入力ウォレットアドレスと出力ウォレットアドレスが含まれているかどうか。

  • トランザクション サイズはブロックの最大サイズ (ビットコイン ブロックの最大サイズは現在 1M) より小さいですか?

  • 入力 UTXO が正当かどうか (ノードの UTXO ライブラリと比較して、入力 UTXO が使用されていないかどうか)。

  • 取引の総入力額と総出力額が合理的であるかどうか(総入力額 ≥ 総出力額)。

  • トランザクション入力に Coinbase からの報酬があるかどうかを判断します。報酬に対応するコインは、使用する前に少なくとも 100 ブロックの確認が必要です

  • トランザクション プール内に重複したトランザクションがないことを確認します。

  • トランザクションによって設定されたトランザクション手数料が、メモリプールのトランザクション手数料比率 (Sat/B) の制限、およびその他の検証 (孤立したトランザクションの検証や追跡など) よりも高い。

マイニングノードはトランザクションプールからトランザクションを選択し、予備ブロックを構築します。
マイニング ノードが予備ブロックを構築し、新しいブロックを生成する準備をするとき、確認するトランザクションを優先度に従ってトランザクション プールから並べ替えます。予約ブロックは通常、優先度の高いトランザクション用に一定量のスペースを予約し、残りのスペースはトランザクション手数料率 (Sat/B) の降順で使用され、ブロックを埋めるか、トランザクション プール内のすべてのトランザクションを使い切ることになります。
しかし、ビットコインのブロックには、トランザクション プールからの保留中のトランザクションだけが含まれているわけではありません。
ビットコイン プロトコルによれば、ビットコイン ブロックは主にマジック ナンバー、ブロック サイズ、ブロック ヘッダー、トランザクション カウンター、トランザクション情報の 5 つの部分で構成されます。以下のように表示されます。

図2 ビットコインブロックの構造
このうち、 「マジックナンバー」は 0xD9B4BEF9 という値を持つ定数です。 「ブロックボリューム」は、このブロック内のすべてのデータの合計ボリュームです。 「ブロックヘッダー」はブロック全体の短縮情報とみなすことができます。マイニングに使用されるブロック情報はブロック ヘッダーです。 「トランザクション カウンター」は、ブロック内のトランザクションの数を記録するために使用されます。 「トランザクション データ」とは、Coinbase 報酬部分を含む、ブロックに含まれるすべてのトランザクション情報です。一般的に言えば、この部分のデータはブロック全体のスペースの大部分を占めます。
ビットコインのブロックでは、ブロックヘッダーが最も重要な情報です。ブロック全体のすべての特性情報が含まれています。
  • ブロックのバージョン番号。ブロックを作成した Bitcoin ノードのバージョン情報。Bitcoin プロトコルのアップグレードと更新を追跡するために使用されます。
  • 前のブロックのハッシュ値。親ブロックハッシュとも呼ばれ、前のブロックを見つけるために使用されます。各ブロックには、前のブロックのハッシュ値が含まれています。いずれかのブロックにわずかな変更を加えると、後続のブロックのハッシュ値に大きな変化が生じます。このリンクのチェーンにより、すべてのビットコイン ブロックが単一のチェーン構造を形成することが保証され、ビットコイン ブロック データの悪意のある改ざんを効果的に防止できます。
  • MerkleRoot ハッシュブロックのトランザクションデータリストで、すべてのトランザクションデータのハッシュ値を取得し、Merkleツリーを構築します。この Merkle ツリーのルート ハッシュ値は MerkleRoot ハッシュです(以下を参照)。
    ハッシュ アルゴリズムの感度により、トランザクション全体の Merkle ツリー内のトランザクション データにわずかな変更が加えられると、連鎖反応が発生し、Merkle ツリーのルート ハッシュ値に大きな変更が生じます。したがって、トランザクションデータのマークルルートハッシュ値(MerkleRoot Hash)は、ブロック内のトランザクションデータを参照するために使用されるトランザクション全体のフィンガープリントと見なすことができます。
図3 取引データのマークル木構造
  • タイムスタンプ。予約ブロックが作成された時刻。
  • 現在のターゲットハッシュ値。ビットコイン プロトコルでは、マイナーによって作成された予備ブロックのハッシュ値が目標ハッシュ値より小さい場合にのみ、ブロックが有効であると規定されています。
    目標ハッシュ値はマイニング難易度によって決まります。マイニングの難易度が上がると、目標ハッシュ値が小さくなり、マイナーがビットコイン ネットワークの要件を満たすハッシュ値を見つけることが難しくなります。現在のマイニング難易度によると、目標ハッシュ値よりも低いハッシュ値を見つけるには、理論的には S17 マイニング マシンを42 年間連続して稼働させる必要があります。したがって、個人がビットコインをマイニングするために独自のノードを構築する状況は基本的に存在しません。
  • 乱数。 Nonce とも呼ばれます。ブロック ヘッダー情報では、ブロック バージョン番号、前のブロックのハッシュ値、MerkleRoot ハッシュ値、タイムスタンプ、現在のターゲット ハッシュはすべて既知の情報であり、比較的固定されており、自由に変更するのは不便であることがわかります。したがって、準備されたブロックのハッシュ値を調整する場合は、変数データ(乱数)を導入する必要があります。乱数を変更することで、作成されたブロックのハッシュ値を調整できます。
マイニング ノードは予備ブロックを構築した後、ブロック ヘッダー情報をマイナーに送信します。マイナーは、ブロック ヘッダー内の乱数を継続的に調整することで、予備ブロックのハッシュ値を変更します。予備ブロックのハッシュ値がビットコイン ネットワークの現在のターゲット ハッシュ値よりも低い場合、このブロックは合法的な新しいブロックです。
マイニングノードは、新しいブロックをタイムリーにビットコイン ネットワークにブロードキャストします。ブロードキャスト情報を受信した後、ビットコイン ネットワーク内の他のビットコイン ノードが新しいブロックを検証します。検証に合格すると、新しいブロックがローカルに追加されます。この時点で、新しいブロックが作成および確認され、対応するトランザクションも完了しています。

参考文献:

1. ビットコインのソースコード分析: https://blog.csdn.net/ztemt_sw2/article/details/80958087?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

2. ビットコインのブロックヘッダー構造: https://www.investopedia.com/terms/b/block-header-cryptocurrency.asp

3. ビットコインのターゲットハッシュ値: https://en.bitcoin.it/wiki/Target

4. ビットコインのブロック構造: https://en.bitcoin.it/wiki/Block#Block_structure

5. ビットコインをマスターする: https://wizardforcel.gitbooks.io/masterbitcoin2cn/content/ch09.html

<<:  紛失または盗難されたビットコインは回復できますか?済南の裁判所が「ビットコイン損失事件」で判決を下した!

>>:  昨日 Bitmain に何が起こったか、パート 11 (Zhan が新しい Web サイトを作成し、それを決済会社に変更しました)

推薦する

インドのブロックチェーン企業uTrade SolutionsがKYChainとHashDegreeを立ち上げ

クレイジーコメント: インドのフィンテック企業 uTrade Solutions は、KYChain...

シェアリングエコノミーは実は非常に「利己的」であり、ブロックチェーン技術はそれに出口を与えようとしている。

DidiとMobikeは、 「シェアリングエコノミー」分野のユニコーンとして、長い間私たちの日常生...

韓国政府:ICO市場の熱狂、投機がビットコインとイーサリアムの価格上昇を牽引

韓国政府当局者によると、ビットコインやイーサリアムなどの暗号通貨の価格の最近の上昇は、投資ではなく投...

サトシ・ナカモトとは誰ですか?

「私は(エネルギーを)他のことに移しました。」 ビットコインの謎の創始者、サトシ・ナカモトは201...

ビットコイン財団理事がギフトのCEOを辞任し新会社を設立

ビットコイン財団の理事であるヴィニー・リンガム氏は、人気のモバイルギフトカードサービス「Gyft」の...

財新:公安部が初めて仮想通貨公文書の監督に参加

8月24日、中国銀行保険監督管理委員会、中国サイバースペース管理局、公安部、中国人民銀行、国家市場監...

F2Poolが考えを変え、ビットコイン拡張プロトコルSegwit2xに変更が加えられる可能性

物議を醸しているスケーリングプロトコルSegwit2xをサポートするために以前にサインアップした中国...

イーサリアム ETF の承認はイーサリアムの価格にどのような影響を与えるでしょうか?

米国の規制当局は、イーサリアム(ETH)を保有するスポット上場投資信託に最終承認を与え、米国民が簡単...

弱気相場が到来すると、ビットコインマイナーはどこへ行くのでしょうか?

要点要約ビットコイン価格の下落とエネルギーコストの上昇を背景に、ビットコインマイニングの経済性はここ...

アルトコインとICOバブルは形成されていますか?日本の投資家が犯人かもしれない

日本の取引所はここ数ヶ月、ビットコインの価格高騰を主導してきた。 ORBプロジェクトリーダーでありI...

ビットコインの後、P2Pはブロックチェーンによって再構築されるのでしょうか?

2007年にP2Pが中国で定着して以来、2008年の低迷期、2013年の復活、2014年の急成長、...

ブロックチェーン業界の幹部が規制問題に関する請願書に署名

Crazy Review : 「Muskoka Group」は、「Blockchain Revolu...

5.14 一帯一路サミット VS ビットコインランサムウェア

主なイベント1. 中国の習近平国家主席は日曜日(5月14日)、北京で開催された「一帯一路」サミットの...

米国はビットコインETFを9回「拒否」した。いつ承認されますか?

最近、米国証券取引委員会(SEC)はビットコインETFを承認するかどうかの決定を再び延期した。暗号通...