Symbol-cliを触ってみた3

# おはようございます。

昨日はよく眠れましたか？

その１
https://qiita.com/kazumasamatsumo/items/07bc4f02925b96820237

その２
https://qiita.com/kazumasamatsumo/items/0f61b20a49c2474bd682

今日もSymbol-cli触っていきます。

環境構築はその１で、アカウントの作成はその２です。

順番にしていけばできます。

ただしバージョンが異なるのは堪忍やで。

使用中のバージョン

https://github.com/nemtech/symbol-cli/blob/gh-pages/0.22.0.md#block

# Block

今日はblockのサブコマンドを実施します。

まずは

```
symbol-cli block
```

で何が出るかみましょう。

```
(base) ~% symbol-cli block

  USAGE

    symbol-cli block <subcommand>

  SUBCOMMANDS

    info     - Get block header by height                         
    receipts - Get the receipts triggered for a given block height
    search   - Search transactions                                

(base) ~% 
```

さてここの情報をみると
infoはブロックの情報
receiptsは指定されたブロック高に対してトリガーされたレシートを返します。
searchはトランザクションを探します。ということで実際に叩いてみましょう。


```
(base) ~% symbol-cli block info
✔ Enter the block height: … 79999

Block Header
┌─────────────────────────────────────────┬──────────────────────────────────────────────────────────────────┐
│ Property                                │ Value                                                            │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Record Id:                              │ 5F92DFFEF703500D5E5F1B60                                         │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Hash:                                   │ 1843B733D52EBF113719A877F1B17357394467BE5651D976A3C52AFDB5E3C516 │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Generation Hash:                        │ FF61D24C32290C1B808B43C240184D3C286E880E106C0D669E67D838123072E0 │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Total Fee:                              │ 0                                                                │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Number of Transactions:                 │ 0                                                                │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Number of Transactions (with embedded): │ 0                                                                │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Signature:                              │ DD3B1EF05AF2ADC2CDBF7D846377E3BC529C64ED90B731248DC96C67BCDC862A │
│                                         │ B61079AA3F2D52864023EC871C75106A1578BF0CC3A39C6644A39A6A28DBB200 │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Signer:                                 │ 35149D884E55A438D7E9D922A0F8185D1B27DC930E657C41C495D84B3A4FF315 │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Network Type:                           │ TEST_NET                                                         │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Version:                                │ 1                                                                │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Type:                                   │ 33091                                                            │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Height:                                 │ 79999                                                            │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Timestamp:                              │ 30030716757                                                      │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Difficulty:                             │ 16737018442386                                                   │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Fee Multiplier:                         │ 0                                                                │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Previous Block Hash:                    │ 83A2D9C176A3D3D3F7F114AC544C78DB59FADCCEE926A746639BDBA5B5FF856C │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Block Transactions Hash:                │ 0000000000000000000000000000000000000000000000000000000000000000 │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Block Receipts Hash:                    │ 8CD29BE8D1F3DD3F06D8C3C562D78E8AF6598AC15C67EBB385CA38DCFA7C4092 │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ State Hash:                             │ 50FF88A95E1AB02E742EC73BC9DBEA1D6FB5A2F808FA7A10836B0E142BE623CF │
├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Beneficiary Address                     │ TDXKCJ-5A7XHG-M3JEVN-4J57RD-DT5HXR-QGICMW-MMY                    │
└─────────────────────────────────────────┴──────────────────────────────────────────────────────────────────┘
(base) ~% 

```

まず

```
symbol-cli block info
```

を叩くと

```
(base) ~% symbol-cli block info
✔ Enter the block height: … 79999
```

ブロック高の入力を求められます。
ここは適当に79999と入力しただけです。

１とか2でもいいんじゃないんですか？

そうすると取得できたのは
1. Record Id
2. Hash
3. Generation Hash
4. Total Fee
5. Number of Transactions
6. Number of Transactions(with embedded)
7. Signature
8. Signer
9. Network Type
10. Version
11. Type
12. Height
13. Timestamp
14. Difficulty
15. Fee Multiplier
16. Previous Block Hash
17. Block Transaction Hash
18. Block Receipts Hash
19. State Hash
20. Beneficiary Address

の２０この項目が取得できました。
それぞれが何なのか？
調べてみました。

## Record Id

Daokaさんに確認

## Hash

ブロックチェーンの高さ。各ブロックは一意な高さを持っています。後ろに続くブロックとは 1 だけ高さが異なります。

## Generation Hash

バージョンの証明のハッシュ

## Total Fee

トータルの手数料

## Number of Transactions

トランザクションの順番?
ここは確認

## Number of Transactions(with embedded)

ここは確認

## Signature

署名者により生成されたエンティティの署名。

## Signer

署名者の公開鍵？
ここも確認

## Network Type

エンティティネットワーク
(MAIN_NET) パブリックネットワーク
(TEST_NET) パブリックテストネットワーク
(MIJIN) プライベートネットワーク
(MIJIN_TEST) プライベートテストネットワーク

## Version

構造体のバージョン

## Type

エンティティタイプ

## Height

ブロック高

## Timestamp

ネメシスブロックが生成されてから経過したミリ秒です。

## Difficulty

以前のブロックに基づき、新しいブロックを見つけるのがどのくらい難しいかを決定します。

## Fee Multiplier

手数料乗数はブロックのトランザクションに適用されます。

## Previous Block Hash

前ブロックのハッシュ

## Block Transaction Hash

ブロック内トランザクションのハッシュ

## Block Receipts Hash

このブロックによって生成されたレシートのハッシュ

## State Hash

このブロックでのグローバルチェーンステートのハッシュ

## Beneficiary Address

ハーベスタによって指定されたオプション受益者のアドレス。

と言った内容の情報が取得できました。

詳しくはこちら
https://docs.symbolplatform.com/ja/concepts/block.html


# search

```
symbol-cli block search
```

これを実施すると最新のブロックから10件情報を取得できます。


オプションは以下のようになります。

```
(base) ~% symbol-cli block search --help       

  Search transactions

  USAGE

    symbol-cli block search [...options]

  OPTIONS

    --profile <profile>                        - (Optional) Select between your profiles, by providing a profile name.       
    -o, --order <order>                        - (Optional): Sort entries. (Desc: Newer to older, Asc: Older to newer) [Desc]
    -n, --page-size <pageSize>                 - (Optional) Number of entries per page. [10]                                 
    -n, --page-number <pageNumber>             - (Optional) Filter by page number. [1]                                       
    -i, --offset <offset>                      - (Optional) Database entry id at which to start pagination.                  
    --signer-public-key <signerPublicKey>      - (Optional) Public key of the account signing the entity.                    
    --beneficiary-address <beneficiaryAddress> - (Optional) Filter by beneficiary address.                                   
    --order-by <orderBy>                       - (Optional) Order by (Id, Height). [Id]                                      

(base) ~% 
```

## --profile

プロファイルを指定してブロックを取得します

```
symbol-cli block search --profile kazumasa
```

これはそのプロファイルが関与しているブロックを取得できるみたいなイメージをしますが、
ここはこのプロファイルのジェネレーションハッシュのノードのブロック最新10件を取得できます。

## -o, --order

並び替えをします。
descとascのように並び替えることができます

```
(base) ~% symbol-cli block search --order desc          
⠋ Processing
ERR Order must be one of (Asc, Desc)
(base) ~% 

```

必ずDescとAscのように頭文字を大文字にしましょう。

```
symbol-cli block search --order Desk
```

降順（最新のブロックから10件）

```
symbol-cli block search --order Asc
```

昇順（最初のブロックから10件）

## --page-size

ブロックの取得件数を設定できます。
最低10件から

```
symbol-cli block search --page-size 15
```

これだと15件取得できます。

## --page-number

ここはページの番号を入力することでそのページを取得できます。10件のみ
正直なところこのオプションを使うことってあるんかな？となっている。

## --offset

ここはオプションに何を入れればいいのかわからない。

## --signer-public-key

証明者のパブリックキーを入力することでその署名者のブロックを取得できるはず。

## --beneficiary-address

ちょっと何言っているかわかりません

## --order-by 

並び替え

# receipts

ちょっとここの機能もそもそも確認