#はじめに
前回まではNISサーバーの稼働状況についての確認でした。
今回は見慣れているウォレットのアカウントデータについて触れていこうと思います。
NEMはウォレットにアカウントを作成して、XEMやモザイクを入れることが出来ます。
その普段使っているアカウントのアドレスから、APIを叩いてアカウントデータを取得することが可能です。
具体的にはXEMの枚数とか、重要度とかを取得することが出来ます。
#使うAPI
/account/get を使います。
パラメータにはNEMのアドレスを入れます。
(解説:和訳)https://www.pr1sm.com/crypto-coin/nem-nis-api-documentation-in-japanese/#requesting-the-account-data
(解説:本家)https://nemproject.github.io/#requesting-the-account-data
#サンプル1:全データを表示
##コード
実行環境が無い方はpaizaで試せます。
https://paiza.io/ja
import requests
import json
node = 'http://104.128.226.60:7890' #テストネットのノードです
api = '/account/get'
parameter = 'address=TCJC5VFBIYF5TKEUS273XS7IXUKJ36I3JCJQ7WOH'
url = str(node + api + '?' + parameter)
r = requests.get(url).json()
print(json.dumps(r,indent=4))
##結果の例
アカウントメタデータペア(AccountMetaDataPair)というアカウント情報のJSONデータが取得できます。
{
"account": {
"harvestedBlocks": 0,
"publicKey": "756317d797f742b695cece76aa74ecd47305b48d5158c6dab44a48592de0325e",
"importance": 0.0,
"label": null,
"vestedBalance": 24378510,
"address": "TCJC5VFBIYF5TKEUS273XS7IXUKJ36I3JCJQ7WOH",
"multisigInfo": {},
"balance": 82700000
},
"meta": {
"cosignatories": [],
"status": "LOCKED",
"cosignatoryOf": [],
"remoteStatus": "INACTIVE"
}
}
NanoWalletと見比べるとわかりやすいと思います。
※画像はNanoWallet ver2.1.2 mac版
JSONデータは「"balance": 82700000」となっています。これは82.700000XEMという意味ですが、NanoWalletでも82.700000XEMとなっていますね。
全部の値が何を意味しているのかわからないので、解説はここまでにとどめますが、もっと詳しくなれば更新していこうと思います。
##解説
ここはURLを1行だと分かりにくいので、前回とは違い、ノードとAPIとパラメータ部分をそれぞれ変数に格納して+記号で文字連結しました。
テストネットのアドレス「TCJC5VFBIYF5TKEUS273XS7IXUKJ36I3JCJQ7WOH」のアカウントデータを「/account/get」のAPIで取得しています。
node = 'http://104.128.226.60:7890' #テストネットのノードです
api = '/account/get'
parameter = 'address=TCJC5VFBIYF5TKEUS273XS7IXUKJ36I3JCJQ7WOH'
url = str(node + api + '?' + parameter)
r = requests.get(url).json()
NISから受け取ったアカウントデータを表示していますが、json.dumps使ってスペーつ4つ分のインデントを付けて整形しています。
print(json.dumps(r,indent=4))
json.dumpsを使わず、インデントを付けないで表示するとどうなるか以下に例を出しました。1行にずらっと並んでいるので見た目分かりにくいですよね。
人間が見るときは分かりにくいのであって、コンピュータには関係ないので、プログラムで扱い場合はインデント等は付けなくて良いと思います。
{'account': {'balance': 82700000, 'multisigInfo': {}, 'harvestedBlocks': 0, 'vestedBalance': 24378510, 'label': None, 'importance': 0.0, 'address': 'TCJC5VFBIYF5TKEUS273XS7IXUKJ36I3JCJQ7WOH', 'publicKey': '756317d797f742b695cece76aa74ecd47305b48d5158c6dab44a48592de0325e'}, 'meta': {'status': 'LOCKED', 'cosignatories': [], 'cosignatoryOf': [], 'remoteStatus': 'INACTIVE'}}
#サンプル2:XEMの枚数を表示
##コード
実行環境が無い方はpaizaで試せます。
https://paiza.io/ja
import requests
import json
node = 'http://104.128.226.60:7890' #テストネットのノードです
api = '/account/get'
parameter = 'address=TCJC5VFBIYF5TKEUS273XS7IXUKJ36I3JCJQ7WOH'
url = str(node + api + '?' + parameter)
r = requests.get(url).json()
print(r['account']['balance'])
##結果の例
XEMの枚数が取得できます。
小数点が入っていないので、
82700000
が返ってきたとすれば
82.700000 XEM
という意味です。
##解説
「/account/get」を使って、アカウントメタデータペア(AccountMetaDataPair)というアカウント情報のJSONデータが取得しました。
そのJSONデータの中でも以下の2つに分かれます。
・account: アカウント情報(AccountInfo)
・meta: アカウントメタデータ(AccountMetaData)
XEMの枚数はaccountのbalanceにあるため、XEMの枚数取得は以下の書き方になります。
print(r['account']['balance'])
https://www.pr1sm.com/crypto-coin/nem-nis-api-documentation-in-japanese/#accountMetaDataPair
#結果の値について
以下に詳細が記述されています。
https://www.pr1sm.com/crypto-coin/nem-nis-api-documentation-in-japanese/#accountMetaDataPair
(数が多くてしばらくここの説明は空白にしておこう。。。)
##meta(アカウントメタデータ)
###status
###remoteStatus
###cosignatoryOf
###cosignatories
##account(アカウント情報)
###vestedBalance
###address
###importance
###publicKey
###harvestedBlocks
###multisigInfo
###balance
###label