Cyphernode

Kit de herramientas de arquitectura de servidores API de microservicios de nodo completo modular Bitcoin y utilidades para construir apps y servicios escalables, seguros y con múltiples características sin necesidad de terceros. 

¿Qué es cyphernode?

Cyphernode es una alternativa gratuita y open-source a los servicios gestionados y APIs Bitcoin comerciales como Blockchain.info, Bitpay, Coinbase, BlockCypher, Bitgo, etc. Puede ser utilizado para construir servicios Bitcoin y aplicaciones utilizando sus propios nodos completos de Bitcoin y Lightning Network. Es un substituto para los proyectos de software Bitcore e Insight.

Cypernode implementa un API autogestionado, lo que le permite generar y llamar a su red superpuesta encriptada de Bitcoin dockerizado y proyectos de software crypto (máquinas virtuales). Los contenedores Docker usados en este proyecto son alojados en www.bitcoindockers.com

Apunta a ofrecer características de avanzada y utilidades necesarias para operar servicios Bitcoin de grado empresarial. Incluye una lista seleccionada de funciones utilizando software múltiple, pero usted puede construir las suyas propias privadas o agregarlas como una opción predeterminada en el proyecto. 

Se encuentra actualmente siendo producido por Bylls.com, el primer y más grande procesador de pago Bitcoin de Canadá, además de Bitcoin Outlet, un servicio de intercambio Bitcoin de tarifa fija alternativo a Coinbase, permitiendo a los canadienses comprar bitcoins enviadas directamente a su propia billetera Bitcoin. 

El proyecto se encuentra en desarrollo diario – estamos actualmente en búsqueda de reseñas, nuevas características, feedback de usuarios y contribuciones para nuestra hoja de ruta. 

Pocos requerimientos, uso eficiente de los recursos

Cyphernode está diseñado para ser desplegado en máquinas virtuales con scripts de lanzamiento, pero con eficiencia y minimalismo en mente, para que también pueda ser ejecutado en múltiples Raspberry Pi con muy bajos recursos de cómputo (y extremadamente bajos si se instalan cadenas de bloque pre-sincronizadas y podadas). Debido a la arquitectura modular, módulos más pesados como los indexadores blockchain son opcionales (no necesarios para la mayoría de los casos de uso comercial). 

  •  Para un nodo completo y todos los módulos:

– 350 GB de almacenamiento, 2GB de RAM. 

  •  Billeteras de hardware (ColdCard, Trezor) para generación de claves y firmas (usando PSBT BIP174), además de para conectarse a interfaces de usuario web autogestionadas. 

Arquitectura Cyphernode

Cyphernode es un ensamblaje de contenedores Docker siendo llamados por un despachador de solicitudes.  

El despachador de solicitudes (requesthandler.sh) es el punto de entrada HTTP. El despachador de solicitudes es con estado: mantiene algunos de los datos para ser más efectivo en próximas llamadas. El despachador de solicitudes es donde Cyphernode escala sus nuevas características: agregue su switch, despache solicitudes a sus cosas. Estamos intentando construir cada contenedor de manera que pueda ser usado separadamente, como un componente reutilizable independiente. 

Es importante para nosotros: 

Estar tan optimizados como sea posible, utilizando Alpine en la medida de lo posible y contando con el menor tamaño de imagen Docker posible. Reutilizar el software ya existente: líneas de comandos integradas, piezas de software bien establecidas, etc. Utilice software de código abierto. No reinvente la rueda. Exponga superficie lo menos posible Elemento central: proxy_docker El proxy_docker es el contenedor recibiendo y despachando las llamadas de los clientes. Cuando agregue una característica Cyphernode, será la primera parte en ser modificada para integrar la nueva característica. 

proxy_docker/app/script/requesthandler.sh Encontrará ahí la sentencia switch utilizada para despachar las solicitudes. Solo agregue un bloqueador de casos con su comando, utilizando otros casos como ejemplos para solicitudes POST o GET. 

proxy_docker/app/config Encontrará ahí archivos de configs. config.properties debería ser usado para centralizar configs. Propiedades de spender y watcher son utilizadas para ofuscar credenciales en llamadas curl. 

proxy_docker/app/data watching.sql contiene el modelo de datos. Se llama “watching” puesto que al principio del proyecto, era sólo utilizado para ver direcciones. Ahora puede ser usado para indexar la blockchain (construir un explorador) y agregar más características. 

cron_docker Si usted tiene tareas a ser agendadas, utilice este contenedor. Solo agregue un ejecutable y agreguelo a la crontab. 

Actualmente es usado para asegurar que los llamados de vuelta hayan sido llamados por transacciones perdidas. 

Sobre este proyecto

  • Creado y mantenido por www.satoshiportal.com
  • Desarrollador dedicado a tiempo completo @kexkey
  • Manager del proyecto @FrancisPouliot
  • Colaborador: @__escapee__
  • Descargo de responsabilidad: desde su lanzamiento el 23 de septiembre de 2018 el proyecto se encuentra aún en sus fases iniciales (Alpha) y muchas de sus características aún están en proceso de ser implementadas. La arquitectura base, operaciones básicas de billetera y funciones de consulta son completamente funcionales. 

¿Cómo usar cyphernode?

El componente central de cyphernode es un gestor de solicitudes que expone los endpoints HTTP vía REST API, actuando como una capa de abstracción entre sus aplicaciones y el software Bitcoin de open-source con el que desea interactuar. 

Documentación

  • Lea los documentos API aquí:

https://github.com/SatoshiPortal/cyphernode/blob/master/doc/API.md

  • Documentación de instalación: 

https://github.com/SatoshiPortal/cyphernode/blob/master/doc/INSTALL.md

  • Instalación manual paso a paso (obsoleto): 

https://github.com/SatoshiPortal/cyphernode/blob/master/doc/INSTALL-MANUAL-STEPS.md

Al llamar un endpoint cyphernode usted puede estar

  • Haciendo una solicitud (llamada) delegada a las funciones de la parte de nodos de red P2P en su red superpuesta (ej. Llamando a Bitcoin RPC)
  • Utilizando scripts y funciones directamente con sus datos, parámetros y configs (ej. Derivar direcciones segwit de una Clave Maestra Pública, interactuando con una línea de comando C-Lightning para crear y pagar una factura Bolt11, estampar y verificar un archivo utilizando OpenTimestamps, etc.)
  • Ejecutando uno de los scripts (función) customizados lo que generará múltiples solicitudes a múltiples contenedores docker basándose en el resultado deseado (ej, agregar transacciones a un lote, firmar y transmitir de acuerdo a su calendario personalizado). 
  • Cambiando las configuraciones y parámetros del software subyacente en el despachador de solicitudes (ej. Escoger camino de derivación, decidir qué contenedores docker utilizará). 
  • Desplegando y activando componentes como el contenedor cron que agenda ciertas tareas/llamados. 
  • Creando webhooks con vigilancia activa para que su app reciba notificaciones vía asynchronous callback

Haga un backend a la medida para su app agregando sus propios módulos y funciones 

  • Haga su propio cyphernode al agregar cualquier contenedor docker compatible (ej. Bitcoin-js, electrum personal server, bloqueo del index explorer)
  • Cree scripts personalizados basados en las características de software dockerizado
  • Cree y agregue aplicaciones de interfaz web a su enjambre docker. Su propia billetera web (control remoto con GUI sobre sus nodos), dashboard de estadísticas graphana, reporte, notificaciones.

Hoja de Ruta/ TODO

Utilidades y extremos API

  1. Agregar extremos opentimestamps a su stamp data, verifique actualizaciones, obtenga información de archivos OTS
  2. Callbacks del Lightning Network para notificaciones de pago
  3. Identificación de direcciones y scripts de validación
  • Ser capaz de detectar si un dato dado es una dirección Bitcoin, dirección P2SH, dirección Bech32 o factura Bolt11
  • Validar de acuerdo al tipo
  1. Agregar el indexador blockchain para habilitar características de bloqueo de explorador bitcoin 
  2. Agregar Servidor Electrum Personal y los dockers de Servidor Electrum 
  • Por defecto, el Servidor Electrum Personal es agregado a la red contenedora
  1. Crear extremos para todas las tareas delegadas
  • Agregue todos los extremos Bitcoin RPC
  1. Agregar el PGP library docker y extremos para varias firmas
  • Firmas cleartext
  1. Agregar el script “deriveandwatch” que deriva un set de direcciones y envía notificaciones de pago
  • Límite de intervalo a la medida con 100 como predeterminado
  1. Agregar librería y extremo PayNyms
  2. Crear scripts de lanzamiento

Herramientas relacionadas

  1. Interfaz web (autogestionada como parte de la red Docker por defecto) de código libre (white-label) 
  • Permitir a los usuarios conectarse utilizando Trezor
  • Enviar archivos PSBT a la billetera ColdCard para firmado remoto
  • Cambiar configs Bitcoin y C-Lightning
  • Llamar a todos los extremos API manualmente (con parámetros) en interfaz web para otorgar el poder de funciones avanzadas a los usuarios no-técnicos. 
  • Completar la interfaz web sobre Bitcoin Core RPC
  • Ver transacciones, balances, etc. 
  • ¡Otras sugerencias son bienvenidas!
  1. Aplicación web Lunanode launcher

Hoja de Ruta de Seguridad

Puede encontrarla aquí: https://github.com/SatoshiPortal/cyphernode/issues/13#issue-364164006

Caso de uso de ejemplo para cyphernode

Al construir cyphernode, teníamos casos de uso específico en mente, los cuales construimos nosotros mismos. Utilice esto como inspiración e innove en nuestros procedimientos. 

Vea uno de los flujos de caso de uso de Satoshi Portal

Contribuciones

Vea documento de contribuciones

 

 

Fuente: https://cyphernode.io/