nem catapult バイトレベルで理解する その５ SecretLock/Proof Transaction

# 前提

- nem2-sdk 0.9.4
- rxjs 6.2.1

超絶端折りモード

# 環境

Alpaca版

# SecretLock
## 結果

| 項目 | サイズ | 意味 |
|:---:|:---:|:---:|:---:|
| サイズ | 4byte(LE) | トランザクションサイズ |
| 署名 | 64byte | トランザクションへの署名 |
| 公開鍵 | 32byte | 署名者の公開鍵 |
| version | 2byte(LE) | `0390` |
| type | 2byte(LE) | `4C42` |
| fee(l) | 4byte(LE) | 手数料 |
| fee(h) | 4byte(LE) | 手数料 |
| deadline(l) | 4byte(LE) | 期限 |
| deadline(h) | 4byte(LE) | 期限 |
| mosaic id(l) | 4byte(LE) | モザイク |
| mosaic id(h) | 4byte(LE) | モザイク |
| amount(l) | 4byte(LE) | モザイク数量 |
| amount(h) | 4byte(LE) | モザイク数量 |
| duration(l) | 4byte(LE) | 有効期間ブロック数 |
| duration(h) | 4byte(LE) | 有効期間ブロック数 |
| hashAlgorithm | 1byte | ハッシュアルゴリズム |
| secret | 64byte? | シークレット |
| 受取人 | 25byte | 受取人 |

## 調査


```javascript
const account = Account.createFromPrivateKey('7808B5B53ECF24E40BE17B8EC3D0EB5F7C3F3D938E0D95A415F855AD4C27B2A4', NetworkType.MIJIN_TEST);
const recipient = Address.createFromRawAddress('SB2Y5ND4FDLBIO5KHXTKRWODDG2QHIN73DTYT2PC');
const tx1 = SecretLockTransaction.create(
    Deadline.create(),
    new Mosaic(new MosaicId('nem:xem'), UInt64.fromUint(100000000)),
    UInt64.fromUint(60),
    HashType.SHA3_512,
    secret,
    recipient,
    NetworkType.MIJIN_TEST
);
const tx1Signed = account.sign(tx1);
```


```
proof            : e5adb5477158dc6eb1d4
secret           : 6C750493D886EF0E6C28F5170AF6D95FB369365FD22A4D1ABFB4B1EFF658B62C05B0DF988193DB93BAE12A224AA8B2CD74B0AAF0C5D00DCEC2EB3A1ECD02B82C
tx1Signed.hash   : 0BAEA6CC16458A879A5F35B67F2D0887E9BA231AC41615542994B7AEAF5B3695
tx1Signed.signer : 5D9513282B65A12A1B68DCB67DB64245721F7AE7822BE441FE813173803C512C
tx1Signed.payload: EA000000E6F041760011EF8A65ED3297EF4FE14D88AC100FD66498AC6DF6E08A756F06381AC519ED6C2EC22066E4AA17D33309E94A647927F6982D9C89164D63978DEB045D9513282B65A12A1B68DCB67DB64245721F7AE7822BE441FE813173803C512C03904C42000000000000000029315A571300000029CF5FD941AD25D500E1F505000000003C00000000000000006C750493D886EF0E6C28F5170AF6D95FB369365FD22A4D1ABFB4B1EFF658B62C05B0DF988193DB93BAE12A224AA8B2CD74B0AAF0C5D00DCEC2EB3A1ECD02B82C90758EB47C28D6143BAA3DE6A8D9C319B503A1BFD8E789E9E2

```


| 項目 | データ |
|:---:|:---:|
| サイズ | EA000000 |
| 署名 | E6F04176 0011EF8A 65ED3297 EF4FE14D 88AC100F D66498AC 6DF6E08A 756F0638 1AC519ED 6C2EC220 66E4AA17 D33309E9 4A647927 F6982D9C 89164D63 978DEB04 |
| 公開鍵 | 5D951328 2B65A12A 1B68DCB6 7DB64245 721F7AE7 822BE441 FE813173 803C512C  |
| version | 0390 |
| type | 4C42 |
| fee(l) | 00000000 | 
| fee(h) | 00000000 |
| deadline(l) | 29315A57 |
| deadline(h) | 13000000 |
| mosaic id(l) | 29CF5FD9 |
| mosaic id(h) | 41AD25D5 |
| amount(l) | 00E1F505 |
| amount(h) | 00000000 |
| duration(l) | 3C000000 |
| duration(h) | 00000000 |
| hashAlgorithm | 00 |
| secret | 6C750493 D886EF0E 6C28F517 0AF6D95F B369365F D22A4D1A BFB4B1EF F658B62C 05B0DF98 8193DB93 BAE12A22 4AA8B2CD 74B0AAF0 C5D00DCE C2EB3A1E CD02B82C |
| 受取人 | 90758EB4 7C28D614 3BAA3DE6 A8D9C319 B503A1BF D8E789E9 E2 |

# SecretProof

## 結果

| 項目 | サイズ | 意味 |
|:---:|:---:|:---:|:---:|
| サイズ | 4byte(LE) | トランザクションサイズ |
| 署名 | 64byte | トランザクションへの署名 |
| 公開鍵 | 32byte | 署名者の公開鍵 |
| version | 2byte(LE) | `0390` |
| type | 2byte(LE) | `4C43` |
| fee(l) | 4byte(LE) | 手数料 |
| fee(h) | 4byte(LE) | 手数料 |
| deadline(l) | 4byte(LE) | 期限 |
| deadline(h) | 4byte(LE) | 期限 |
| hashAlgorithm | 1byte | ハッシュアルゴリズム |
| secret | 64byte? | シークレット |
| proof size | 2byte(LE) | プルーフのサイズ |
| proof | variable | プルーフ |

## 調査

```javascript
const account = Account.createFromPrivateKey('31B96EEB0C7FD6F8FB6B4ED09A9EB142A42B194AFBEB9EB52F0B79889F22326E', NetworkType.MIJIN_TEST);
const tx4 = SecretProofTransaction.create(
    Deadline.create(),
    HashType.SHA3_512,
    secret,
    proof,
    NetworkType.MIJIN_TEST
);
const tx4Signed = account.sign(tx4);
```


```
tx4Signed.hash   : 3FC4C117ED990892F0BA666615712ECE2A2B9CC3B328380ED72A0AFE4BCFE7B4
tx4Signed.signer : 3390BF02D2BB59C8722297FF998CE89183D0906E469873284C091A5CDC22FD57
tx4Signed.payload: C5000000663BA80DDA408D33DC495570064E8B194F4F3EA47B27FFB8C880B9CB271799D9E90EC6903B5C2498139F1CDC8BB2425B32C92AA8AABBB3FA0F31FDC6A790B6083390BF02D2BB59C8722297FF998CE89183D0906E469873284C091A5CDC22FD5703904C43000000000000000048ADD75713000000006C750493D886EF0E6C28F5170AF6D95FB369365FD22A4D1ABFB4B1EFF658B62C05B0DF988193DB93BAE12A224AA8B2CD74B0AAF0C5D00DCEC2EB3A1ECD02B82C0A00E5ADB5477158DC6EB1D4
```



| 項目 | データ |
|:---:|:---:|
| サイズ | C5000000 |
| 署名 | 663BA80D DA408D33 DC495570 064E8B19 4F4F3EA4 7B27FFB8 C880B9CB 271799D9 E90EC690 3B5C2498 139F1CDC 8BB2425B 32C92AA8 AABBB3FA 0F31FDC6 A790B608 |
| 公開鍵 | 3390BF02 D2BB59C8 722297FF 998CE891 83D0906E 46987328 4C091A5C DC22FD57 |
| version | 0390 |
| type | 4C43 |
| fee(l) | 00000000 | 
| fee(h) | 00000000 |
| deadline(l) | 48ADD757 |
| deadline(h) | 13000000 |
| hashAlgorithm | 00 |
| secret | 6C750493 D886EF0E 6C28F517 0AF6D95F B369365F D22A4D1A BFB4B1EF F658B62C 05B0DF98 8193DB93 BAE12A22 4AA8B2CD 74B0AAF0 C5D00DCE C2EB3A1E CD02B82C |
| proof size | 0A00 |
| proof | E5ADB547 7158DC6E B1D4 |

# 関連

nem catapult バイトレベルで理解する その１ トランザクションハッシュ
https://qiita.com/planethouki/items/d7a7fc7adf8c8bc48668

nem catapult バイトレベルで理解する その２ TransferTransaction
https://qiita.com/planethouki/items/025d44f2ebe6cfcb4b1f

nem catapult バイトレベルで理解する その３ トランザクション署名
https://qiita.com/planethouki/items/932d96ee17bd4f305368

nem catapult バイトレベルで理解する その４ Cosignature Transaction
https://qiita.com/planethouki/items/fcac3c9d329b0278c4b7

nem catapult バイトレベルで理解する その５ SecretLock/Proof Transaction
https://qiita.com/planethouki/items/4c91c2e6c722283c50f1

nem catapult バイトレベルで理解する その６ 空ブロック
https://qiita.com/planethouki/items/da717595a1ff58d0d84f