仮想通貨NEM catapult Blockデータが収められたファイルの中身を見てみる1

ブロックデータが記録される、`.dat`ファイルの中身を読んでみる。何かを調べる時に生のデータが欲しくなるときも出てくると思う。事前に調べた限りだと、

- Block生データ
- EntityHash
- GenerationHash
- txCount
- [txEntityHash,MerkleComponentHash] * txCount分

が書かれているはず。以下がブロックデータ。**今回は、トランザクションが無い場合を読んでいく。**

```
935d0a6388:/tmp/catapult-server/_build/data/00000# xxd 00002.dat

00000000: c000 0000 addb 1df5 7ee2 0e94 b43b a09b  ........~....;..
00000010: 2789 689b e51d c80f 3f35 57cb 7973 d1fb  '.h.....?5W.ys..
00000020: 7107 ef32 a7f5 810d 3a0c 554d 5d8a 8dfa  q..2....:.UM]...
00000030: b0e9 5e6e f153 7ce1 aafe 6228 2d8a 6186  ..^n.S|...b(-.a.
00000040: 627c 260d f592 4014 1852 736b c2a2 3832  b|&...@..Rsk..82
00000050: 833e b211 4ce0 37b0 0662 17e0 9207 ddfe  .>..L.7..b......
00000060: a0e0 8478 0390 4381 0200 0000 0000 0000  ...x..C.........
00000070: 141e 9dd5 1200 0000 0040 7a10 f35a 0000  .........@z..Z..
00000080: 9050 e352 bb5b f321 522a 7067 b78c 87c3  .P.R.[.!R*pg....
00000090: c3cd 5c7c 7fbc 1c96 fae8 2f6d 7397 4452  ..\|....../ms.DR
000000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000c0: b2a8 9493 7a2a eb63 8291 b412 4136 f8c0  ....z*.c....A6..
000000d0: 5ce8 899d 297f 67a2 dd55 8ff2 60d7 8438  \...).g..U..`..8
000000e0: 44c8 ac55 cf72 0b89 6c7c 1789 c774 7d61  D..U.r..l|...t}a
000000f0: f4a5 1670 f98f ddbb 7d36 09fe 1728 3580  ...p....}6...(5.
00000100: 0000 0000                                ....
```

つぎに、`hashes.dat`の中身、nemesisBlockと、その次のBlock(00002の内容)のところだけ。

```
root@2f935d0a6388:/tmp/catapult-server/_build/data/00000# xxd ./hashes.dat

// ここはNemesisBlockを生成した時に入れた適当な64byteのうちの前半32byte
00000000: 3030 3030 3030 3030 3030 3030 3030 3030  0000000000000000
00000010: 3030 3030 3030 3030 3030 3030 3030 3030  0000000000000000

// ここからがnemesisBlock
00000020: 9050 e352 bb5b f321 522a 7067 b78c 87c3  .P.R.[.!R*pg....
00000030: c3cd 5c7c 7fbc 1c96 fae8 2f6d 7397 4452  ..\|....../ms.DR

// ここが00002Block
00000040: b2a8 9493 7a2a eb63 8291 b412 4136 f8c0  ....z*.c....A6..
00000050: 5ce8 899d 297f 67a2 dd55 8ff2 60d7 8438  \...).g..U..`..8
```

以下、`00002.dat`の中身を、各セクションに分けて読んでいく。以下全てリトルエンディアンである。

### Blockdata

**BlockSize(4byte) = 192byte(このデータを含む)**

```
c000 0000
```

**Sigunature(64byte)**

```
addb 1df5 7ee2 0e94 b43b a09b 2789 689b
e51d c80f 3f35 57cb 7973 d1fb 7107 ef32
a7f5 810d 3a0c 554d 5d8a 8dfa b0e9 5e6e
f153 7ce1 aafe 6228 2d8a 6186 627c 260d
```

**PublicKeyOfSigner(32byte)**

```
f592 4014 1852 736b c2a2 3832 833e b211
4ce0 37b0 0662 17e0 9207 ddfe a0e0 8478
```

**version(uint16)**

```
0390
```

**EntityType(uint16)**

```
4381
```

**BlockHeight(uint64)**

```
0200 0000 0000 0000
```

**BlockTimestamp(uint64)**

```
141e 9dd5 1200 0000
```

**Difficulty(uint64)**

```
0040 7a10 f35a 0000
```

**PreviousBlockHash(32byte)**

```
9050 e352 bb5b f321 522a 7067 b78c 87c3
c3cd 5c7c 7fbc 1c96fae8 2f6d 7397 4452
```

**BlockTransactionHash(32byte)**

```
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
```

※Blockデータはここまで。今回はトランザクションが無いのでここで終わるが、トランザクションが含まれる場合は、トランザクションの生データがこの下に続く。

### Entityhash

```
b2a8 9493 7a2a eb63 8291 b412 4136 f8c0
5ce8 899d 297f 67a2 dd55 8ff2 60d7 8438
```

### GenerationHash

```
44c8 ac55 cf72 0b89 6c7c 1789 c774 7d61
f4a5 1670 f98f ddbb 7d36 09fe 1728 3580
```

### TxCount

```
0000 0000
```