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

[前回](https://qiita.com/mincoshi/items/963703aa16fdc95214f9)の続き、今回はTxを含めた場合の`.dat`ファイルの中身を読んでいく。

今回はTransferTransactionが一つだけ入っているブロックのデータ。

# .datファイル全体

```
catapult-server /data/00000# xxd ./06349.dat
00000000: 6a01 0000 e5d4 be6f 0f80 77ba 0364 403b  j......o..w..d@;
00000010: 46d0 bc82 3792 2024 7b8a f0a4 683e 36aa  F...7. ${...h>6.
00000020: 7546 ccbd 56eb cc89 549b 8a8e 54b1 ef3e  uF..V...T...T..>
00000030: 2145 c4d0 bbf0 ccaa 860c c956 be73 103f  !E.........V.s.?
00000040: dce3 950d 9e09 679e d49d 143c be5b 6e9e  ......g....<.[n.
00000050: 99e8 ba7f 1caf 00f5 8f79 f964 4a4a a171  .........y.dJJ.q
00000060: 9b6c 8576 0390 4381 cd18 0000 0000 0000  .l.v..C.........
00000070: 64bd fc1d 1300 0000 00a0 724e 1809 0000  d.........rN....
00000080: e15c a6b6 ef78 a11b f3bb e5eb b9b7 8831  .\...x.........1
00000090: f959 5628 52bd c7a9 d482 69c2 d646 53b6  .YV(R.....i..FS.
000000a0: 09a7 7c43 c7fc f86f 5677 3648 a13f 3418  ..|C...oVw6H.?4.
000000b0: 3e77 d6e7 ee55 0439 b28b dd6f 4d45 1da2  >w...U.9...oME..
000000c0: aa00 0000 4948 d907 6ce5 cc33 e489 55ab  ....IH..l..3..U.
000000d0: 3c9a c72c 9f71 bb89 6638 bd17 ca6b 9abc  <..,.q..f8...k..
000000e0: 2773 3515 03a1 c575 2596 97f7 8f1e 3ed3  's5....u%.....>.
000000f0: b964 3b74 2bb1 3236 df15 c834 715d 4278  .d;t+.26...4q]Bx
00000100: 2d5e d20f ea2e 9d94 e0a3 a6ad 57c4 5c0e  -^..........W.\.
00000110: b30e c86c 0dda c864 f9b1 3864 3330 12cd  ...l...d..8d30..
00000120: 4dd1 0971 0390 5441 0000 0000 0000 0000  M..q..TA........
00000130: 687f 6a1e 1300 0000 9053 2e27 a776 56eb  h.j......S.'.vV.
00000140: 2256 fa92 853f 620b 7736 6b1f 2e00 1080  "V...?b.w6k.....
00000150: cc06 0001 0068 656c 6c6f 29cf 5fd9 41ad  .....hello)._.A.
00000160: 25d5 8096 9800 0000 0000 8ce5 b81c 46ea  %.............F.
00000170: a6c6 50f9 ce98 d02d a110 979b a728 01f2  ..P....-.....(..
00000180: 7c17 4cc6 abcc 67c1 6b68 3f6a 6496 db15  |.L...g.kh?jd...
00000190: a283 e4e4 9476 e57f 7bbf 65e7 54bd a507  .....v..{.e.T...
000001a0: a703 03af 4a60 1ef4 26d8 0100 0000 09a7  ....J`..&.......
000001b0: 7c43 c7fc f86f 5677 3648 a13f 3418 3e77  |C...oVw6H.?4.>w
000001c0: d6e7 ee55 0439 b28b dd6f 4d45 1da2 09a7  ...U.9...oME....
000001d0: 7c43 c7fc f86f 5677 3648 a13f 3418 3e77  |C...oVw6H.?4.>w
000001e0: d6e7 ee55 0439 b28b dd6f 4d45 1da2       ...U.9...oME..
```

# 詳しく読む

前回も書いたが、`.dat`ファイルの中身は下記のとおりになっている。

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

では読んでいく。


## BlockData

### region Block

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

```
6a01 0000
```

**Sigunature(64byte)**

```
e5d4 be6f 0f80 77ba 0364 403b 46d0 bc82
3792 2024 7b8a f0a4 683e 36aa 7546 ccbd
56eb cc89 549b 8a8e 54b1 ef3e 2145 c4d0
bbf0 ccaa 860c c956 be73 103f dce3 950d
```

**PublicKeyOfSigner(32byte)**

```
9e09 679e d49d 143c be5b 6e9e 99e8 ba7f
1caf 00f5 8f79 f964 4a4a a171 9b6c 8576
```

**version(uint16)**

```
0390
```

**EntityType(uint16)**

```
4381
```

**BlockHeight(uint64) = 6349**

```
cd18 0000 0000 0000
```

**BlockTimestamp(uint64)**

```
64bd fc1d 1300 0000
```

**Difficulty(uint64)**

```
00a0 724e 1809 0000
```

**PreviousBlockHash(32byte)**

```
e15c a6b6 ef78 a11b f3bb e5eb b9b7 8831
f959 5628 52bd c7a9 d482 69c2 d646 53b6
```

**BlockTransacitonHash(32byte)**

```
09a7 7c43 c7fc f86f 5677 3648 a13f 3418
3e77 d6e7 ee55 0439 b28b dd6f 4d45 1da2
```

### region Transaction-1

**TransactionSize(4byte) = 170byte(このデータ含む)**

```
aa00 0000
```

**Sigunature(64byte)**

```
4948 d907 6ce5 cc33 e489 55ab 3c9a c72c
9f71 bb89 6638 bd17 ca6b 9abc 2773 3515
03a1 c575 2596 97f7 8f1e 3ed3 b964 3b74
2bb1 3236 df15 c834 715d 4278 2d5e d20f
```

**PublicKeyOfSigner(32byte)**

```
ea2e 9d94 e0a3 a6ad 57c4 5c0e b30e c86c
0dda c864 f9b1 3864 3330 12cd 4dd1 0971
```

**version(uint16)**

```
0390
```

**EntityType(uint16)**

```
5441
```

**Fee(uint64)**

```
0000 0000 0000 0000
```

**DeadlineOfThisTransaction(uint64)**

```
687f 6a1e 1300 0000
```

**RecipientAddress(25byte)**

```
9053 2e27 a776 56eb 2256 fa92 853f 620b
7736 6b1f 2e00 1080 cc
```

**MessageSize(uint16) = 6byte**

```
0600
```

**MosaicCount(uint8)**

```
01
```

**Message(MosaicSize byte) = "hello"**

```
0068 656c 6c6f
```

**Mosaic1-MosaicID(uint64)**

```
29cf 5fd9 41ad 25d5
```

※ 29cf5fd941ad25d5 = xem のMosaicID

**Mosaic1-Amount(uint64) = 10,000,000**

```
8096 9800 0000 0000
```

### region Hashes

**EntityHash(32byte)**

```
8ce5 b81c 46ea a6c6 50f9 ce98 d02d a110
979b a728 01f2 7c17 4cc6 abcc 67c1 6b68
```

**GenerationHash(32byte)**

```
3f6a 6496 db15 a283 e4e4 9476 e57f 7bbf
65e7 54bd a507 a703 03af 4a60 1ef4 26d8
```

**TxCount(uint32)**

```
0100 0000
```

**Transaciton1-TxEntityHash(32byte)**

```
09a7 7c43 c7fc f86f 5677 3648 a13f 3418
3e77 d6e7 ee55 0439 b28b dd6f 4d45 1da2
```

**Transaciton1-MerkleComponentHash(32byte)**

```
09a7 7c43 c7fc f86f 5677 3648 a13f 3418
3e77 d6e7 ee55 0439 b28b dd6f 4d45 1da2
```

## BlockData

### region Block

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

```
6a01 0000
```

**Sigunature(64byte)**

```
e5d4 be6f 0f80 77ba 0364 403b 46d0 bc82
3792 2024 7b8a f0a4 683e 36aa 7546 ccbd
56eb cc89 549b 8a8e 54b1 ef3e 2145 c4d0
bbf0 ccaa 860c c956 be73 103f dce3 950d
```

**PublicKeyOfSigner(32byte)**

```
9e09 679e d49d 143c be5b 6e9e 99e8 ba7f
1caf 00f5 8f79 f964 4a4a a171 9b6c 8576
```

**version(uint16)**

```
0390
```

**EntityType(uint16)**

```
4381
```

**BlockHeight(uint64) = 6349**

```
cd18 0000 0000 0000
```

**BlockTimestamp(uint64)**

```
64bd fc1d 1300 0000
```

**Difficulty(uint64)**

```
00a0 724e 1809 0000
```

**PreviousBlockHash(32byte)**

```
e15c a6b6 ef78 a11b f3bb e5eb b9b7 8831
f959 5628 52bd c7a9 d482 69c2 d646 53b6
```

**BlockTransacitonHash(32byte)**

```
09a7 7c43 c7fc f86f 5677 3648 a13f 3418
3e77 d6e7 ee55 0439 b28b dd6f 4d45 1da2
```

### region Transaction-1

**TransactionSize(4byte) = 170byte(このデータ含む)**

```
aa00 0000
```

**Sigunature(64byte)**

```
4948 d907 6ce5 cc33 e489 55ab 3c9a c72c
9f71 bb89 6638 bd17 ca6b 9abc 2773 3515
03a1 c575 2596 97f7 8f1e 3ed3 b964 3b74
2bb1 3236 df15 c834 715d 4278 2d5e d20f
```

**PublicKeyOfSigner(32byte)**

```
ea2e 9d94 e0a3 a6ad 57c4 5c0e b30e c86c
0dda c864 f9b1 3864 3330 12cd 4dd1 0971
```

**version(uint16)**

```
0390
```

**EntityType(uint16)**

```
5441
```

**Fee(uint64)**

```
0000 0000 0000 0000
```

**DeadlineOfThisTransaction(uint64)**

```
687f 6a1e 1300 0000
```

**RecipientAddress(25byte)**

```
9053 2e27 a776 56eb 2256 fa92 853f 620b
7736 6b1f 2e00 1080 cc
```

**MessageSize(uint16) = 6byte**

```
0600
```

**MosaicCount(uint8)**

```
01
```

**Message(MosaicSize byte) = "hello"**

```
0068 656c 6c6f
```

**Mosaic1-MosaicID(uint64)**

```
29cf 5fd9 41ad 25d5
```

※ 29cf5fd941ad25d5 = xem のMosaicID

**Mosaic1-Amount(uint64) = 10,000,000**

```
8096 9800 0000 0000
```

_ここまでがBlockのデータになり、先頭からここまで、全部で362byte。_

### region Hashes

**EntityHash(32byte)**

```
8ce5 b81c 46ea a6c6 50f9 ce98 d02d a110
979b a728 01f2 7c17 4cc6 abcc 67c1 6b68
```

**GenerationHash(32byte)**

```
3f6a 6496 db15 a283 e4e4 9476 e57f 7bbf
65e7 54bd a507 a703 03af 4a60 1ef4 26d8
```

**TxCount(uint32)**

```
0100 0000
```

**Transaciton1-TxEntityHash(32byte)**

```
09a7 7c43 c7fc f86f 5677 3648 a13f 3418
3e77 d6e7 ee55 0439 b28b dd6f 4d45 1da2
```

**Transaciton1-MerkleComponentHash(32byte)**

```
09a7 7c43 c7fc f86f 5677 3648 a13f 3418
3e77 d6e7 ee55 0439 b28b dd6f 4d45 1da2
```