NXTER.ORG

Programando en la Cripto-Plataforma Nxt #4: Datos históricos de los activos

Programando en la blockchain de Nxt #4: Datos históricos de los activos

En el tema anterior, te mostré cómo recuperar los datos básicos de los activos desde el Asset Exchange de Nxt.

En este artículo quiero tratar el tema de cómo recibir el histórico de las operaciones. La llamada a la API que usamos aquí es “getTrades”

Histórico de las operaciones

Las operaciones históricas pueden ser sobre cualquier cuenta o activo. Continuamos con el ejemplo anterior y vamos a obtener las últimas operaciones del activo SuperNET.

Una vez más, vamos a utilizar los parámetros firstIndex y lastIndex para recuperar solo las últimas 10 entradas. Una vez más, vamos a utilizar los parámetros firstIndex y lastIndex para recuperar solo las últimas 10 entradas.

Si desea obtener más operaciones, simplemente cambia lastIndex a un número más alto o borre completamente tanto firstIndex como lastIndex completely.

Si eliminas firstIndex y lastIndex es posible que obtenga un número limitado de entradas, lo que puede configurarse en tu archivo de configuración de Nxt. Echa un vistazo a la propiedad nxt.maxAPIRecords = 100 y ajústala a tus necesidades (sólo cuando estás trabajando sin una contraseña de administrador).

Ahora, volvamos de nuevo al código.

<!DOCTYPE html>
<html>
<head>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
</head>
<body>
  <div class="col-md-12">
    <h2>Trade History</h2>
    <table class="table table-striped">
      <thead>
        <tr>
          <th>Date</th>
          <th>Type</th>
          <th>Quantity</th>
          <th>Price</th>
          <th>Total</th>
          <th>Buyer</th>
          <th>Seller</th>
        </tr>
      </thead>
      <tbody id="tradeHistory">
      
      </tbody>
    </table>
  </div>
  <script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
  <!-- Latest compiled and minified JavaScript -->
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
  <script>
  
  $.getJSON('http://localhost:7876/nxt', {"requestType": "getTrades", "asset": "12071612744977229797", "firstIndex": 0, "lastIndex": 9, "includeAssetInfo": "true"}, function(request) {
        
    var trades = request.trades;
    var rows;
    var nxtTime = 1385294400;
    $.each(trades, function(key, data) {
      var decimals = data.decimals;
      var NQT_QNT = 8 - decimals;
      var quantityQNT = data.quantityQNT / Math.pow(10, decimals);
      var priceNQT = data.priceNQT / Math.pow(10, NQT_QNT);
      var total = data.quantityQNT * data.priceNQT / Math.pow(10,8);
      var NxtTimestamp = (+data.timestamp + +nxtTime) * 1000;
      var d = new Date(NxtTimestamp);
      rows += '<tr>';
        rows += '<td>'+d.toDateString()+'</td>';
        rows += '<td>'+data.tradeType+'</td>';
        rows += '<td>'+quantityQNT+'</td>';
        rows += '<td>'+priceNQT+'</td>';
        rows += '<td>'+total+'</td>';
        rows += '<td>'+data.buyerRS+'</td>';
        rows += '<td>'+data.sellerRS+'</td>';
      rows += '</tr>';
    });
    $("#tradeHistory").html(rows);
    
  });
      
  </script>
</body>
</html>

Para la solicitud de la API, como ya se ha indicado anteriormente, hemos limitado la respuesta a 10 entradas, mediante el establecimiento correspondiente de firstIndex y lastIndex. Además, la función includeAssetInfo, establecida como verdadera, mostrará el nombre y el decimal del activo. Esto, aparte de resultar de gran utilidad, hará que la llamada sea un poco más lenta, especialmente cuando estamos visualizando más de un activo.

En lugar de incluir includeAssetInfo podríamos hacer una llamada getAsset para recibir esos parámetros (podría ser recomendable cuando se está visualizando un activo), pero cuando estás mirando las últimas operaciones de una cuenta en lugar de un activo, esto puede ahorrar mucho tiempo y trabajo.

Los cálculos más importantes a mencionar para este script son: la marca de tiempo de Nxt, la cantidad y el precio. Todo se calcula como he explicado anteriormente.

Marca de tiempo (timestamp) de Nxt

Nxt tiene su propio timestamp. Nxt fue lanzado el 24 de Noviembre de 2013, a las 12:00h a.m. En Nxt este sería el timestamp 0. En Javascript sería el 1385294400 (puesto que Javascript empezó el 1 de Enero de 1970, a las 00:00:00), pero puesto JavaScript usa milisegundos, tenemos que multiplicarlo por 1000 para obtener el resultado. Así que al timestamp que nos propodrione Nxt debemos sumarle 1385294400 y añadir los milisegundos para obtener el timestamp en JavaScript.

El análisis de los datos históricos te proporcionará mucha información sobre la frecuencia de las operaciones y cuántas cuentas han estado negociando un activo. Cuanto más cuentas estén involucradas en el comercio, más extendido está el activo entre los compradores y vendedores, lo que generalmente es una buena señal. Por supuesto, tienes que ser consciente de que no sabes el origen de las cuentas. Es posible que una persona cree varias cuentas y haga múltiples transacciones con cada una de ellas. El activo parece tener más volumen del que realmente tiene, lo que parece beneficioso para el propietario del activo. Por otra parte, la gente podría crear varias cuentas para rastrear diferentes tipos de posesiones. En muchos casos, tiene sentido que un usuario tenga más de una cuenta.

El script anterior te mostrará una tabla como la que se muestra a continuación:

programming-nxt-4-1

Información de la cuenta

Como ya sabes, la blockchain es totalmente transparente; puedes ver cualquier transacción de la red y todas las posesiones de una cuenta en concreto. También te permite escribir mensajes cifrados, que no pueden ser leídos por nadie, excepto por aquel que tenga la contraseña del remitente o del destinatario.

El siguiente paso es descubrir cómo crear una interfaz agradable para ver las cuentas. Todos los pasos para conseguirlo se explican aquí.

La llamada a la API necesaria para obtener información de la cuenta es getAccount. También puedes utilizar getAccountAssets para monitorizar las tenencias de los activos, pero getAccount te mostrará todas las posesiones de una cuenta.

Una sugerencia: como en la API de getTrades, puedes decidir incluir más información con includeLessors, includeAssets, includeCurrencies or includeEffectiveBalance.

¡Disfrute programando con Nxt! En el siguiente artículo vamos a explorar la creación de transacciones y más detalles sobre la blockchain. Si tienes alguna pregunta, no dudes en ponerte en contacto conmigo a través del correo electrónico o de mi cuenta de Nxtforum.

Lea el siguiente artículo de esta serie>

Visite también: http://test.nxter.org/developers

Más artículos de esta serie:

Programando para Cripto-Plataforma Nxt #1: Configuración
Programando para Cripto-Plataforma Nxt #2: Primeras etapas
Programando para Cripto-Plataforma Nxt #3: Output desde el Intercambios de Activos

View this in: English Français

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.