ブロックヘッダーの詳細
メニューを表示するにはスワイプしてください
ブロックヘッダーの詳細を探る前に、まずビッグエンディアン形式とリトルエンディアン形式の違いを理解する必要があります。
リトルエンディアンとビッグエンディアン
まず、エンディアンとは何かを理解する必要があります。
エンディアンとは、コンピュータのメモリ内でバイト(1バイトは8ビットに相当)が大きなデータ型内でどのような順序で配置されるかを指します。
ビッグエンディアン形式は、最上位バイトを最初に格納する方式であり、人間が通常数字を読む方法と一致しています。例として、10進数の234567890を使用し、Pythonで16進数および2進数に変換し、その結果を出力します。
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
コンピュータは整数をバイト単位で格納し、16進数2桁ごとに1バイトが対応するため、偶数桁が必要です。今回の数値の16進表現0xDFB38D2は7桁なので、左側にゼロ0を追加する必要があります。結果として得られる数値0x0DFB38D2は8桁(ちょうど4バイト)となり、値は同じです。
同様に、2進数は28ビットであり、8ビットごとに1バイトが対応するため、8で割り切れるビット数にするために左側にゼロ0を4つ追加します。結果として得られる数値0b00001101111110110011100011010010は32ビット(ちょうど4バイト)となり、値は同じです。
Pythonを使用してビッグエンディアン形式を得ており、手動で変換した場合も同じ結果になります。数値は次のようになります:
- 16進数:
0x0DFB38D2 - 2進数:
0b00001101111110110011100011010010
ビッグエンディアン形式を理解するために、以下の表を見てみましょう:
一方、リトルエンディアン形式は最下位バイトを最初に格納し、直感的な順序を逆にします。
ご覧のとおり、リトルエンディアン形式の数値は次のようになります。
-
16進数では
0xD238FB0D; -
2進数では
0b11010010001110001111101100001101。
ブロックヘッダーに戻る
まとめると、ヘッダーは正確に80バイトで構成され、6つのデータフィールドが含まれています。各フィールドはリトルエンディアン形式です。次に、 ブロック645536のヘッダーを見てみましょう:
ブロックヘッダーは正確に80バイトで構成されているため、ちょうど160個の16進数桁(各バイトは2つの16進数桁に対応)が存在します。例えば、versionフィールドは4バイトを占めるため、8つの16進数桁となります。
以下はエクスプローラーでのこのブロックの詳細情報です。
ここに示されているフィールドはビッグエンディアン形式で表示されています。例えば、bitsフィールドを確認し、ブロックヘッダー内での表現と比較します。その16進数表現はビッグエンディアン形式で0x171007eaです。
リトルエンディアン形式に変換すると、次のようになります。
ご覧のとおり、これはブロックヘッダーに含まれていた内容とまったく同じです。
1. ブロックチェーンやコンピュータシステムの文脈で、**「エンディアンネス」**とは何を指しますか?
2. ブロックの各構成要素とその定義を対応させてください。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください