1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Genesis ブロックの The Times の記事タイトルはどこに埋め込まれているか

Posted at

はじめに

Bitcoin の Genesis ブロックには The Times の下記のような記事タイトルが含まれている、というのは Bitcoin にある程度精通している人であれば有名な話かと思います。

The Times 03/Jan/2009 Chancellor on brink of second bailout for banks

それでは実際に該当のブロックのデータをブロックエクスプローラーで見に行ってみましょう

あれ、そのような文言は見つかりませんね。いったいブロックのどこに埋め込まれているのでしょうか。

結論

ブロック内にある Coinbase トランザクションに書き込まれている

解説

ブロックチェーンの仕組み

ブロックチェーンはブロックと呼ばれるデータ構造のものが連なっているものです。ブロックとはどのようなデータを持っているでしょうか。ブロックはメタデータが含まれる Block Headers と誰から誰にいくら送金されたかを含むn個のトランザクションで構成されています。ブロック内のトランザクション数は可変で合計1MB以下であればトランザクションをいくつでも含むことができます。

トランザクション

トランザクションにはインプットとアウトプットの2つが記述されています。インプットには送金元のアドレス(厳密にはUTXOのアドレス)が含まれており、アウトプットには送金先と送金額が記載されています。

Coinbase トランザクション

各ブロックには必ずトランザクションリストの先頭に Coinbase トランザクションというものが含まれています。これはビットコインのマイニングによって得られる、マイナーへの採掘報酬のトランザクションです。Genesis ブロック内には1つのトランザクションしか存在しておらず、それが Coinbase トランザクションになります。Coinbase トランザクションはマイナー自身が作成していて、トランザクションのインプットには下記表1のデータが含まれており、アウトプットには通常のトランザクションと同様にマイナーのアドレスと送金額が含まれています。

Size Field Description
32 bytes Transaction Hash All bits are zero: Not a transaction hash reference
4 bytes Output Index All bits are ones: 0xFFFFFFFF
1–9 bytes (VarInt) Coinbase Data Size Length of the coinbase data, from 2 to 100 bytes
Variable Coinbase Data Arbitrary data used for extra nonce and mining tags. In v2 blocks; must begin with block height
4 bytes Sequence Number Set to 0xFFFFFFFF

ここで注目するのは Coinbase Data フィールドで、ここにはマイナーが 100 バイトまで任意の値(今だと部分的に決まったフォーマットあり)を入れることができます。実際にジェネシスブロックにある Coinbase トランザクションの内容を https://www.blockchain.com/btc/tx/4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b で見てみましょう。Inputs にある Sigscript と呼ばれる下記値が Coinbase Data になります。

ffff001d
OP_4
5468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73

ffff001d というのは difficulty bits、 OP_4 というのはビットコインで使用されている Script ですがここでは説明を割愛します。546... のところの値を ASCII コードの値としてみて下記のように ASCII 文字に変換すると目的の記事タイトルが現れます。

$ echo '5468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73' | xxd -p -r
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks

以上のことから、ブロックチェーンのジェネシスブロック自体に書き込まれているのではなく、ジェネシスブロック内の Coinbase トランザクションの Coinbase Data に ASCII文字を16進数エンコードされた値が含まれている。というのが正確なところでしょうか。

  1. https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch10.asciidoc

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?