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

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.