#author("2018-01-06T12:59:28+09:00","","")
#author("2018-01-06T13:00:12+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]]を使ったサンプルとなります。};
[[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]]を使用してオンラインのサーバ一覧を取得します。
+ [[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)



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS