Aprende a Instalar y utilizar la wallet Sparrow para crear diferentes tipos de direcciones de Bitcoin y realizar transacciones privadas PayNym y BIP47.
Jonny Ji; EntrePlanctonyBallenas.
Twitter para correcciones, comentarios o sugerencias:
@entreplanctony1
@JonnyJi50127056
El presente tutorial fue elaborado para el Seminario socrático de Mastering Bitcoin a través de @libreriadesatoshi.
En este enlace puedes encontrar un Tutorial simplificado para conectar Sparrow a tu propio nodo:
Tutorial: Instalar Sparrow Wallet y conectarla a Bitcoin Core
Referencias:
En términos simples, una billetera o cartera es un programa que interactúa con la blockchain (cadena de bloques) de Bitcoin. Es una aplicación que contiene una lista de direcciones de Bitcoin y sus correspondientes claves privadas.
Este programa sirve para realizar operaciones de envío o recepción de bitcoin, una función sucede en la cadena de bloques, y para que el usuario tenga un registro de las transacciones que realiza, así como la cantidad de bitcoin almacenado en las direcciones que están en su control.
Las billeteras son el puente que nos permite administrar nuestro bitcoin. Usando una billetera, cualquiera puede recibir o enviar directamente bitcoin como pago por bienes o servicios en lugar de una moneda fiduciaria o puede ahorrarlo y conservarlo como reserva de valor.
Aunque es común pensar que estas billeteras “almacenan” bitcoin, una billetera Bitcoin en realidad representa el control criptográfico de una dirección registrada en la cadena de bloques y las UTXO (Unspent Transaction Output) almacenadas en esa dirección. La billetera almacena las claves privadas que manejan esa dirección.
Esto es importante repetirlo, porque es un error común pensar que los bitcoin están en la billetera, o en un computador, o en un dispositivo USB. No, los bitcoin no se almacenan en el monedero, sino en las direcciones criptográficas que están registradas en la cadena de bloques. A través de las llaves privadas que manejan esas direcciones de Bitcoin podemos gastar los bitcoin almacenados.
Bitcoin (BTC), a diferencia de las monedas tradicionales, es completamente digital. En por eso que el enfoque para manejar este tipo de monedas es totalmente diferente, sobre todo cuando se trata de almacenarlas y transferirlas de un propietario a otro.
Como bitcoin no existe en ninguna forma física, no se puede almacenar en ningún espacio físico. En su lugar, se utilizan llaves privadas que permiten acceder a una dirección de Bitcoin y firmar las transacciones para poder gastar los BTC en esas direcciones. Estas llaves privadas necesitan ser guardadas de forma segura. Una combinación de la dirección del destinatario y nuestra llave privada es lo que hace posible una transacción de bitcoin.
Es un protocolo de código abierto, descentralizado, que funciona como un sistema de red de pagos entre iguales. Utiliza una moneda digital, el BTC, que sirve para contabilizar y para transferir valor, como las monedas Fiat.
Bitcoin, desde un punto de vista de usuario, es dinero digital que se usa a través de Internet. Es una moneda virtual e intangible. Es decir, que no se puede tocar, como ocurre con las monedas físicas, pero sí puede utilizarse como medio de pago de la misma forma que éstas. Bitcoin es una moneda totalmente digital que no existe en el mundo físico y que funciona basándose en criptografía.
El sistema Bitcoin está basado en UTXO (en español, salidas de transacciones no gastadas). Las cantidades de UTXO están vinculadas a las direcciones criptográficas que las pueden gastar por medio del registro de la cadena de bloques.
Cuando un usuario (A) desea transferir BTC al usuario (B), construye una transacción (Tx), especificando en ella la cantidad de bitcoin de su propiedad que cede de los UTXO que desea gastar y la dirección del destinatario (B), el usuario (A) la firma con su clave privada y transmite a la red Bitcoin.
Para llevar registro de las transacciones o intercambios de BTC en la red de Bitcoin, se utiliza una base de datos distribuida. En esta base de datos la información se agrupa en bloques encadenados en secuencia y distribuidos en la red, formando una estructura llamada cadena de bloques. La cadena de bloques sirve para ordenar cronológicamente las transacciones.
Quienes verifican las transacciones de BTC en la cadena de bloques son los nodos que forman dicha red. El protocolo Bitcoin define las reglas que gobiernan este sistema. Al recibir una transacción, los nodos verifican las firmas criptográficas y la validez de la posesión de la UTXO, antes de aceptarla y retransmitirla para ser registrada en la cadena de bloques.
En realidad, enviar Bitcoin se refiere a transferir la propiedad de los BTC almacenados en una dirección a otro propietario, firmando digitalmente una transacción con la clave privada asociada a dicha dirección, incluyendo el hash de la transacción anterior. Para completarla, se agrega, además, la dirección pública del siguiente propietario. Los nodos revisan las firmas para verificar la cadena de propiedad de los bitcoin que se envían.
Sparrow Wallet es una cartera de escritorio, solo para Bitcoin, que se centra en la seguridad, la privacidad, la usabilidad y que se puede instalar en varios sistemas operativos.
Para usar Sparrow, lo primero que haremos es descargar el programa. https://sparrowwallet.com/download/.
Al Instalar cualquier wallet de Bitcoin es particularmente importante tomar en cuenta la seguridad, así que descargue Sparrow desde la página oficial del proyecto. Asegúrese de seguir las instrucciones para verificar la descarga antes de continuar con la instalación. El procedimiento es muy sencillo y no varía mucho entre los diferentes sistemas operativos. Simplemente, se trata de descargar y verificar las firmas que validan y garantizan que el archivo de instalación descargado no ha sido comprometido.
Completada la verificación, puede instalar y ejecutar Sparrow normalmente en su sistema operativo, como cualquier otro programa. Puede instalar Sparrow Wallet en Ubuntu, en Windows, en Mac. La forma de instalar no varía mucho de un sistema operativo a otro.
El instalador debe abrirse, haga clic en Instalar y espere a que termine el proceso de instalación. Una vez hecho esto, el instalador se cierra y se abre el programa Sparrow Wallet en el asistente de bienvenida.
Cada nueva instalación comienza con un asistente de bienvenida para explicar las diferentes formas de conectar Sparrow a la cadena de bloques de Bitcoin. También puede usar Sparrow sin conexión para verificar direcciones de billetera y analizar y firmar transacciones y mensajes.
Hay tres formas de conectar Sparrow a un servidor para ver su saldo y enviar y recibir transacciones:
La pantalla de bienvenida también explica cómo puede cambiar entre el modo en línea y fuera de línea en cualquier momento cuando usa Sparrow con el botón de alternancia que aparece en la barra de estado. En la pantalla, la palanca cambiará de color dependiendo de cuál de los 3 tipos de conexiones esté utilizando. Una vez que haya completado el asistente de bienvenida, haga clic en Configurar servidor y verá el siguiente cuadro de diálogo: (servidores en la bienvenida). Este paso se puede saltar y configurar el servidor después de creada la billetera, esto no afecta el funcionamiento de la billetera.
Bitcoin Core es un nodo completo para la red Bitcoin. Su función es validar, auditar y mantener una copia completa de la cadena de bloques en su base de datos. Para esto, el programa verifica cada bloque según los va descargando.
Pero en algunos casos, es preferible solo tener una copia limitada de esa base de datos (Nodo Podado). En estos casos especiales, el programa igualmente descarga la cadena completa de Bitcoin y la verifica, pero a medida que se acaba el espacio de almacenamiento, va borrando los archivos más antiguos para conservar espacio.
Sparrow puede funcionar con cualquier versión y modo que esté instalado el Bitcoin Core.
Ahora, conectar Sparrow con tu propio nodo es muy sencillo. La billetera está preparada para detectar el nodo instalado en la computadora y sólo hay que seleccionar las opciones necesarias en la configuración de servidor de Sparrow.
Pero primero hay que agregar algunos comandos en el archivo “bitcoin.conf” de Bitcoin Core para utilizar los comandos “rpc” y “server”:
⚠️ Importante: El archivo bitcoin.conf se encuentra en una carpeta oculta de Bitcoin Core (".bitcoin" en linux) donde se descarga la cadena de bloques. No confundir con la carpeta "Bitcoin" que tiene los archivos ejecutables del programa, donde hay un archivo de ejemplo también llamado bitcoin.conf
Agregar estos comandos a bitcoin.conf le permitirá a la billetera conectarse a Bitcoin Core utilizando el nombre de usuario y la contraseña proporcionados.
Ya puedes reiniciar Bitcoin Core y al iniciar Sparrow, solo debes agregar los datos de usuario y contraseña en la ventana de servidores para que la billetera se conecte al nodo.
Una vez conectada Sparrow a Bitcoin Core, la wallet de Bitcoin Core se mostrará como una wallet de sólo lectura, mostrando el balance y el historial de transacciones de Sparrow Wallet. También se puede utilizar bitcoind en lugar de la aplicación gráfica de Bitcoin Core (bitcoin-qt), ya que Sparrow se conecta sin ningún problema a la terminal de Bitcoin.
En la siguiente pantalla de Sparrow empieza la Configuración para su nueva billetera, en esta pantalla se le asignará nombre a la billetera. Ahora se muestra la pantalla Configuración para su nueva billetera, donde se le asignará nombre a la billetera.
Luego crearemos una billetera donde seleccionamos si será de firma única o multifirma, y qué tipo de script usará la billetera para generar las direcciones Bitcoin. También debemos elegir qué tipo de almacén de claves queremos para esta billetera. (Hardware Wallet, Software Wallet, Watch only Wallet).
Si elegimos Software Wallet, en la siguiente pantalla tenemos el almacén de claves. Aquí puede ver a la izquierda los primeros 3 tipos de almacenes de claves de la tabla anterior. Para carteras de software, puede elegir palabras mnemotécnicas (BIP39) o importación de una billetera Electrum. Elegimos crear un almacén de claves usando BIP39, un estándar común que usa un conjunto de palabras para crear una clave privada o semilla.
Haga clic en el número de palabras que desee para su semilla. Ahora verá el número de campos de texto que contendrán las palabras secretas de nuestra semilla. Haga clic en el botón Generar nuevo para que Sparrow elija al azar las palabras de la semilla. Sparrow usará su semilla para calcular el xpub para la ruta de derivación especificada y lo mostrará en la pantalla Configuración.
Frase semilla o frase inicial de respaldo: es una lista de palabras que almacenan toda la información necesaria para recuperar los fondos de bitcoin en la cadena. El software de billetera es capaz de generar una frase inicial y le indicará al usuario que la escriba en un lugar seguro.
Una explicación simplificada de cómo funcionan las frases semilla es que el software de billetera tiene una lista de palabras tomadas de una lista de un diccionario en inglés, con cada palabra asignada a un número. La frase semilla se puede convertir en un número que se usa como el número entero semilla, una clave privada maestra, en la billetera determinista que genera todos los pares de claves, privadas - públicas, usados en la billetera.
Sparrow generará sus 12 o 24 palabras y luego podrá agregar una passphrase, si así lo desea. Si agrega una passphrase, debe usar una frase fuerte y de alta entropía que no se pueda adivinar fácilmente. Esta passphrase, junto con la frase semilla, será necesaria para recuperar su billetera en caso de que su equipo se pierda, se dañe o se reemplace y se debe guardar de forma tan segura cómo la frase semilla original. Recuerde que si la pierde o la escribe mal, no podrá tener acceso a las direcciones que genere la billetera y podría perder todo su saldo. Esto es porque la passphrase no es una contraseña para la frase semilla, es una palabra más que se agrega junto con las palabras originales y esto modifica las direcciones que se derivan de la semilla original.
Luego de verificar que guardó bien su frase semilla, haga clic en el botón Aplicar para guardar la billetera y elija una contraseña para proteger la billetera. Las pestañas grises de la izquierda se volverán azules, lo que indica que tenemos una billetera válida.
Ahora que tenemos una billetera operativa, puede hacer clic en la pestaña “Direcciones” para ver las direcciones de esta billetera, o hacer clic en la pestaña “Recibir” para obtener una dirección para recibir fondos.
Sparrow permite el control de monedas. Se puede etiquetar cada UTXO, se puede congelar o se puede gastar directamente desde un UTXO seleccionado. Esto es especialmente útil para tener una mejor administración de nuestros fondos y poder separar el saldo almacenado por categorías.
Una vez que esté listo para gastar, navegue hasta la pestaña “Enviar”. Allí, puede agregar varios receptores en la misma transacción copiando/pegando la dirección de Bitcoin del receptor o activando la cámara de su computadora para escanear un código QR de dirección de Bitcoin.
Debe agregar una etiqueta, ingresar la cantidad que desea gastar y puede ajustar fácilmente la tarifa del minero cómo lo desee.
Sparrow Wallet también traza un pequeño gráfico con los datos de Mempool.space para ayudarlo a estimar qué tan rápido se incluirá su transacción en la cadena de bloques. También se muestra un pequeño gráfico de conexión de transacciones. Una vez que todo se vea bien, seleccione “Crear transacción”.
En la siguiente pantalla, revise los detalles. Incluso puede agregar un retraso de transacción en función de la altura del bloque o la fecha. Una vez que esté listo, seleccione el botón “Finalizar transacción para firmar”.
Luego, seleccione el botón “Firmar” e ingrese la contraseña de su billetera, (si habilitó esta función). Una vez firmada, la transacción está lista para ser difundida. Seleccione el botón “Transmitir transacción” para enviar el pago a la red Bitcoin.
Sparrow tiene su propio explorador de bloques con el que puedes consultar tus transacciones. El visor de transacciones funciona como un explorador privado de blockchain. Todas las entradas y salidas gastadas están vinculadas para que pueda explorar el gráfico de transacciones y comprender el historial completo de transacciones, desde la transacción de la base de monedas. Además, cualquier transacción se puede cargar a través de su ID de transacción o representación hexadecimal/base64 (en texto o QR) para una inspección detallada.
Sparrow es una billetera de escritorio basada en pestañas, pero no utiliza tecnología de navegador. Al igual que una billetera de hardware es deliberadamente un dispositivo simple para reducir la cantidad de posibles fallas.
Sparrow funciona para admitir transacciones de Bitcoin firmadas parcialmente (PSBT) desde cero, lo que influye en todo, desde el diseño del almacén de claves hasta el editor de transacciones.
Sparrow es compatible con el protocolo BIP47, y puedes enviar/recibir directamente utilizando PayNym y las Tx aparecerán reflejadas en el historial de transacciones, al igual como aparecen en Samourai Wallet, lo que permite hacer una selección de monedas y administrar mejor el saldo…
PayNym: Expliquemos rápidamente que es el PayNym. La implementación de BIP47 es una mejora en la funcionalidad y privacidad de las billeteras HD, para aquellos que buscan establecer canales de pago recurrentes con sus pares, al proporcionarles códigos de pago reutilizables.
La clave es que estos códigos de pago son identificadores únicos que se pueden reutilizar para cada transacción sin dañar la privacidad, ya que las monedas se envían a una nueva dirección en la cadena de bloques cada vez que se realiza un nuevo pago, sin necesidad de cambiar el código. Estas direcciones públicas que se crean a partir del código de pago sólo son conocidas por el emisor y el receptor de la transacción.
El BIP47 define una técnica para crear un código de pago que se puede publicitar y asociar con una identidad de la vida real, sin crear la pérdida de seguridad o privacidad inherente a la reutilización de direcciones de Bitcoin del tipo P2PKH. El Paynym es una representación gráfica de ese código de pago generado por el BIP47 (PMT8…). Este código único de pago se crea a partir de la clave pública de la cartera del receptor en combinación con la llave privada del pagador más un código secreto que se encuentra en el identificador único. Esto hace que las direcciones generadas sean únicas para cada par de socios en el canal de pago.
Ahora veamos cómo funciona el PayNym en Sparrow Wallet. Como ya dijimos, PayNym consiste en la creación de un identificador único, mediante el cual se generará una nueva dirección BTC, cada vez que se va a recibir un pago. Así, los balances reales se mantienen privados, incluso a la vista de quien te envía.
Para crear el PayNym para tu billetera Sparrow, (recuerda que este PayNymID es una representación gráfica del código BIP47 que está asociado a tus llaves privadas y tu frase semilla) vamos a la barra de herramientas y seleccionamos en el enlace respectivo. Luego de unos segundos se habrá creado tu PayNym con un nombre, código e imagen únicos, para poder compartirlos con seguridad.
En esta misma ventana donde aparece tu PayNym podrás agregar e ir creando una lista de contactos con los que desees interactuar.
Si deseas realizar un pago hacia un PayNymID, el procedimiento es el mismo que si realizaras un envío a una dirección de BTC. Con la diferencia que seleccionas el apartado de PayNym.
Luego se abrirá la ventana donde está tu identificador y la lista de contactos que hayas creado. Puedes seleccionar desde esa lista o agregar un contacto nuevo para hacerle el pago.
Puedes hacer el envío directo hacia el destinatario, como lo harías hacia cualquier otra dirección de BTC, personalizando los detalles de la transacción. Solamente tú y quien recibe (el propietario del PayNym) conocen las direcciones involucradas en dicha transacción, una vez que la misma se ha enviado a la red de Bitcoin.
Otra forma de hacer un pago con Sparrow, incrementando la privacidad, es a través de un CoinJoin. En este caso, el envío de una transacción hacia un PayNymID o cualquier otra dirección de Bitcoin, es totalmente colaborativo, es decir, que hay que utilizar un usuario con Paynym activo para que se convierta en socio de canal de pago. Ambos comparten un input para construir un Tx donde las UTXO se mezclan en una transacción con varias salidas, rompiendo la trazabilidad de dicha transacción.
Al enviar la transacción se realizará el pago, pero hay que recordar que se cobrarán comisiones de red por las diferentes direcciones de mezcla que se utilicen, todo a la vez. Hay que tener saldo disponible para ese gasto. Ten en cuenta que el socio del canal de pago necesitará usar una billetera con al menos la misma cantidad de bitcoin que está enviando, esto es sólo para poder hacer una mezcla y que la transacción sea lo más privada posible.
Ahora tienes una billetera Sparrow funcionando conectada a tu propio nodo y ya sabes cómo hacer transacciones más privadas