NEM APIでは一度のAPIアクセスで最大25件しか履歴を検索することができません。
おそらくスーパーノードへの負荷を軽減するためだと思われます。
そのため、入出金履歴など25件検索したあと、さらに過去に遡って履歴を検索したい場合は再度APIにアクセスする必要があります。
具体的には入出金履歴などで取得できるmeta情報にid属性があるので、次にアクセスする時にその値を指定してあげることで、そのidよりも以前の入出金履歴を25件取得することができます。
追記:hash値でもさかのぼることができます(&hash= 指定)。idはノードごとに異なる値が割り当てられますが、meta->hash->data で取得できる値は全てのノードで共通ですので、用途によってはこちらの方がよいかもしれません。
fetch_transaction
var LAST_ID;
var ACCOUNT_TRANSFERS = "http://" + target_ip + "/account/transfers/all?address=";
$.ajax({url: ACCOUNT_TRANSFERS + address ,type: 'GET'}).done(function(res){parse_transfers(res)});
$('#transfers_more').click(function(){
$.ajax({url: ACCOUNT_TRANSFERS + address + "&id=" + LAST_ID,type: 'GET'}).done(function(res){parse_transfers(res)});
return false;
})
var parse_transfers = function(result){
var dataArray = result.data;
dataArray.forEach(function(val){
var meta = val.meta;
LAST_ID = meta.id;
var tran = val.transaction;
$( "#transfers tbody" ).append( "<tr>" +
"<td class='text-right'>" + tran.amount + "</td>" +
"</tr>" );
}
});
}
htmlは以下のような感じです。
transfer_list
<div class="transfers col-sm-4">
<h2>入出金履歴</h2>
<table id="transfers">
<thead>
<tr>
<th>金額</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<dl>
<dd><a id="transfers_more" href="javascript:void(0)" >さらに読み込む</a></dd>
</dl>
</div>
このような構成を取ることで、最初に25件を表示し、それ以降は”さらに読み込む”リンクをクリックすることで表示されるようになります。
具体的に動くプログラムはXEMBookに実装しているのでそちらのソースをご参考ください。
"address=" の後ろを各自のアドレスで指定してやることで、そのアカウントの履歴を参照することができます。またハーベストも同様に過去を遡ることができます。