#author("2018-01-06T12:59:28+09:00","","") #navi(../) * NEX(XEM)のスーパーノード一覧を取得するサンプルコード(PHP) [#y0ebf23d] NEM(XEM)のスーパーノードの一覧を取得するサンプルコードを以下に記します。~ [[NEM NodeExplorer>https://nodeexplorer.com]]の[[API>https://nodeexplorer.com/api]]のみで良さそうな気がしますが、~ [[Complete neighborhood API>https://nemproject.github.io/#complete-neighborhood]]を使ったサンプルとなります。}; 以下にPHPによるサンプルコードおよび実行結果を記します。 #contents #htmlinsert(cc-top.html) * 参考サイト [#s06dcd2a] -[[NEM APIマニュアル 5.2.1.完全な近辺>https://www.pr1sm.com/crypto-coin/nem-nis-api-documentation-in-japanese/#complete-neighborhood]] * NEM(XEM)の取引ができる日本の取引所 [#b5639fc6] - &htmlinsert(zaif.html); - &htmlinsert(coincheck.html); * サンプルコード(PHP) [#ac016908] スーパーノードの一覧を取得するサンプルコードについて以下に記します。 ** 処理の概要 [#j0eea03c] サンプルコードの処理について記します。 + [NEM NodeExplorer>https://nodeexplorer.com/]]の[[API>https://nodeexplorer.com/api_openapi_version]]を使用してオンラインのサーバ一覧を取得します。 https://nodeexplorer.com/api_openapi_version #ref(01.png) #br + 取得したオンラインサーバに対し、Complete neighborhood APIを呼び出します。 +以下のようなJSON(Firefoxで表示)が返却されます。~ PHPサンプルコードでは、activeに格納されている一部情報のみ表示しています。~ 必要に応じてサンプルコードを修正してみてください。 #ref(02.png) ** サンプルコード [#xdafdc9c] #ref(supernodes.php) <?php // API: Complete neighborhood // https://nemproject.github.io/#complete-neighborhood // NodeExplorer.com JSON API! // https://nodeexplorer.com/api // List all online server with open API and latest version $OPEN_API_NODE_URL="https://nodeexplorer.com/api_openapi_version"; // Complete neighborhood API $COMPLETE_NEIGHBORHOOD = "/node/peer-list/all"; // Get online server with open API an latest version nodes @ nodeexplorer.com $res = request($OPEN_API_NODE_URL); if ($res == FALSE) { die(1); } foreach($res["nodes"] as $node) { // Call complete neighborhood API : <REQUEST NODE>:7890/node/peer-list/all $COMPLETE_NEIGHBORHOOD_URL = "http://" . $node . $COMPLETE_NEIGHBORHOOD; $nodes = request($COMPLETE_NEIGHBORHOOD_URL); if ($nodes != FALSE) { break; } } if ($nodes == FALSE) { die(1); } $inactive = $nodes["inactive"]; $failure = $nodes["failure"]; $busy = $nodes["busy"]; $active = $nodes["active"]; //show_sn_info($inactive); //show_sn_info($failure); //show_sn_info($busy); show_sn_info($active); exit(0); //----------------------------------------------------------- // functions //----------------------------------------------------------- function request($url) { $curl = curl_init(); if ($curl == FALSE) { fputs(STDERR, "[ERR] curl_init(): " . curl_error($curl) . PHP_EOL); return FALSE; } // curl set options curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); // call api $response = curl_exec($curl); if ($response == FALSE) { fputs(STDERR, "[ERR] curl_exec(): " . curl_error($curl) . PHP_EOL); return FALSE; } curl_close($curl); // json decode $res = json_decode($response, true); if ($res== NULL) { fputs(STDERR, "[ERR] json_decode(): " . json_last_error_msg() . PHP_EOL); return FALSE; } return $res; } function show_sn_info($nodes_info) { if (count($nodes_info) == 0) { return; } for ($i=0; $i<count($nodes_info); $i++) { $node = $nodes_info[$i]; $metaData = $node["metaData"]; $endpoint = $node["endpoint"]; $identity = $node["identity"]; printf("HOST: %s, VER: %s, NAME: %s" . PHP_EOL, $endpoint["host"], $metaData["version"], $identity["name"] ); } } * 実行例 [#dd66594a] 実行方法は以下のようになります。 php supernodes.php 以下、実行結果です。 $ php supernodes.php HOST: 202.5.19.142, VER: 0.6.93-BETA, NAME: any-b HOST: 160.16.177.197, VER: 0.6.93-BETA, NAME: Pro-27 HOST: 176.95.26.121, VER: 0.6.93-BETA, NAME: Rinda HOST: 150.95.213.212, VER: 0.6.93-BETA, NAME: suprenode.me HOST: nsm.supernode.me, VER: 0.6.93-BETA, NAME: NSM HOST: 188.166.32.83, VER: 0.6.93-BETA, NAME: x-ray.nemspace.com HOST: 139.59.240.10, VER: 0.6.93-BETA, NAME: mike.nemspace.com HOST: 209.126.98.204, VER: 0.6.95-BETA, NAME: Hi, I am Alice4 HOST: 162.243.227.155, VER: 0.6.93-BETA, NAME: Bitcoin.co.id HOST: 160.16.179.250, VER: 0.6.93-BETA, NAME: Pro-22 <省略> #ref(03.png) #br 以上、NEX(XEM)のスーパーノード一覧を取得するサンプルコードでした。 #htmlinsert(cc-btm.html)