ビットコインの採掘はどのように行われるのか?
の中で 前のレッスンあなたはビットコインが何であるかを学んだ 鉱夫 つまり、新鮮なトランザクションを メモリープールを作成し、"採掘 "プロセスを開始する。 候補ブロック.
もし、今書いたことが外国語のように聞こえるのであれば、まずは ビットコイン・マイニング入門の最初のレッスン.
もしまだ私と一緒なら、候補ブロックを詳しく見てみよう...。
あなたが頭と体で2つの基本的な部分に分けられるように、ブロック候補も2つの部分に分けられる:
- ブロック ヘッダー (黄色エリア)
- ブロック ボディ (グレーゾーン)
候補ブロックをよく見てみると、実はトランザクションが含まれているだけではない。
採掘者が候補ブロックを作成する際には、"ブロックヘッダ「黄色い部分)。
ブロックの「本体」(グレーの部分) ホールド 取引
大量のトランザクションを含む候補ブロックのほかに、ブロックの「要約」を提供するメタデータも含まれている。
メタデータ は、他のデータに関する情報を提供するデータにすぎない。この場合、メタデータはブロックそのものに関する情報を提供する。この情報は「ブロックヘッダ」と呼ばれる。
インサイド ブロックヘッダいくつかのデータがある。
このレッスンでは、ブロック・ヘッダーの中身を単純化する。
タイムスタンプ
ブロックヘッダー内の最初のデータは"タイムスタンプ".
タイムスタンプはブロックがいつ作成されたかを示す。
前のブロック・ハッシュ
次のデータは "前のブロック "と呼ばれる。前のブロック・ハッシュ".
前のブロックのハッシュは ブロックチェーンの前のブロックのブロックハッシュ.
この意味を理解するためには、ファイルを見てみる必要がある。
さて、ファイルの内部を見てみると、データが特定の方法で構造化されていることがわかる。
これを ブロックチェーン
採掘者が作成した候補ブロックを追加しなければならない。 最新のブロックの上に.
で色づけされたブロックが最新のブロックだとしよう。 青.
以来 ブロックハッシュ で着色されたブロックの 青 がファイル(「ブロックチェーン」)内の最新のブロックである場合、それが採掘者が上に構築したいブロックとなる。
ブロックハッシュは カスタムID番号 ブロックの場合。
そこで、採掘者が行うのは、これを"前のブロック・ハッシュ"である。 候補ブロックのブロック・ヘッダー.
「取引概要」ハッシュ
次のデータは 「トランザクション・サマリー」ハッシュ
その名が示すように、ブロック内の全取引を文字列で表した「要約」を提供する。
詳細は省くが、何が起こるかというと、ブロック内のすべてのトランザクション(でハイライトされている。 赤)をハッシュ関数に入れ、一定の順序でハッシュ化すると、最終的に シングルハッシュ.
このハッシュは "Transaction Summary "ハッシュとして使用される。
このハッシュが提供するのは、ユニークな"フィンガープリント" ブロックに含まれるすべての取引に基づく。
これは取引を確実にするのに役立つ。 手を加えていない.
この "トランザクション・サマリー "ハッシュは、実際には"メルクル・ルート".
覚えておいてほしい、 データのわずかな変更でハッシュはまったく変わってしまう.つまり、将来誰かがブロック内のトランザクションを変更しようとした場合、"Transaction Summary "のハッシュが変更され、ブロックヘッダーにある元の値とはまったく異なるものになってしまうということです。
基本的に、トランザクションを変更すると、まったく異なる「フィンガープリント」が作成され、元の「フィンガープリント」とは一致しなくなる。
この変更により、ある取引が改ざんされたことを誰もが即座に知ることができるようになる。
ブロックハッシュ
ここまでで、ブロックヘッダーには3つのデータが含まれている:
- タイムスタンプ
- 前のブロック・ハッシュ
- 「取引概要」ハッシュ
次のステップは、このブロックヘッダーデータをハッシュ関数に入れることだ。
これは、"ブロックハッシュ".
(より正確な名称は「ブロック」だが ヘッダー ブロック全体ではなく、ブロックヘッダだけのハッシュだからだ)。
先に述べた前回のブロック・ハッシュと同様に、ブロック・ハッシュは、候補ブロックに割り当てられるカスタム生成のID番号と考えてください。
採掘者が自分のブロックをブロックチェーンに追加するには、次のことが必要です。 特定の条件を満たすブロックハッシュを見つける.
この要件を満たせない場合、そのブロックは有効とみなされず、マイナーはそのブロックをブロックチェーンに追加することができない。
具体的には、ブロック・ハッシュは ゼロから始まる数.
ゼロはいくつですか?
それは様々です。ビットコインシステムのソフトウェアによって 最小ゼロ数 ブロック・ハッシュが始まるべきもの。
当初は少数のゼロが必要だったが、参加するマイナーが増えるにつれて、ビットコインのソフトウェアはより多くのゼロを要求するようになった。
採掘者は、ビットコインのソフトウェアによって設定された出力閾値を満たす出力(「ブロックハッシュ」)を生成しなければならない。
この "しきい値 "は、ブロックハッシュがゼロから始まらなければならない数を指定するだけである。
リンボーダンスのようなものだ。
について しきい値を下げると、ゼロが増える が必要である。
について ゼロの数が多いほど難易度は高くなる 正しい」ブロックハッシュを見つける。
これは、先頭のゼロが多いほど、可能性のある解が少なくなり、正しいブロックハッシュを「見つける」ために必要な時間が長くなるからである。
のように3つのゼロで始まる値を見つける。000123...「のようにゼロが6つある値を探すよりずっと難しい。000000123..."
これは最近のものだ。 例 実際に有効なブロックハッシュの
0000000000000000000586b367c292dfd274bf2e67575cf8b4d00735fc1df6ff
ゼロの多さに注目してほしい。
この "ゼロの数 "は、いわゆる "ゼロの数 "に由来する。採掘難易度".この難易度は、ビットコインネットワークを実行するソフトウェアによって自動的に上下に調整される。難易度はマイナーの数によって変わります。採掘するコンピュータの数が多ければ多いほど、難易度は高くなり、最初に必要なゼロの数が増えるため、勝利のノンスを見つけるのが難しくなります。
ブロックハッシュは次のように解釈できる。 非常に多くのrであり、ある閾値以下でなければならない。このため、ブロック・ハッシュの先頭にはゼロが続き、その後に英数字の文字列が続く。先頭のゼロが20個もあるブロックもあれば、8個しかないブロックもある。必要なゼロの数は、そのブロックが公表された時点でのマイニングの難易度をおおよそ示している。
ブロックハッシュが必要な数のゼロで始まらなかったらどうなるのか?
そうなると、そのブロックはファイル(「ブロックチェーン」)に追加できない。
幸いなことに 採掘者は複数回試行できる.
しかし、ある採掘者が、タイムスタンプ、前のブロックのハッシュ、および "Transaction Summary "ハッシュを含むブロックヘッダだけを再度ハッシュ関数にかけたとする、 いつも同じ結果になる.
採掘者は、ブロックヘッダをハッシュしようとする前に、何らかの方法でデータを変更する必要がある。 また.
ビットコインはその方法を提供する!
ザ・ノンセ
ブロックヘッダーには、"ノンス"(水色のボックス)
がある。 ボック・ヘッダー 採掘者が任意の数を入力できる。
採掘者は自由に好きな数字を入れることができる。
nonceはブロック内のトランザクションとは完全に分離している。その唯一の目的は、マイナーに数字を入力させることである。 番号を変更する ブロックハッシュが、ある数のゼロから始まるという要件を満たしていない場合。
nonceを使用することで、採掘者はハッシュ関数の出力を操作し、目的の出力を「推測」することができる。
ブロックヘッダの他のデータは変更できないので、唯一変更できるデータは nonce だけである。
そのため、ブロックヘイダーの最初のハッシュ試行が失敗した場合、マイナーはnonceの値を変更する。
の組み合わせを見つけるようなものだと思えばいい。 コンビネーション南京錠。
ロックを解除する数字の組み合わせを見つけるのに、近道はない。ある時点で正しい組み合わせを見つけるまで、ありとあらゆる組み合わせを試さなければならない。 たまたま.
運が良くなるまで何度も何度も当てなければならない!
そして、それは非常に簡単で チェックが早い ロックの組み合わせが正しいものであれば(ロックが解除されるか解除されないか)、採掘者にとっても、その後他のノードにとっても、nonceが本当に正しいものであるかどうかをチェックするのは非常に簡単かつ迅速である。
鉱夫はまた 競り を他のマイナーに対抗する。有効なブロックハッシュとなるnonceを最初に見つけたマイナーには、そのブロックをブロックチェーンに追加する権利が与えられ、報酬が与えられる。
例えば、ブロック・ハッシュが以下のことを必要としているとしよう。 少なくとも4つのゼロで始まる.
必要な数の初期ゼロを持つブロックハッシュを見つける唯一の方法は、以下の通りです。 ランダムにnonce値を選ぶ で、ブロックヘッダをハッシュ関数に通す。
このシナリオでは、採掘者はnonce値として "0 "から始める(水色のボックス)。
それで望みの結果が得られなかった場合、ミンサーにできるのは再挑戦することだけだ を持つ。 違う ノンス.
採掘者はnonceを変更し、少なくとも必要最小限のゼロを含むブロックハッシュを見つけることができるまで、何度でもやり直す。この場合 ゼロ四つ.
わずかな調整しかしていないとしても、ハッシュ関数があることを忘れないでほしい、 ほんのわずかな変化でも、結果はまったく違ってくる.
そこで採掘者が最初に試みたのは、nonceに「0」を使用することであった。次にブロックヘッダをハッシュ関数に通し、ブロックハッシュが4つのゼロで始まるかどうかを確認する。
おわかりのように、ブロッホ・ハッシュは次のように始まる。 ゼロふたつ そのため、ブロックチェーンにブロックを追加するために必要な基準を満たしていない。
出力が有効でない場合、採掘者は異なるnonce値で試行を続ける。
0 "が機能しなかったので、採掘者はNonceの値を "0 "に変更できる。1"(水色のボックス)をクリックし、ブロックヘッダをもう一度ハッシュ関数に通す。
ご覧のように、ブロック・ハッシュは次のように始まります。 ゼロなし だから、これもうまくいかない。
1 "が機能しなかったので、採掘者はNonceの値を "1 "に変更できる。2"(水色のボックス)をクリックし、ブロックヘッダをもう一度ハッシュ関数に通す。
この場合、ブロック・ハッシュ 最後に4つのゼロで始まる を満たしている。
ブロックハッシュに成功した結果だ!
おわかりのように、どのnonceが正しいゼロ数のブロックハッシュを生成するかは予測不可能である。 正しい値を見つけるために、さまざまなnoncesを試し続ける.
採掘者は、正しいnonceを見つける保証がないまま、長期間採掘することができる。ほとんどの場合、見つかることはない!
nonceはカウンタとして使用され、その値は正しいブロックハッシュを見つけるか、他の採掘者が見つけるまで常にインクリメントされる。
数字当てゲームのようなものだ!
nonceの値を変えることで、あるゼロの数で始まるハッシュを見つけようとしているだけだ。
マイナーはこれを繰り返し......その結果、基準を満たすブロックハッシュが生成されることを期待する。
コンピュータの性能が高ければ高いほど、より多くの「推測」が可能になる。
この "推測 "のプロセスは 採掘.
勝利」した採掘者には、""と呼ばれる一定数のビットコイン(プラス取引手数料)が報酬として支払われる。ブロック報酬."
およそ1人のマイナーがブロック報酬を獲得 10分ごと.
ブロック報酬
マイナーは正しいノンスを「推測」し、ビットコインのブロックチェーン上でトランザクションを確認するために多くの時間とエネルギーを費やしているため、ビットコインのソフトウェアはその努力に対して報酬を与えている:
- 新規作成ビットコイン マイナーがトランザクションを確認すると、それらはブロックにまとめられ、ビットコインのブロックチェーンに追加される。ブロックチェーンに新しいブロックが追加されるごとに、新しいビットコインがマイナーに支払われる。これは ブロック補助金.具体的なビットコインの量は、ブロック作成時にプロトコルが決定する発行スケジュールに基づいている。現在、新規発行は1ブロックあたり6.25BTCで、2024年5月頃には1ブロックあたり3.125BTCに減少する予定です。
- 取引手数料。 人々はビットコインで取引を行う際、マイナーに手数料を支払い、彼らが取引を確認するようさらにインセンティブを与える。マイナーが取引の束を確認すると、個々の取引からすべての手数料も徴収される。
採掘は単調な作業の繰り返しだ:
nonceを含むブロックヘッダを取得し、それをハッシュし、ハッシュがある数のゼロから始まるかどうかを確認し、もしそうでなければ、別のnonceで処理を繰り返す。
考えただけで眠くなってきた。
だから、マイニングが「複雑な数学的問題を解くこと」だと読んだり聞いたりしたとき、それが正しい説明でないことがわかるだろう。
採掘に複雑なことは何もない! プロセス自体はとてもシンプルだ。あなたはただ いち早く正しい数字を当てる あるいは、あなたのブロック候補がブロックチェーンに追加されるように、正しい推測をする最初のマイナーになるのに十分な速さです。それだけだ!
"ハッシュレート はマイニングコンピュータの「推測力」を示します。1秒間に推測できるハッシュ数が多ければ多いほど、ハッシュレートは高くなります。例えば、1秒間に1兆(1,000,000,000)回の推測は、以下のハッシュレートに相当します。 1テラハッシュ (TH/s)。
プロセスが単純だからといって、簡単というわけではない。だから「採掘」と呼ばれるのだ。あなたは正しい数字を「掘り出そう」としているのであり、それは現実世界における実際の採掘と同じように、多くの努力を必要とする。
これで採掘者は、要件を満たす(少なくとも4つのゼロで始まる)ブロックハッシュを生成できるnonceを見つけたので、そのブロックは採掘者のファイルのコピー(「ブロックチェーン」)に追加される。
青いブロックが採掘者のブロックチェーンで最も新しいブロックだったことを覚えているだろうか?今は違う。
マイナーは正しいノンスを推測できたので、そのブロックをブロックチェーンに追加することができた(緑色で表示)。
つまり、大局的に見れば、採掘者のコンピュータ上のファイルが更新された(で示される)。 グリーン).
そして、ノードはこのブロックを直接接続している近くのノードに送信する。
ノードはこれをチェックし、検証し、ブロックヘッダが基準を満たすブロックハッシュを生成することを確認する。この場合、ブロックハッシュは4つのゼロから始まる必要がある。
これらのノードは、ファイルにブロックを追加することで、ファイル(「ブロックチェーン」)を更新する。
彼らのファイルは更新され、勝利した採掘者のものと同じバージョンになる(グリーン ファイル)。
この勝利ブロックの一部である、そのメンプール内のすべてのトランザクションは、"フレッシュ"(または "未確認")から"確定"ステータスとなり、ファイルに永久に追加される。
競合する取引は 閉め出し.
マイニングのプロセスのおかげで、紫色の取引だけがブロックチェーンに載る。
新しいブロックが過半数のマイナーに受け入れられると、すべてのマイナーがやり直し、まったく新しい候補ブロックを作成し、採掘プロセスが繰り返される。
鉱業は次のような役割を果たす。 トランザクションのソート・メカニズム ブロックチェーンに何が含まれるかは、「採掘された」ブロックが最終決定権を持つ。
この新しく作成されたブロックのブロックハッシュは、マイナーが候補ブロックの「前のブロックハッシュ」に使用することになる。
ブロックハッシュは"チェーン".
マイナーは前のブロックのブロックハッシュを 新しい ブロックができる。
例えば、ブロック101をマイニングするためには、マイナーはブロック100のハッシュを知る必要があるということだ。
まで ブロック101 が採掘された、 ブロック 102 は採掘できない。
このため、採掘者はブロック101に集中することになる。 ブロック100.どんな鉱夫も先を飛ばすことはできない。
しかし、各ブロックが「ブロック番号」を持つ代わりに、各ブロックは前のブロックを「ブロック番号」で参照する。 ボック・ハッシュ.
これは、すべてのブロックが互いにリンクしていることを意味し、これが"ブロックの連鎖「ブロックチェーンとして知られている。
この "ブロックの連鎖 "は、ブロック番号ではなく、次のようなものによって支えられている。 ブロックハッシュ.
ビットコインをごまかせない理由
全員がブロック101に取り組んでいるとしよう。
しかし、あるマイナーはブロック80の取引を変更したいと考えている。
の計算をすべてやり直す必要がある。 ブロック80-100とブロック101を行う.
それは 21ブロック 高価なコンピューティングの!
それだけでなく、鉱夫はそれをすべてやらなければならない。 ビットコインネットワーク上の他のマイナーが現在のブロックを終了する前に (ブロック101)に取り組んでいる。これは基本的に不可能だ。
すでにブロックチェーンの一部を形成している取引を改ざんすることは非常に難しい。
これは、ブロックチェーンが次のように説明されることを意味する。 不変.
プルーフ・オブ・ワーク(PoW)
採掘のプロセスはしばしば "採掘 "と呼ばれる。プルーフ・オブ・ワーク「あるいは ポウ.
PoWは"コンセンサス・メカニズム ビットコインは、すべてのノードがビットコインのブロックチェーンの「公式」コピーに合意するために使用する。これは、ビットコインがブロックチェーンの「公式な」コピーに合意する方法である。 コンセンサス 紛争解決や中央当局の介入を必要としない。
プルーフ・オブ・ワーク」とは、以下のような事実を指す。 それには "仕事 "が必要だ を使って、ある閾値以下のブロックハッシュを見つけることができる。そして一旦それが見つかれば、誰でもそれを検証することができ、それが「証明」となる。
nonceを推測」し、ブロックヘッダをハッシュ関数に通すというプロセスは、ブロックに対して必要な量の「作業」を行ったことを証明する方法として使われている。
最初に有効なハッシュを生成したマイナーは、ブロックチェーンに新しいブロックを追加することが許され、ビットコインの報酬を受け取る。
マイナーがビットコインネットワークに急増した場合、PoWは有効なブロックハッシュを見つけるのが難しくなるように調整される。この難易度の上昇によって多くのマイナーがやる気をなくし、採掘をやめた場合は、難易度を下げて採掘しやすくする。
このプロセスは 難易度調整これはおよそ2週間ごとに行われ、新しいブロックがブロックチェーンに追加されることを保証する。 およそ10分ごと何人のマイナー(採掘者)がネットワークに参加しようが脱退しようが。
難易度の調整は、マイナーが新しいブロックを作成するスピードに基づいて行われる。
採掘の難易度を調整することで、ビットコインは新しいビットコインを確実に生み出すことができる。 所定レートネットワークに参加しているコンピューティング・パワーの量に関係なく。
難易度調整が重要なのは、採掘者が採掘できないようにするためだ。 ビットコインの供給が早すぎる.
採掘に必要な特殊なコンピューター・ハードウェアと電力は、ネットワークを攻撃することが法外に難しいことを意味する。 高い.これによって セキュリティ そして 完全性 ビットコインのブロックチェーンの。
ネットワークを攻撃するのに十分な計算能力を持っている人は、正直に採掘してブロック報酬(新しいビットコインと取引手数料)を得る方がいい。
概要
おめでとう!ビットコインの「採掘」の仕組みがお分かりいただけたと思います!
- マイナーは、nonceを選択し、ハッシュ関数を実行し、出力をチェックすることによって、「ブロックハッシュ」となる許容可能なハッシュを探索する。
- ハッシュの先頭のゼロの量が適切でない場合、マイナーはnonceを変更し、ハッシュ関数を実行し、再度チェックする。
- ある採掘者が幸運にも機能するnonceを見つけて「勝利」すると、そのブロックはビットコインネットワーク内の他のノード(他の採掘者を含む)に送信され、各ノードは勝利した採掘者のnonceを使ってハッシュ関数を実行し、それが機能することを検証できる。
- 解決策が過半数のノードに受け入れられた場合、ブロックはブロックチェーンに追加され、勝利した採掘者はブロック報酬を得る。
- すべての採掘者は「リセット」し、最近採掘されたブロックのハッシュをブロックヘッダ(「前のブロックヘッダ」)の参照として使用して、新しい候補ブロックの作業を開始する。
- マイナーが正しいノンスを「推測」または見つけようとするこのプロセスは、「プルーフ・オブ・ワーク」(PoW)として知られている。
さて、マイナーとマイニングについて学んだところで、ビットコインのシステムマップを更新しよう: