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

新しいビットコインブロックを生成するプロセス
これはブロガーの鉱業科学アルバムの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 サイトを作成し、それを決済会社に変更しました)

推薦する

コインゾーントレンド: 今週のビッグデータに基づくビットコインの価格動向 (2017-06-01)

通貨価格が圧力を突破し、強気パターンが再び現れる1. 市場動向<br/>今日は2017年...

BNBの富を解読する

DeFiLlamaのデータによると、BSCチェーンDEXの取引量は3月10日にイーサリアムチェーンD...

ビットコイン取引の匿名性を解除することは可能ですか?

クレイジーな解説:研究者らは最近、ビットコイン取引の開始者の正体を追跡することが可能かどうかについて...

DeFi収入の本当の源

分散型金融(DeFi)の最も注目すべき特徴の 1 つは、「利回り」という概念の人気です。ユーザーを引...

NVIDIA、仮想通貨マイニング需要の影響に関する虚偽の発言で集団訴訟を起こされる

globenewswireによると、12月28日、リーバイ・アンド・コルシンスキー法律事務所は株主警...

Meitui.com:「ブロックチェーン+インターネットセレブ経済」モデルの構築に注力

現在、各界各層が「ブロックチェーン+」の実現可能な解決策を模索しており、その好ましい環境は、2015...

ETH カードマイナーセルフサービスソリューション

簡単なマイナーで、ユーザーに価値を生み出します。ソフトウェア、システム、6G または 8G、A カー...

シンガポール通貨庁​​は、決済分野の規制枠組みを統一し、ビットコインの開発を承認する計画だ。

現在、決済分野はイノベーションの段階にあります。しかし、どんなに斬新なアイデアであっても、将来の発展...

暗号通貨界の次の強気相場の礎

弱気相場が始まって以来、「リアルワールドアセット(RWA)」という用語がますます一般的になってきまし...

鉱業の簡単な歴史

ブロックチェーンの分野では、「マイニング」は非常に一般的な用語です。 「ビットコインは採掘によって生...

韓国の取引所がブロックチェーン分野に参入し、ブロックチェーン取引システムを開発

コリアタイムズの報道によると、韓国取引所(KRX)は店頭取引用のブロックチェーン取引システムを開発し...

合法化によりオーストラリアでビットコインが急速に発展し、金銀ディーラーがビットコインの取引を開始

オーストラリアのクイーンズランド州の金地金商人ポール・エンゲマン氏は、オーストラリア連邦政府がビット...

TokenInsight: NDRCの採掘禁止に関する新規則は、洪水期の水力採掘に大きな影響を与えるだろう

政策が厳しくなっても、鉱業は依然として良いビジネスなのでしょうか?電力制限の条件下で、どのマイニング...

RSL コイン - 現在、ソロマイニングと CPU マイニング用の新しいアルゴリズムを備えた新しい仮想通貨です。

RSL コインは現在、新しい CPU マイニング アルゴリズムを備えた新しい仮想通貨である Sol...

DeFi で遊んで投資を多様化しましょう。人気のDeFiインデックスを1つの記事で学ぶ

誰でも、ETF や投資信託などのインデックスに資金を配分して、多様な資産ポートフォリオに投資し、より...