ブロックの中身:ヘッダー、ブロック高、サイズ、補助金
ブロックは固定サイズの小さなヘッダーと取引の入ったボディでできています。ヘッダーの 6 つの項目、マイニングがハッシュする部分、ブロック高とサイズの意味。
ブロックは何でできているのですか?
ブロックにはヘッダーとボディの 2 つの部分があります。マイニングがハッシュするのはヘッダーだけです。
- ボディには取引が入っています。チェーンの混み具合によって、数百バイトのこともあれば数メガバイトのこともあります。
- ヘッダーはブロックの固定サイズの要約です。ほとんどのチェーンでちょうど 80 バイトです。
- マイニングはヘッダーだけをハッシュし、ほかは何もハッシュしません。
最後の点が、この記事でいちばん役に立つ事実です。マイナーは 1 秒に何十億通りもの組み合わせを試します。試すたびに取引でいっぱいのブロックをハッシュし直すなら、そんなことはできません。ハッシュし直すのは 80 バイトだけです。
ヘッダーの 6 つの項目とは何ですか?
ヘッダーには 6 つの項目があります。それぞれに役目があり、そのうち 2 つが仕事の大部分を担っています。
- バージョン。
- 前のブロックのハッシュ。
- マークルルート。すべての取引をまとめた 1 つのハッシュです。
- タイムスタンプ。
- 難易度ビット。
- nonce。マイナーが自由に変えられるカウンターです。
前のブロックのハッシュがあるから、チェーンになります。各ヘッダーは 1 つ前のブロックを指しています。古いブロックを書き換えると、そのハッシュが変わります。すると次のヘッダーが壊れ、その次も壊れ、先端まで続きます。この 1 つの項目が、プルーフ・オブ・ワークの安全性の根拠のすべてです。
マークルルートはボディのすべての取引をまとめています。取引を 1 バイトでも変えると、マークルルートが変わります。するとヘッダーが変わり、それまでに試したハッシュはすべて無駄になります。だから 80 バイトで、どんな大きさのブロックも正しく代表できるのです。
難易度ビットは、ハッシュがそれを下回らなければならない目標値を、短い形で表したものです。タイムスタンプはブロックが作られたおおよその時刻で、正確でなくてもかまいません。nonce はマイナーが自由に変えられる項目です。この自由があるから、そもそも探索ができるのです。
nonce を使い切ったらどうなりますか?
nonce は小さなカウンターです。最新のマイナーは、取りうる値をほぼ一瞬で使い切ります。それで行き詰まるわけではありません。nonce は最も変えやすいものにすぎず、変えられるのはそれだけではありません。
使い切ると、マイナーはヘッダーに入るほかの何かを変えます。
- タイムスタンプを動かせます。
- coinbase 取引(ブロックの最初の取引で、下で説明します)を少し変えられます。するとマークルルートが変わり、まったく新しいヘッダーを探索できます。
プールでは、そのためにエクストラ nonce があります。プールはマイナーごとに違う出発点を渡します。だから 2 人のマイナーが同じ数を試すことはありません。
ブロック高とは何ですか?
ブロック高とは、あるブロックの前にいくつのブロックがあるかです。最初のブロックであるジェネシスブロックの高さは 0 です。次が 1、と続きます。プールのブロックページやエクスプローラーで、各項目の横にある数字がこれです。
ブロック高は実はヘッダーに保存されていません。チェーンの中でブロックがどこにあるかで決まります。
最近のほとんどのチェーンでは、ブロック高が coinbase 取引にも書き込まれます。このルールは後から追加されたもので、高さの違う 2 つのブロックがバイト単位で同じになることを防ぎます。それでも、ブロックの高さの正式な答えはその位置です。
ブロック高は、承認数を数える自然な方法でもあります。6 ブロックの深さに埋まった取引は、先端から 6 つ下のブロックにあります。ブロックが 1 つ増えるたびに、それを書き換えるコストは高くなります。
ブロックサイズは何を測っているのですか?
ブロックサイズは、実質的にボディの大きさです。ヘッダーはそれに比べればごくわずかです。ブロックサイズの上限は、取引がいくつ入るかの話で、ヘッダーの話ではありません。
満杯のブロックも空のブロックも、必要なマイニングの作業はまったく同じです。難易度はブロックを見つける難しさを決めます。サイズはブロックが運ぶ量を決めます。この 2 つは無関係で、混同すると手数料について多くの誤解が生まれます。
サイズは手数料の市場には影響します。入りたい取引が入る量より多いと、高い手数料を出した取引が先に入ります。ブロック内の手数料の合計が増え、それがそのままブロックの支払いに加わります。
coinbase 取引とは何ですか?
どのブロックでも、最初の取引は特別です。送り手がいません。何もないところからコインを生み出し、ブロックを作った人に支払います。
これを coinbase 取引と呼びます。同じ名前の取引所とは関係ありません。
この取引がブロック報酬を支払います。報酬は 2 つの部分からなります。
- 補助金(サブシディ)、つまり新しく発行されるコインです。チェーンの発行スケジュールで決まり、ほとんどのコインで時間とともに減っていきます。
- ブロック内のほかのすべての取引の手数料です。ユーザーは取引を入れてもらうためにこれを付けます。
プールでは、coinbase はプールに支払われます。プールはその報酬を、そのラウンドでシェアを送った全員に分けます。これは回り道ではありません。分けられない 1 回の支払いとして届く報酬から、多くの人に支払うための仕組みです。
マイニング中にこれがなぜ大事なのですか?
ブロックの形がわかると、3 つのことが見えてきます。3 つともよく出てくる話です。
- 新しいブロックが出ると、あなたの作業は一瞬で価値を失います。前のブロックのハッシュが変わったので、探していたヘッダーはもう存在しません。その後に送ったものはステイルシェアになり、どれだけ速くても直せません。
- プールは新しい作業を頻繁に送ってきます。プールが入れたい新しい取引が増えるたびに、マークルルートが変わります。新しい作業ほど多くの手数料を含み、同じ努力でより多くの報酬になります。
- ブロックサイズは収益の見積もりには出てきません。収益を決めるのは難易度、補助金、手数料です。ボディのバイト数は関係ありません。
プールのブロックページには、各ブロックの高さ、報酬、見つかった時刻が表示されます。その行が、ここまでの話の役に立つ部分です。残りはエクスプローラーで見られ、そのブロックを支払った coinbase 取引も確認できます。