NXTER.ORG

Programando en la Cripto-Plataforma Nxt #5: Transacciones en la Blockchain de Nxt

Programando para Cripto-Plataforma Nxt #5: Transacciones en la Blockchain de Nxt

Blockchain de Nxt

La blockchain de Nxt es el corazón de Nxt. Todas las transacciones realizadas quedan registradas en la blockchain. El termino blockchain se refiere a una base de datos descentralizada que se guarda en tu ordenador. Para evitar el spam, por cada transacción tienes que pagar una tarifa en el token nativo, en nuestro caso es NXT ya que estamos usando su blockchain. En artículos anteriores he mostrado cómo configurar tu software Nxt así como a visualizar datos. Esta vez, escribiremos datos en la blockchain, empezando con un ejemplo simple. A lo largo del artículo quiero centrarme en las herramientas que puedes usar mientras creamos transacciones en Nxt.

Enviar Nxt

En lo que al código se refiere, crear una transacción en Nxt es muy similar a leer datos de blockchain. Hay algunos temas que tenemos que tratar antes de crear nuestra primera transacción. Para crear una transacción, primero necesitamos tener una cuenta Nxt y algunos NXT, a fin de pagar las cuotas de la blockchain. Por lo tanto, vamos a iniciar una sesión en Nxt y crearemos nuestra primera cuenta.

Crear una cuenta en Nxt

Para tener una cuenta Nxt que cuente con una gran seguridad, necesitas una contraseña fuerte. Trabajando con criptomonedas usamos el término passphrase en lugar de contraseña, esto significa fuerte entropía y, por tanto, debería ser más segura que una contraseña normal. Cuando estás utilizando el cliente oficial de Nxt, puedes utilizar la función implementada de confección de passphrases, la cual te proporcionará una frase de contraseña que contendrá 12 palabras.

Crea tu propia passphrase o frase de contraseña

También puedes crear tu propia frase de contraseña personalizada, pero asegúrate de que contiene suficientes caracteres y entropía. Para generar una frase de contraseña, se recomienda utilizar un software especializado como KeePass, LastPass, Dashlane o herramientas en línea como PasswordsGenerator.net or Fourmilab.ch.

Generador de frase de contraseña Nxt

Al ejecutar Nxt en http://localhost:7876 accederás al cliente. Haciendo clic en el enlace que dice

DON’T HAVE AN ACCOUNT? CLICK HERE TO CREATE ONE!

te llevará al generador de frases de contraseña. Después (o bien con tu propia frase de contraseña generada automáticamente), podrás iniciar la sesión en tu cuenta. Si todavía no tienes NXT, el método es muy rápido si ya posees otras criptomonedas como Bitcoin, Litecoin, Ethereum u otros. Puedes intercambiarlas a través Shapeshift o comprar tus monedas en otro intercambio y transferirlos a tu cartera.

En los pasos siguientes, usamos tu frase de contraseña para firmar y difundir transacciones. Tu contraseña también podría considerarse como tu clave privada (private key).

Crear la transacción

Una vez tenemos una passphrase segura, podemos adentrarnos en el código para crear una transacción de envío de NXT (send-NXT-Transaction). Enviamos 1 NXT a un destinatario, el cual se puede ver en el código, así como cambiarlo por otro destinatario. Inserta tu contraseña en el código siguiente y ejecútalo para crear la transacción.

<!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>Outgoing Transaction JSON</h2>
        
    <div class="well" style="word-wrap:break-word;" id="transactionJSON"></div>
    </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>
  
  $.post('http://localhost:7876/nxt', {"requestType": "sendMoney", "recipient": "NXT-5RB8-KJD3-BT3B-E2QWW", "amountNQT": "100000000", "secretPhrase": "YourPassphrase", "feeNQT": "0", "deadline": "800", "broadcast": false}, function(request) {
  
        var response = JSON.parse(request);
        $("#transactionJSON").html(JSON.stringify( response , null, 4));
  
      });
      
  </script>
</body>
</html>

Este script está generando una transacción sendMoney. Como puedes apreciar, hemos cambiado la función utilizada en los artículos anteriores $.getJSON por $.post. Cuando creamos las transacciones es necesario cambiar al formato POST en lugar de las solicitudes GET como con las funciones anteriores. Para hacer referencia a los detalles de la API, echa un vistazo a http://localhost:7876/test?requestType=sendMoney.

La salida que se ve en la página contiene información variada, la variable feeNQT se ha rellenado con la información correcta y puedes comprobar el coste de la transacción que has creado. Verás toda la transacción JSON que has insertado en formato JSON y recibirás la transacción transactionBytes. La transacciónBytes incorpora toda la información de la transacción que tienes en la transacciónJSON.

La transacción creada anteriormente todavía no se transmitirá a la red, porque establecemos “broadcast”: false en nuestro objeto. Al establecer esta función en true, la transacción será transmitida y te costará 1 NXT. Como puedes ver, no necesitamos muchas variables para crear nuestra primera transacción.

La receta para una transacción es:

requestType sendMoney
recipient Puedes usar el fotmato RS, por ejemplo, NXT-XXX-XXX-XXX-XXXX o el formato de cuenta numérico
amountNQT La cantidad que deseas enviar debe ser calculada en NQT, el número más pequeño de NXT (1 NXT / 10⁸ = 1 NQT)
secretPhrase Tu frase de contraseña secreta
feeNQT 0 si deseas que el servidor calcule la mínima tarifa de transacción para ti deadline Medido en minutos, cuando expira la transacción.
broadcast:false no emitirá y sólo creará la transacción. Establecer a true para que la transacción se transmita a otros pares y te sea aplicada la tarifa en NXT

Broadcast transaction

Ahora que sabemos cómo crear una transacción sendMoney que todavía no se ha difundido, podemos usar un script similar al anterior para difundir la transacción. Para hacerlo más comprensible estoy ampliacndo el script anterior con un botón que toma la transacción previamente creada y la transfiere a la red al pulsarlo. Efectivamente, al ejecutar el script, tienes tu primera cartera interactiva Nxt (pequeña, ¡todavía no segura!).

<!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>Outgoing Transaction JSON</h2>
        
    <div class="well" style="word-wrap:break-word;" id="transactionJSON"></div>
    <button class="btn btn-primary" id="submitTransaction">Submit this transaction</button>
   
    <hr>
    <div id="broadcastedTransaction"></div>
    </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>
  
  $.post('http://localhost:7876/nxt', {"requestType": "sendMoney", "recipient": "NXT-5RB8-KJD3-BT3B-E2QWW", "amountNQT": "100000000", "secretPhrase": "YourPassphrase", "feeNQT": "0", "deadline": "800", "broadcast": false}, function(request) {
  
        var response = JSON.parse(request);
        $("#transactionJSON").html(JSON.stringify( response , null, 4));
        $("#submitTransaction").on("click", function() {
          $.post('http://localhost:7876/nxt', {"requestType": "broadcastTransaction", "transactionBytes": response.transactionBytes}, function(broadcast) {
            var broadcastResponse = JSON.parse(broadcast);
            $("#broadcastedTransaction").html(JSON.stringify( broadcastResponse , null, 4));
          }); 
        });
      });
  </script>
</body>
</html>

Cuando cargues el sitio, estarás cargando directamente la transacción aún no difundida. Como la función correspondiente a pulsar en el botón esta anidada dentro de la primera llamada, puedes acceder a los datos de la transacción no emitida. Para emitir la transacción usamos la siguiente receta:

requestType broadcastTransaction

transactionBytes la transactionBytes que hemos creado con la función mencionada anteriormente.

Con estas pocas líneas de código podemos crear una transacción y transmitirla. Sin embargo, todavía estamos definiendo todas las variables directamente dentro del código. En los próximos artículos voy a mostrar cómo agregar mensajes cifrados a una transacción y cómo obtener estos datos a partir de una entrada de usuario que tienes en la página. Profundizaremos en las transacciones por fases y en la poda de las transacciones.

Ver 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
Programando para Cripto-Plataforma Nxt #4: Datos históricos de los activos

por Tosch

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

Programando en la Cripto-Plataforma Nxt #3 : Output desde el Intercambio de Activos

Programando en la Cripto-Plataforma Nxt #3: Output desde el Intercambio de Activos

La estrella de las Blockchains

Bienvenido al tercer artículo de programación con Nxt. En los artículos previos he mostrado cómo ajustar tu archivo de configuración Nxt para empezar a desarrollar fácilmente con JavaScript y cómo obtener la primera salida de datos de la blockchain. En este artículo, me gustaría continuar con una de las herramientas más utilizadas en Nxt: el Asset Exchange.

¿Qué es el Asset Exchange o Intercambio de Activos?

El Asset Exchange es un mercado de activos basado en la tecnología blockchain. Todo el mundo puede crear sus propios tokens en la blockchain. El activo puede representar cualquier cosa, ya se trate de servicios financieros, una campaña de crowdfunding, soporte para un sitio web, membresías, commodities o cualquier otra cosa que te puedas imaginar.

La ventaja de usar un token para un activo en la cadena bloques de Nxt es que directamente consigues una audiencia global, ya que ni Internet ni las monedas digitales, tales como Nxt o Bitcoin, no conocen fronteras. Otro beneficio que me gustaría destacar es que nadie necesita una cuenta bancaria real; una vez tienes tu primera moneda virtual es muy fácil moverse de un tipo a otro, y puesto que la tecnología blockchain es accesible para todos, no hay ninguna dificultad para moverla de una persona a otra. (Aun así, deberías informarte sobre tu jurisdicción local para asegurarte de que la creación de un activo está permitida.)

Cómo recuperar los primeros datos de Activos

Para obtener tus primeros datos, primero hemos de elegir un activo. Puedes ver una lista de todos los activos existentes en la red Nxt aquí:Mynxt.info/ lista de activos.
Una vez has elegido un activo, puedes ver el identificador (ID) del activo en la esquina superior izquierda. Necesitaremos el ID para obtener los datos de un activo (Asset). En este ejemplo, he escogido el activo SuperNET ya que se comercializa con frecuencia y tiene muchos datos históricos que podemos ver.

Recuerda que necesitas tener en marcha Nxt en tu sistema para continuar con el resto de este tutorial.

Primero, veamos los metadatos de un asset. El siguiente scrypt de comandos te proporcionará la salida de la configuración de activos original. Como siempre, te recomiendo la página http://localhost:7876/test cuando busques las llamadas de las API. En esta página puedes ver qué llamadas son para recibir datos (GET) o enviar datos (POST) a la blockchain. Empezaremos con las peticiones GET y la llamada getAsset.

Puedes utilizar esta scrypt para mostrar la información de los activos en tu página web, para una descripción general de los activos que se han creado a corto o largo plazo o sólo cómo lista personal de activos y sus funciones.

<!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>
  <h2>Asset Data</h2>
  <table class="table table-striped">
    <thead>
      <tr>
        <th>Key</th>
        <th>Data</th>
      </tr>
    </thead>
    <tbody id="result">
      
    </tbody>
  </table>
<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": "getAsset", "asset": "12071612744977229797", "includeCounts": "true"}, function(request) {
        var rows;
        $.each(request, function(key, data) {
          rows += '<tr>';
          rows += '<td>'+key+'</td>';
          rows += '<td>'+data+'</td>';
          rows += '</tr>';
        });
        $("#result").html(rows);
      });
  </script>
</body>
</html>

El código anterior mostrará una tabla en su página HTML con la siguiente información

programming-nxt-3-1

Llegados este punto, quiero dedicar un poco de tiempo para enseñarte algunas abreviaturas en Nxt:

Verás dos variables “initialQuantityQNT” y “quantityQNT”. QNT significa “Cantidad“, la cantidad inicial es designada por el creador del activo. Como algunos de los activos pueden ser eliminados, el “quantityQNT” nos muestra cuántos activos existen en el momento. También necesitamos la variable “decimals”. El activo que estamos viendo tiene 4 decimales, lo que significa que el número de activos mostrados en la tabla necesita dividirse por 10.000 (4 ceros) para obtener el número real. El activo anterior cuenta con una cantidad  de 816.061.0000 activos.

“Account” es la cuenta numérica de Nxt del creador del activo y “accountRS” es el mismo identificador de cuenta en formato Reed-Solomon (RS).

“numberOfTrades”, “numberOfTransfers” y “numberOfAccounts” son calculadas en el momento en que se ejecuta la llamada.

Puede acortar la llamada de la API “getAsset” sin incluir “includeCounts”: “true” en la anterior llamada $ .getJSON, por lo que no recibirás el número de titulares del activo, las transferencias y operaciones, por lo que la llamada a la API será más rápida.

Órdenes de compra y venta

Después de conocer los detalles sobre el activo y obtener los metadatos, nos interesa saber si hay órdenes de compra o de venta para este activo y a qué precio se comercializa actualmente. Los métodos para utilizar los cálculos de cantidades o posiciones decimales de Nxt no siempre son los más óptimos. A veces, en este tutorial, escojo los métodos que son más comprensibles en lugar de los más óptimos. Por lo general, yo recomendaría hacer cálculos con los números originales de la API, porque no tendrás que ocuparte de los decimales y de ahí es de dónde provienen la mayoría de los errores. Las llamadas API que estamos utilizando para esto son: getAskOrders y getBidOrders. Una vez más, necesitamos el ID del activo para obtener las órdenes de compra y de venta del mismo. Además, acortaremos la salida agregando los parámetros firstIndex y lastIndex. Aquí está el código para obtener tanto las órdenes de compra como las de venta para el activo SuperNET:

Ask Orders

 

QuantityPriceTotal

Account

 

Bid Orders

 

QuantityPriceTotal

Account




programming-nxt-3-2

El script anterior se puede usar para visualizar los precios y las ofertas actuales de cualquier activo en tu página web, y para mostrar el libro de órdenes completo. Además, puedes utilizarlo para analizar las tendencias. Puesto que, además, dispones de todas las cuentas correspondientes a las ofertas y las demandas, puedes analizar las ofertas y obtener el número de cuentas que están operando en la plataforma.

Esta vez hemos tenido que hacer más consultas $.getJSON para obtener la información que queremos. Primero, necesitamos los decimales de los activos para hacer el cálculo sobre la cantidad, como mencionamos  en la primera llamada. En segundo lugar, queremos obtener tanto las órdenes de compra como las de venta. Esto necesita una consulta para cada una de las llamadas a la API.

También vemos una nueva variable que necesita una breve explicación. “PriceNQT” es el precio de un Activo por QuantityQNT.

El precio en la API se muestra en priceNQT por QuantityQNT. Entonces, ¿qué es NQT y cuál es la diferencia con QNT? NQT se refiere a NXTQuant, el número más pequeño que existe en NXT, que es 0,00000001 NXT (8 decimales). También tenemos que tener en cuenta los decimales, que tenemos que multiplicar de nuevo para obtener el precio real por activo. He utilizado la variable var NQTdivider = 8 – decimales; Para obtener el número por el que necesitamos dividir la cantidad para, de este modo, obtener el precio actual en NXT por cada Quantity.

Espero que hayas disfrutado con esta tercera entrega de “Programación en la Cripto-Plataforma Nxt”. En el próximo artículo, hablaré sobre los datos históricos y la información de la cuenta. Si tienes alguna pregunta, no dudes en ponerte en contacto conmigo a través de 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 la serie:

Programación en la Cripto-Plataforma Nxt #1: Configuración
Programación en la Cripto-Plataforma Nxt # 2: Primeros pasos

Por Tosch

 

Programando en la Cripto-Plataforma Nxt #2

Programando en la Cripto-Plataforma Nxt #2: Primeros pasos

Sobre Nxt

¿Alguna vez has querido participar con tu propio software en el sector financiero sin correr grandes riesgos, contando con un acceso fácil y anónimo al mismo? ¿Alguna vez has intentado acceder a los sistemas monetarios y obtener datos fidedignos de la bolsa mercados o centros de datos en la nube? El software Nxt consiste en una cadena de bloques (Blockchain) entre pares (peer-to-peer) que permite un servicio financiero global, que puedes disfrutar en tu propio servidor u ordenador. No es necesario registro alguno ni ningún tipo de procedimiento burocrático.

¿Qué es la Blockchain de Nxt y qué aporta?

En los sistemas bancarios tradicionales te encuentras con bancos en los que depositas tu “confianza”, que amablemente se ofrecen a administrar tu dinero y tus bienes. Sin embargo, cuando quieres acceder a tu dinero no te dan facilidades. Especialmente, como desarrollador, no hay ninguna posibilidad de que puedas recuperar toda la información sobre tus posesiones ni que puedas acceder a los datos históricos de Wall Street de forma gratuita.

Con el sistema de cadena de bloques peer-to-peer, Nxt ha comenzado a construir un ecosistema centrado en la manipulación segura y transparente de los datos. Puedes iniciar tus propios servicios, crear divisas, crear activos y comercializarlos, beneficiarte de un mercado integrado, una nube de datos y ¡mucho más!

Comencemos

Con las siguientes líneas de código me gustaría enseñar cómo obtener un primer acceso a los datos de Nxt para, posteriormente, mostrar cómo añadir información a la cadena de bloques y obtener datos listos para utilizar en tu página web.

A partir de ese momento, podrás comenzar a construir todo lo que puedas imaginar alrededor de la blockchain, el libro de contabilidad y todas las herramientas de las que dispones.

Si todavía no has instalado Nxt, consulta aquí cómo instalar y configurar Nxt para comenzar a desarrollar.

“Hello World”

En este ejemplo, vamos a optar por la configuración más básica que nos permita mostrar los datos de la blockchain en nuestra página web.

Usaremos JQuery para simplificar la llamada a la API, pero puedes lograr los mismos resultados con otros frameworks o con un poco más de código.

Vamos a crear el primer archivo html, al que llamaremos transaction.html, dónde insertaremos el siguiente código.

<!DOCTYPE html>
<html>
<body>
  <div id="result"></div>
  <script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
  <script>
      $.getJSON('http://localhost:7876/nxt', {"requestType": "getTransaction", "transaction": "8520011591947303971"}, function(request) 
      {
        $("#result").html(request.attachment.message);
      });
  </script>
</body>
</html>

Nxt tiene una documentación API muy útil a la que se puede accede en http://localhost:7876/test. En este ejemplo estamos utilizando la llamada getTransaction, que también se puede probar en la página de la API.

Al ejecutar el script anterior, deberías recibir la siguiente respuesta en tu navegador:

Hello World Congratulations! You have received the first data from the blockchain.
Pero,¿qué ha pasado aquí?

En primer lugar, hemos utilizado la llamada API “getTransaction” que nos permite tener una visión detallada de la información de cualquier transacción que se encuentra en la blockchain. Echa un vistazo a la consola del navegador para ver toda la información de la transacción.

En el código anterior, hemos accedido al output o salida del mercado de la respuesta JSON que nos dio la API de Nxt. Aquí puedes ver todo el objeto devuelto desde la API.

{
                            "senderPublicKey": "7969c2ec61af9bedd3260c9b2cd4a292ba01ecbc2901a86851fa6c68208b0766",
                            "signature": "d13ad29034e56ae58b7f1eee4979cd6dffff38a7a26094c86103e431faf0bd06084be1e42534efd8e76b8a59c12630b52d851c571a25bc54af9ebdb56ca6df14",
                            "feeNQT": "100000000",
                            "requestProcessingTime": 0,
                            "type": 0,
                            "fullHash": "23bc3ae466293d7690b426173445e5b87423ea798b1d9c2913feda5d0d52a5b6",
                            "version": 1,
                            "phased": false,
                            "ecBlockId": "15499194118663359315",
                            "signatureHash": "9ea43451798a0144bd6cea58cbbba479c24ed7cdc29a4077a9aeb49a063498a7",
                            "attachment": {
                                "version.Message": 1,
                                "messageIsText": true,
                                "message": "Hello World",
                                "version.OrdinaryPayment": 0
                            },
                            "senderRS": "NXT-5RB8-KJD3-BT3B-E2QWW",
                            "subtype": 0,
                            "amountNQT": "10000000000",
                            "sender": "14876164227056393510",
                            "recipientRS": "NXT-P439-YVBD-VUEQ-A3S2T",
                            "recipient": "10124938546868029479",
                            "ecBlockHeight": 614717,
                            "deadline": 1440,
                            "transaction": "8520011591947303971",
                            "timestamp": 67508752,
                            "height": 2147483647
                        }

¿Por qué usar getJSON?

Como hemos estado utilizando getJSON la función Jquery, no necesitamos analizar más el JSON y podemos acceder directamente al JSON que nos devuelve la API de Nxt. Cuando se utiliza una llamada ajax o get method de JQuery, es posible que necesites enviar JSON.parse (request) para acceder al objeto.

La transacción 8520011591947303971que hemos accedido en el código, era una transacción que yo previamente había enviado. Todas las transacciones dentro de Nxt son transparentes y todo el mundo las puede ver. Echa un vistazo a la respuesta JSON de la Api de Nxt y con tu script en la mano ya puedes mostrar toda la información que te interese de cualquier transacción.

Reemplace request.attachment.message (por ejemplo, con request.accountRS) para que se muestre la identificación de la cuenta y continúa para dotar de una vista agradable a la información.

En los siguientes artículos te mostraré cómo enviar los primeros datos a la cadena de bloques, cómo recuperar datos de los Activos, cómo calcular los precios y cómo ver las órdenes abiertas

Alcanzando las estrellas

Nxt te apoya en la creación de un software que te permite el comercio global en una red peer-to-peer dónde cada participante es igual de importante. Comienza a construir cosas impresionantes con Nxt.

Lea el siguiente artículo de la serie:

Más artículos de la serie:

Programando en la Cripto-Plataforma Nxt #1

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

Programando en la Cripto-Plataforma Nxt #1

Programando en la Cripto-Plataforma Nxt #1: Configuración

Preparando el archivo de configuración

El archivo de configuración de Nxt es una herramienta importante que nos permite configurar el funcionamiento del cliente Nxt en tu ordenador. Con este archivo de configuración puedes ajustar el cliente Nxt para usar SSL, poner en marcha un nodo Nxt en una Raspberry Pi o configurar tu Nxt para el desarrollo, tal y como se muestra en el presente ejemplo.

El archivo de configuración

Ya dispones de un archivo de configuración dónde puedes ver todos los ajustes actuales

nxt/conf/nxt-default.properties

Si pretendes crear tus propios desarrollos, crea un archivo en nxt/conf/ y llámalo nxt.properties

Copia el código siguiente en tu archivo nxt.properties.

# Enable Cross Origin Filter for the API server.
nxt.apiServerCORS=true

# Enable Cross Origin Filter for NRS user interface server.
nxt.uiServerCORS=true

Si quieres desarrollar en la testnet deberás añadir:

# Never unlock your real accounts on testnet! Use separate accounts for testing only.
# When using testnet, all custom port settings will be ignored,
# and hardcoded ports of 6874 (peer networking), 6875 (UI) and 6876 (API) will be used.
nxt.isTestnet=true

En lugar de ejecutar Nxt por ti mismo, puedes optar por obtener información de cualquier otro nodo de la red Nxt. En mis ejemplos usaré http://localhost:7876, que es válido cuando estás ejecutando Nxt en tu ordenador o servidor local. Puedes encontrar una lista de otros nodos que podrías utilizar para mostrar datos en tu sitio web o acceder a Nxt a través de la webs que proporcionan acceso a la red Nxt, como por ejemplo Nxtpeers.com o PeerExplorer.com.

En lugar de usar http://localhost:7876, podrías, por ejemplo, introducir una IP como http://x.x.x.x: 7876 para obtener información de un nodo en lugar de en tu ordenador local.

Si deseas tener control sobre el nodo, la versión que ejecuta, la información a la que tienes permitido acceder o el número de conjuntos de datos que la API devuelve, tiene sentido que tengas en marcha tu propio nodo con la configuración personalizada.

Si estás buscando más información sobre la API, documentación y muchas cosas más, recomiendo visitar la Nxt Wiki.

Aquí puedes encontrar también cómo crear tu propio nodo público o cómo alojar tu nodo en el servicio AWS de Amazon.
Lee la siguiente parte de esta serie > …

Por: Tosch

También vea: http://test.nxter.org/developers