Blockchain CLI
____ __
/\ _`\ __/\ \__ __
\ \ \L\ \ /\_\ \ ,_\ ___ ___ /\_\ ___
\ \ _ <'\/\ \ \ \/ /'___\ / __`\/\ \ /' _ `\
\ \ \L\ \\ \ \ \ \_/\ \__//\ \L\ \ \ \/\ \/\ \
\ \____/ \ \_\ \__\ \____\ \____/\ \_\ \_\ \_\ __ __ __
\/___/ \/_/\/__/\/____/\/___/ \/_/\/_/\/_/ /_/ /_/ /_/
CLI (Command Line Interface) para realizar peticiones HTTP a los nodos de una red descentralizada (blockchain).
Índice
Estructura del proyecto
.
├── node_modules # código de las librerías descargadas
├── bin
│ ├── btc-blockchain.js # controlador del comando blockchain
│ ├── btc-search.js # controlador del comando search
| ├── btc-transaction.js # controlador del comando transaction
│ └── btc.js # controlador del comando principal
├── commmands
│ ├── blockchain.js # lógica del comando blockchain
│ ├── mine.js # lógica del comando mine
| ├── search.js # lógica del comando search
│ └── transaction.js # lógica del comando transacción
├── lib
│ ├── transaction.model.js # modelo de transacción
│ └── utils.js # funciones de utilidad general
└── package.json # archivo de configuración
Comandos
-
btc blockchain
Nos permite obtener el estado actual de la cadena de bloques, pudiendo observar los bloques que se han ido añadiendo y sus transacciones. Además, se podrán observar las transacciones que están a la espera de ser introducidas en el siguuiente bloque, la recompensa actual por minado y la dificultad establecida para dicha tarea.
-
btc transaction
Nos permite realizar una transacción en la cadena de bloques. Se require la dirección pública de emisor y receptor, así como la cantidad de monedas a enviar y la firma del autor.
-
btc mine
Permite comunicar a uno de los nodos de la blockchain que ejecute la función de minado que permitirá la creación de un nuevo bloque dando lugar a la introducción de las transacciones pendientes en dicho bloque.
-
btc search
-
transaction
Busca transacciones en la blockchain mediante el identificador de la transacción. Cuando la encuentra la muestra en la consola, de lo contrario, nos dirá que no se ha encontrado.
-
address
Muestra el saldo de la dirección que se ha especificado.
-
block
Muestra el bloque con el hash que hemos especificado. Si no existe, se mostrará un mensaje de error.
-
Librerías utilizadas
-
- Descripción: Cliente HTTP basado en promesas para el navegador y node.js
- Características:
- Hacer XMLHttpRequests desde el navegador
- Hacer solicitudes http desde node.js
- Admite la API Promise
- Solicitud de intercepción y respuesta
- Transformar datos de solicitud y respuesta
- Cancelar solicitudes
- Transformaciones automáticas para datos JSON
- Soporte del lado del cliente para proteger contra XSRF
- Instalación:
npm install --save axios
- Página principal: https://github.com/axios/axios
-
- Descripción: Componente JavaScript para calcular el SHA256 de cadenas de texto o bytes.
- Instalación:
npm install --save sha256
- Página principal: https://github.com/cryptocoinjs/sha256
-
- Descripción: Criptografía rápida de curva elíptica en una implementación simple de javascript.
- Instalación:
npm install --save elliptic
- Página principal: https://github.com/indutny/elliptic
-
- Descripción: Para la creación de RFC4122 UUID
- Instalación:
npm install --save uuid
- Página principal: https://github.com/uuidjs/uuid
-
- Descripción: Da estilo a cadenas de texto en el terminal
- Instalación:
npm install --save chalk
- Página principal: https://github.com/chalk/chalk
-
- Descripción: La solución completa para las interfaces de línea de comandos de node.js
- Instalación:
npm install --save commander
- Página principal: https://github.com/tj/commander.js
-
- Descripción: Crea arte ASCII a partir del texto
- Instalación:
npm install --save figlet
- Página principal: https://github.com/patorjk/figlet.js
-
- Descripción: Una colección de interfaces de usuario de línea de comandos interactivos comunes
- Instalación:
npm install --save inquirer
- Página principal: https://github.com/SBoudrias/Inquirer.js
-
- Descripción: Notifica de las actualizaciones de la aplicación CLI
- Instalación:
npm install --save update-notifier
- Página principal: https://github.com/yeoman/update-notifier
Setup del proyecto
Requisitos: tener instalado Node.js y git.
-
Clonar el repositorio:
git clone https://github.com/miguelleonmarti/bitcoin-cli.git
-
Instalar las dependecias:
npm install