用語集 / マイニングとコンセンサス
ブロックサイズ上限
別名はMaximum block sizeです。
- ブロックサイズ上限とは?
- ブロックサイズ上限とは、1つのビットコインのブロックが運べるデータ量の上限のことであり、SegWit以降、その上限はバイト数ではなく400万ウェイトユニットの予算という形になっています。
BIP-141で規定されています。
ブロックは需要に合わせて大きくなることはできません。これは意図的なものです。Bitcoin Coreはブロックを4,000,000ウェイトユニットに制限しており、この予算はウィットネスデータを割り引いて計算され、ウィットネスを多く含むブロックでは約4MB、旧式のトランザクションでは約1MBになります。この固定された供給量は、コインを動かすために支払う手数料を決める2つの要因の一方です。
仕組み
状況:一律の1,000,000バイトのルールは、2017年8月24日にSegWitがブロック481,824で有効化された時点で、拘束力のある制約ではなくなりました。このルールは、ブロックのうちウィットネス以外の部分の上限として下に残っていますが、何が収まるかを決める上限は、BIP141が定める4,000,000ウェイトユニットの予算です。
ブロックサイズ上限は、経済政策としてではなく緊急ブレーキとして始まりました。Satoshi Nakamotoは2010年に、文書も議論もなしに1,000,000バイトの定数を追加しました。悪意あるマイナーが、若いネットワークを巨大な1つのブロックで溢れさせ、すべての参加者がそれを永久に保存しなければならなくなるのを防ぐためでした。通常の需要がその上限に追いついたときに何が起きるべきかは、誰も書き残しませんでした。この沈黙こそ、後にこの数字をめぐる議論がこれほど激しくこじれた大きな理由の1つです。
BIP141は定数ではなく、計算方法を変えました。ウェイトは、基本データを3回、シリアライズ全体を1回数えるため、ウィットネス外の1バイトにつき4ユニット、ウィットネスの1バイトにつき1ユニットになります。これを4,000,000に制限すると、2つの上限が同時に導かれます。基本データは依然として1,000,000バイトを超えることはできず、その上に約3MBの署名データを載せることができます。2017年より前に書かれたソフトウェアは、ウィットネスを取り除いたシリアライズしか計測していなかったため、有効なブロックと見なし、異議を唱えませんでした。こうして容量はチェーンの分裂ではなくソフトフォークによって増えたのです。
ウェイトはルールブックにある唯一の上限ではありません。ブロックは80,000署名オペレーションを超えて消費することもできません。これは別個の予算で、小さなブロックの検証に不釣り合いな時間がかかるのを防ぎます。
どこで見られるか
実際のブロックは理論上の最大値を大きく下回ります。通常の支払いはウィットネスデータをほとんど含まないためです。混雑したブロックは通常、シリアライズすると1.5メガバイトを超え、インスクリプション形式のデータで満たされたトランザクションだけが4MBの極端な値に近づきます。ブロックエクスプローラーはサイズとウェイトを並べて表示し、この2つは設計上一致しません。ウェイトを4で割ると仮想バイトになり、ウォレットがsat/vBで手数料率を示すときに使う単位です。
この数字は、他の2つのコインが存在する理由でもあります。Bitcoin Cashは2017年8月1日にブロック478,558で8MBの上限を掲げて分離し、基本上限を2MBに倍増させるSegWit2x提案は、支持を得られず2017年11月8日に中止されました。どちらの出来事もブロックサイズ戦争に属します。より大きなブロックと第2層のどちらが成長を吸収すべきかをめぐる3年間の論争です。勝利した側は基本上限に手を付けず、圧力をライトニングネットワークへ移しました。
ブロックサイズ上限vsブロックウェイト
ブロックサイズ上限は問いであり、ブロックウェイトは今その答えを示す単位です。何メガバイト収まるかを問うと、数値ではなく範囲が出ます。答えはデータのどれだけがウィットネスに入るかによるためです。何ウェイトユニット収まるかを問うと、SegWitが有効化されて以降のすべてのブロックについて、4,000,000というただ1つの数値が出ます。これが、プロトコルの文書がサイズをまったく示さなくなった理由であり、上限は1MBだと今も説明している情報源が、2017年より前のビットコインを説明している理由です。