Python3でNEMのAPIを叩く-008-[最終回]アカウントのトランザクションデータを取得する

#はじめに
前回→[こちら](https://qiita.com/oden_umai/items/12949c8b435ce137e44f)

今回はアカウントのトランザクションデータを取得するAPIを紹介します。
NanoWalletのダッシュボードに表示されているトランザクションデータのうち、最大25個のトランザクションの結果が返るようです。
本当に25個なのかまだ試せていないので、試す機会があれば記事を更新しようと思います。

NanoWalletでいうと、下図のトランザクションデータですね。
![スクリーンショット 2018-03-12 21.00.25.png](https://qiita-image-store.s3.amazonaws.com/0/242994/81cf8b43-d0c4-6656-4052-d90fe898477c.png)
※画像はNanoWallet ver2.1.2 mac版

モザイクの作成、ネームスペースの作成は含まれないようです。
どうやって取得するかまだ分かっていませんが、おいおい勉強していきます。

#使うAPI
/account/transfers/incoming を使います。
パラメータは以下の３つあるようですが、hashとidが難しいですね。どちらもオプションなので、今回は無視してaddressだけにパラメータを入れましょう。
- address：アカウントのアドレス。
- hash：トランザクションが返された256bitのsha3ハッシュ。
- id：トランザクションが返されるまでのトランザクションID。

>![スクリーンショット 2018-03-12 21.13.43.png](https://qiita-image-store.s3.amazonaws.com/0/242994/d8d0140c-6552-bb5f-ea0d-fef728246853.png)
>![スクリーンショット 2018-03-12 21.13.57.png](https://qiita-image-store.s3.amazonaws.com/0/242994/0722dbe5-9ef6-1c64-c86f-97426dfe968a.png)
>(解説：和訳)https://www.pr1sm.com/crypto-coin/nem-nis-api-documentation-in-japanese/#requesting-transaction-data-for-an-account

>![スクリーンショット 2018-03-12 21.13.02.png](https://qiita-image-store.s3.amazonaws.com/0/242994/4b4e3407-c165-7340-c83d-84b62d9360e2.png)
>(解説：本家)https://nemproject.github.io/#requesting-transaction-data-for-an-account

#サンプル
##コード
実行環境が無い方はpaizaで試せます。
https://paiza.io/ja

```python:Python3
import requests
import json

node = 'http://23.228.67.85:7890'
api = '/account/transfers/incoming'
parameter = 'address=TCJC5VFBIYF5TKEUS273XS7IXUKJ36I3JCJQ7WOH'
url = str(node + api + '?' + parameter)

r = requests.get(url).json()

print(json.dumps(r,indent=4))
```

##結果の例
```json:json
{
    "data": [
        {
            "transaction": {
                "signature": "5ad853f7c0ef067f037f23c1bc0b82e45b1cc68b53e02aca76d169c3d89abc3e68815b68ba8add39df636c52dbcc0d577b72bd55c20c68e37799fac5beaaad03",
                "message": {},
                "amount": 91000000,
                "fee": 1000000,
                "timeStamp": 93107763,
                "type": 257,
                "signer": "fa97f4fd052e40937180f72987189df429cc1f79996d439787cd13b76ff46caf",
                "recipient": "TCJC5VFBIYF5TKEUS273XS7IXUKJ36I3JCJQ7WOH",
                "version": -1744830463,
                "deadline": 93114963
            },
            "meta": {
                "height": 1370611,
                "innerHash": {},
                "id": 181942,
                "hash": {
                    "data": "b5251c210bbf5be14dd1f218ad11e2b3533e792f4fa62d39da3d5a09e03eb549"
                }
            }
        },
        {
            "transaction": {
                "signature": "36ef09878d87431c8721959abf82c2076a264959097387b88f6428608681c90ab116dd604bb85223397ec04451e335ad98a08db3b5e4c49f355cb9ac0f626d00",
                "message": {
                    "type": 1,
                    "payload": "31303030"
                },
                "amount": 102000000,
                "fee": 2000000,
                "timeStamp": 92663377,
                "type": 257,
                "signer": "fa97f4fd052e40937180f72987189df429cc1f79996d439787cd13b76ff46caf",
                "recipient": "TCJC5VFBIYF5TKEUS273XS7IXUKJ36I3JCJQ7WOH",
                "version": -1744830463,
                "deadline": 92670577
            },
            "meta": {
                "height": 1363267,
                "innerHash": {},
                "id": 180120,
                "hash": {
                    "data": "3abc95d2ff7151594918409605c3f498a79b238e51372659bec440938dca6103"
                }
            }
        }
    ]
}
```

##解説
APIを実行すると、トランザクションメタデータオブジェクト(TransactionMetaDataPair)が返ってきます。
>![スクリーンショット 2018-03-18 23.41.19.png](https://qiita-image-store.s3.amazonaws.com/0/242994/30a5b254-52d8-06ce-f8d5-87b164cb7b2a.png)
>(引用元)https://www.pr1sm.com/crypto-coin/nem-nis-api-documentation-in-japanese/#transactionMetaDataPair

結果の例では、累計2件のトランザクションが返ってきていますね。

metaデータとtransactionデータに分かれますが、transactionデータについて見ていきたいと思います。

|キー|内容|
|:--|:--|
|signature|トランザクション署名(マルチシグニチャトランザクションの一部である場合は失われます)。|
|message|オプションでトランザクションにメッセージを含めることができます。この場合トランザクションにはメッセージの下部構造が含まれます。そうでない場合、フィールドはnullです。|
|amount|送信者から受信者に転送されるマイクロNEMの量。||
|fee|トランザクションの手数料。料金が高ければ高いほど、トランザクションの優先順位は高くなります。高優先度のトランザクションは、優先度の低いトランザクションよりも前にブロックに含まれます。|
|timeStamp|ネメシスブロックの作成から経過した秒数。|
|type|トランザクションタイプ。|
|signer|トランザクションを作成したアカウントの公開鍵。| 
|recipient|受信者のアドレス。|
|version|構造のバージョン。|
|deadline|トランザクションの期限。deadlineは、ネメシスブロックの作成から経過した秒数で与えられます。締め切りに達する前にトランザクションがブロックに含まれない場合、トランザクションは削除されます。 |

#次回
これが最終回です。
秘密鍵を使用するプログラムは自分にはハードルが高かったので、主にデータを照会するAPIについて紹介してきました。
これ以外にあまり書くネタがなくなってきたため、これでいったん「Python3でNEMのAPIを叩く」シリーズは終了します。
自分の知識が増えて、何か共有できることがあればまた記事を書こうと思います。