このエントリーをはてなブックマークに追加


NEX(XEM)のスーパーノード一覧を取得するサンプルコード(PHP)

NEM(XEM)のスーパーノードの一覧を取得するサンプルコードを以下に記します。
NEM NodeExplorerAPIのみで良さそうな気がしますが、
Complete neighborhood APIを使ったサンプルとなります。

以下にPHPによるサンプルコードおよび実行結果を記します。


スポンサーリンク

参考サイト

NEM(XEM)の取引ができる日本の取引所

サンプルコード(PHP)

スーパーノードの一覧を取得するサンプルコードについて以下に記します。

処理の概要

サンプルコードの処理について記します。

  1. NEM NodeExplorerAPIを使用してオンラインのサーバ一覧を取得します。
    https://nodeexplorer.com/api_openapi_version
    01.png
     
  2. 取得したオンラインサーバに対し、Complete neighborhood APIを呼び出します。
  3. 以下のようなJSON(Firefoxで表示)が返却されます。
    PHPサンプルコードでは、activeに格納されている一部情報のみ表示しています。
    必要に応じてサンプルコードを修正してみてください。
    02.png

サンプルコード

<?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"]
        );
    }
}

実行例

実行方法は以下のようになります。

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
<省略>
03.png
 

以上、NEX(XEM)のスーパーノード一覧を取得するサンプルコードでした。


スポンサーリンク

添付ファイル: file01.png 15件 [詳細] file03.png 18件 [詳細] file02.png 16件 [詳細] filesupernodes.php 15件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-01-06 (土) 13:02:43 (338d)