• Estás a tan solo un e-mail de conocer Bitcoin y operar con él como si tú mismo/a lo hubieras creado.

    Puedes anular tu suscripción cuando quieras.

  • Desarrollar una aplicación usando Bitcoin

    Tiempo de lectura3 minutos

    bitcoin-developr

    Desarrollar aplicaciones Bitcoin es muy sencillo, aún cuando se tiene que meter mano a nivel de código, si se tiene unas mínimas nociones de programación. Si algo tiene complicado es el entender que piezas entran en juego y cómo. El resto no cambia en exceso de otro tipo de aplicaciones, donde en cuestión de unas horas se puede tener algo totalmente funcional.

    Este artículo no es para tratar un paso a paso de como hacer una APP, sino para hacernos un esquema mental de las piezas que forman una APP básica y cómo interactúan.

    Por supuesto es recomendable entender lo básico de Bitcoin.

    Empecemos. Debemos pensar de forma modular. Por un lado está nuestra aplicación y por otro Bitcoin.

    Para interactuar con Bitcoin se puede hacer de dos formas: Instalando un nodo propio de Bitcoin o usar el nodo de otros. En ambos casos se interactúa luego a través de una API. Algunas veces unas API’s más sencillas, cómo son las RESTful, y otras un poco más engorrosas a nivel de JSON-RPC. No obstante, y por suerte, los programadores ya tenemos librerías reutilizables open source para simplificar ambos casos si se desea.

    En este caso imaginemos que usamos la versión un poco más compleja, la que se basa en usar tu propio nodo Bitcoin, que da más autonomía y da pie a entender mejor el funcionamiento de Bitcoin.

    Nodo Bitcoin

    Un nodo Bitcoin está compuesto por 3 piezas notables:

    • El “demonio”: Está conectado a otros nodos, permitiendo crear esa red P2P donde se intercambian todos los eventos que ocurran en la red por sockets.
    • Blockchain: la base de datos que registra los eventos de forma local en cada nodo. Realmente tu aplicación no usará esa base de datos, si no otra propia si lo requiere.
    • API: los eventos son convertidos a una respuesta JSON y transmitidos por un puerto, puede o no ponerse protegido para escuchas externas.
    nodo-bitcoin
    Estructura muy simplificada de un nodo Bitcoin

    El nodo puede instalarse en un ordenador Unix o Windows y puede llamarse o escucharse cuando se desee a través del puerto que tiene para ello, con o sin autenticación (al gusto),  siendo un canal para una comunicación bidireccional: Puedes recibir en tiempo real lo que sucede en el nodo y puedes enviarle información para que haga cosas o te informe de cosas. Cómo montar tu nodo Bitcoin en menos de 10 minutos.

    La aplicación

    Por supuesto se puede desarrollar en el lenguaje que se desee y ésta no debe conocer necesariamente en exceso el funcionamiento del nodo Bitcoin.

    Una aplicación sencilla está compuesta por un backend, una base de datos y un frontend. Hasta ahí nada nuevo. Se puede poner una API o no… lo de siempre. El backend siempre que desee interactuar con la red Bitcoin puede llamar a la API RPC del nodo, o escucharlo para tomar decisiones.

    app
    Ejemplo típico simplificado de una aplicación web

    Unimos piezas: Aplicación + Nodo Bitcoin

    Imaginemos que queremos hacer un explorador blockchain. Simplemente deberemos poner nuestro backend a escuchar todos los eventos que ocurran en nuestro nodo (el cual nos informa de lo que ocurre en la red), guardar la información que nos pase el nodo en nuestra base de datos para posteriores consultas desde el frontal donde mostremos lo pedido.

    app-nodo-bitcoin
    Estructura simplificada de una aplicación web interactuando con un nodo Bitcoin

    Cabe destacar que tener una APP similar a blockchain.info, un explorador blockchain, con su propia API RESTful a modo privado o público para interactuar desde tu aplicación es cuestión de un par de minutos con el desarrollo open source llamado Insight de BitPay.

    Otros detalles

    Enviar un pago a la red también es muy sencillo, ya que una vez se prepara la transacción en el backend lo que se hace es enviarla al nodo a través de la API JSON-RPC para que la retransmita al resto de nodos, y esos a otros y así sucesivamente hasta que se propaga por toda la red. Es por ello que es importante tener bien pareado el nodo, y a pares de calidad, porque esto asegura que una transacción se retransmita por toda la red muy rápido y hará que las transacciones se confirmen antes.

    Las direcciones y las transacciones se preparan offline. Es decir, no se necesita el nodo para ello, sólo para obtener la información. Luego se prepara la transacción y se manda a la red ya codificada.

    Lógicamente para casi todos los lenguajes ya existen librerías que simplifican todo donde, una vez importadas, sus métodos permiten hacer lo mismo pero con menos código.

    En el backend normalmente se usan dos librerías (aunque ambas podrían estar en una, dependiendo la librería). La primera se comunica con el nodo Bitcoin, y la segunda se encarga de generar direcciones o de preparar las transacciones.

    Éste es un ejemplo sencillo y una aproximación a vista de pájaro de una organización típica simple, pero su uso, y aquí entra en juego la creatividad, es lo que permite crear casos nuevos de uso.

    En casi todas las criptomonedas, su nodo y cómo se interactúa con ellas a nivel de esquema es muy similar. Montar un exchange de criptomonedas (tipo Coinbase o OKCoin) no dista de los principios que aquí se han expuesto, eso sí, replicando todo: Backends balanceados, múltiples nodos de cada criptomoneda por si uno cae o se desfasa…

    Un consejo: Si es tu primera vez desarrollando sobre Bitcoin, lo mejor es alquilar un servidor (por ejemplo uno de OVH por 5€/mes), es una inversión pequeña y te dan una máquina dedicada lista para “romperla” tantas veces como necesites. Además, descargarse ahí el blockchain será muchísimo más rápido y cómodo. Después podrás desarrollar tu APP en local y que use la API del nodo Bitcoin de la maquina alquilada.

    Con esto tienes lo necesario para hacerte un boceto mental de por dónde empezar a crear tu aplicación. Dependiendo el lenguaje que quieras usar únicamente deberás buscar las librerías necesarias. Por ejemplo para NodeJS puedes usar Bitcore, que tiene todo lo necesario en una misma librería. También BitcoinJS, aunque ésta sólo se centra en la parte de trabajo offline de Bitcoin (crear direcciones, preparar transacciones…).

  • Compra Bitcoin () VENDE Bitcoin ()

    Estás a tan solo un e-mail de conocer Bitcoin y operar con él como si tú mismo/a lo hubieras creado.

    Puedes anular tu suscripción cuando quieras.