Skip to content

Latest commit

 

History

History
261 lines (161 loc) · 8.95 KB

INSTALL.es.md

File metadata and controls

261 lines (161 loc) · 8.95 KB

Instalación

El siguiente documento tiene como próposito brindar la información necesaria para poder preparar el ambiente de trabajo para el desarrolo del bot brindando las características técnicas y físicas de cada elemento.

Tabla de contenido

Propósito

Permitir a las personas comerciar usando la red Lightning con otras personas en Telegram. El bot lnp2pbot está desarrollado en nodejs y se conecta con un nodo LND (Lightning Network Daemon) es una implementación completa de un nodo Lightning Network.

Objetivo

Lograr que el bot de telegram sea capaz de recibir pagos Lightning sin ser custodio, el usuario no necesitará permiso para usar el servicio, ni proporcionar datos personales que puedan comprometer su privacidad, logrando con ello conservar toda la custodia de sus bienes en todo momento, para ello el bot usará facturas retenidas y sólo liquidará dichas facturas del vendedor cuando cada parte está de acuerdo con ello y justo después de ese momento el bot pagará la factura del comprador.

Alcance del sistema

Llegar a todos los usuarios que requieran adquirir satoshis de Bitcoin sin custodia por medio de un bot en Telegram.

Requerimientos técnicos

  1. Computadora con acceso a internet.
  2. Sistema de gestión de nodos Polar, o nodo LND.

polar

  1. Docker: automatización de implementación de aplicaciones como contenedores portátiles y autosuficientes que se pueden ejecutar en la nube o localmente.
  2. MogoDB como gestor de bases de datos.

Instalación

Preparar el ambiente.

1. Verificar si tienes instalado Nodejs.

$ node -v

En caso de no tenerlo instalado:

  • En Mac ejecuta la siguiente instrucción:
$ brew install node
  • En Linux y Windows ir al siguiente enlace.

Configuración de MongoDB con Docker Compose

2. Crear el directorio y el archivo de configuración

Crea un directorio donde colocarás el archivo mongo.yml para MongoDB:

mkdir mongodb
cd mongodb
nano mongo.yml

3. Contenido del archivo mongo.yml

El archivo mongo.yml debe contener lo siguiente:

version: "3.7"

services:
  mongodb:
    image: mongo:5.0
    environment:
      MONGO_INITDB_ROOT_USERNAME: mongoadmin
      MONGO_INITDB_ROOT_PASSWORD: secret
    volumes:
      - ./mongodb-data/:/data/db
    ports:
      - 27017:27017

4. Iniciar MongoDB

Para iniciar MongoDB, ejecuta el siguiente comando:

$ docker compose -f mongo.yml up

Lnp2pbot

5. Clonar el repositorio del bot

Clona el repositorio del bot y navega al directorio del proyecto:

$ git clone https://github.com/lnp2pBot/bot.git
$ cd bot
$ npm install

6. Crear y Configurar el archivo .env

En el directorio raíz del proyecto, encontrarás un archivo de ejemplo .env-sample. Copia este archivo y edítalo para configurar tus variables de entorno:

$ cp .env-sample .env
$ nano .env

Conectar con el nodo Lightning

Para conectar con un nodo lnd, necesitas establecer algunas variables dentro del archivo .env creado en el paso anterior:

  • LND_CERT_BASE64: Certificado TLS del nodo LND en formato base64, puede obtenerlo base64 ~/.lnd/tls.cert | tr -d '\n' en el nodo lnd.

  • LND_MACAROON_BASE64: Archivo macarrón en formato base64, el archivo macarrón contiene permiso para realizar acciones en el nodo lnd, puede obtenerlo con base64 ~/.lnd/data/chain/bitcoin /mainnet/admin.macaroon | tr -d '\n',

  • LND_GRPC_HOST: dirección IP o el nombre de dominio desde el nodo LND y el puerto separado por dos puntos, ej: 192.168.0.2:10009.

Si estás usando Polar los datos los obtienes como se muestra en la siguiente imagen:

polarVariables

Terminar la configuración del archivo .env

A continuación están las variables que debes modificar en el archivo .env. El resto pueden mantener el valor por defecto o ser modificadas a tu consideración:

LND_CERT_BASE64=''
LND_MACAROON_BASE64=''
LND_GRPC_HOST='' 
BOT_TOKEN=''

DB_USER='mongoadmin'
DB_PASS='secret'
DB_HOST='127.0.0.1'
DB_PORT='27017'
DB_NAME='lnp2pbot'

MONGO_URI='mongodb://mongoadmin:secret@localhost/lnp2pbot?authSource=admin'

CHANNEL='@tu-canal-de-ofertas' 
ADMIN_CHANNEL='-10*****46' 
HELP_GROUP='@tu-grupo-de-soporte' 

FIAT_RATE_EP='https://api.yadio.io/rate'

DISPUTE_CHANNEL='@tu-canal-de-disputas' 

NOSTR_SK=''

RELAYS=''

Detalles de algunas variables:

  • BOT_TOKEN: Deberás entrar a Telegram y abrir @BotFather. Ejecuta el menú y elige Create a new bot donde elegirás el nombre del bot y el usuario, una vez generado te mostrará un token que colocarás en este campo.

  • CHANNEL: En ese canal el bot publica las ofertas. Crea un canal en Telegram, para ello pulsa el botón de escribir nuevo mensaje. En Android está en la esquina inferior derecha con un icono redondo con un lápiz, y en iOS está en la superior derecha con un icono bastante pequeño con la forma de un lápiz. Pulsa sobre la opción Nuevo canal. Luego pon al bot como administrador del canal (abrir el bot y seleccionar: Añadir a un grupo o canal).

  • ADMIN_CHANNEL: A ese canal el bot envía información relevante para los administradores, como el fallo del pago de facturas, cuando un usuario toma una orden y no continúa, entre otras. En este campo debes poner el ID del canal, para obtenerlo escribe un mensaje en el canal, reenvíalo al bot @JsonDumpBot y te mostrará un JSON con el ID del canal. Más información aquí. Debes añadir al bot como administrador del canal.

telegram_bot

  • HELP_GROUP: Grupo donde darás soporte del bot. Puedes crear un nuevo grupo o utilizar uno que tengas creado previamente.

  • DISPUTE_CHANNEL: En ese canal el bot publica las disputas para que los solvers las tomen (no es un canal para resolver disputas, sino para tomarlas). Debes crear este canal en Telegram y añadir al bot como administrador.

  • NOSTR_SK: Clave privada de Nostr que publicará las ofertas del bot como un evento parametrizado remplazable tipo 38383. Si no quieres que tu bot publique las ofertas en Nostr, comenta esa variable.

  • RELAYS: Relays de Nostr a los que se conectará el usuario de Nostr de tu bot para publicar las ofertas. Si no quieres que tu bot publique las ofertas en Nostr, comenta esa variable.

7. Ejecutar el bot

$ npm start
  • Para hacer pruebas:
$ npm test

Usar el bot

Luego de completar los pasos de la Instalación:

  1. Inicia el bot con el comando:
/start 

Mostrará un menú, elegiremos la opción de /sell para vender con los requerimientos necesarios.

telegram

  1. En el canal se verá la oferta, debe elegir comprar con el otro usuario de Telegram.

oferta

  1. Tomar la orden en el canal. Dar clic en Comprar Satoshis.

tomar_orden

  1. Entrar al bot y dar clic en continuar.

bot_continuar

Este mensaje es el que se le mostrará.

bot_tomar_oferta

  1. Crear factura en Polar con algunos de los usuarios y pegar en Telegram. Elegir Crear Factura en la parte de comportamiento.

crear_factura

  1. Poner la cantidad de venta.

cantidad

  1. Elegir copiar y Cerrar.

copiar_factura

  1. Entrar al bot y pegar la factura.

factura

Llegará una solicitud de pago al vendedor que se verá en el bot.

solicitud

  1. Pegar la factura en Polar y pagarla.

pagar

  1. Cuando alguien tome la orden, el bot mostrará el siguiente mensaje:

solicitud_de_pago

  1. En el bot para el otro usuario se mostrará lo siguiente:

tomar_orden_venta

  1. El usuario debe liberar los fondos con el comando /fiatsent, para ello debe copiar y pegar con el id

fiatsent

  1. El bot indicará que el usuario ya envió el dinero fiat.

confirmar_envio

  1. El usuario debe liberar los fondos con el comando /release, para ello debe copiar y pegar con el id

release

  1. Finalmente se le avisará al comprador que su operación ha sido completada con éxito.

compra_exiosa