[blockchain問題点][5] ブロックヘッダ

投稿者: | 11/21/2022

構造をみると一目瞭然。ブロックヘッダは80バイトでぴったりになっております。

ここで、比較対象としてファイルシステムを取り上げます。ファイルシステムは複雑な構造体を包含して開発されており、将来の仕様変更に備え各構造体に「予約パディング」と呼ばれる予約メンバが大量に存在いたします。いわゆるreservedという名前のメンバです。

普段、私たちが意識することなくファイルやフォルダを行き来できるのは、このような仕組みの上で成り立っております。

ファイルシステムは仕様変更が多く、その度に管理するメンバが増加いたします。ところで、メンバを増加させたとき、構造体のサイズが変わってしまうと不都合が生じる場合があります。
なぜなら、ファイルシステムは構造体をドライブに直接書き込むため、サイズが変更されると境界が合わなくなって互換性を失います。
ファイルシステムをアップグレードする度に全データをコピーし直す。そんな状態になります。
それでは運用上致命的なので、reservedであらかじめサイズを確保しておくやり方が一般的です。

ここで、ブロックチェーンのブロックヘッダは80バイトでぴったりです。そして、PoWを含む全コンセンサスでこのヘッダのハッシュを取得します。すなわち1バイトでもサイズが変わってしまうとハッシュが変わって全ブロックと同期できなくなります。

ここから仕様変更となると、ブロック高で場合分けするような構造になってしまいます。
ところが、そこに互換性がないので、それをやると古いままのウォレットが異なるハッシュを出すような流れに陥り、枝分かれが多数発生する、そんな感じになります。
もちろん自動の投票制度が組み込まれており、それが満たされたのなら有効化になるという手段もありますが、これは「補助的な機能の追加」ではなく「主要かつ絶対的な心臓部の変更」ですので、取り残されたノードでトラブルになるのが確実となります。