Posted on Leave a comment

Cómo entrar en Bitcoin

Como últimamente tengo muchos amigos que me preguntan sobre como comprar bitcoin voy a dar algunos consejos de como empezar en el mundo Bitcoin.

No entro a explicar qué es Bitcoin porque sobre esto hay mucha información muy explicativa en Internet y me centro en como almacenar los bitcoin y donde poder comprarlos.

Para guardarlos existen varios tipos de billeteras/carteras donde se almacenan las claves privadas que te darán acceso a tus bitcoins.

  1. Hardware Wallet es el método más seguro y debería ser obligatorio si vas a comprar más de 1000 Euros/Dólares. Un Hardware Wallet para iniciados puede ser el Ledger y un enlace interesante es “Consejos a la hora de guardar los bitcoins en un hardware wallet” 
  1. Una aplicación de Billetera para Bitcoin en el móvil es la opción más cómoda ya que no hay que comprar ningún dispositivo ni darse de alta en ninguna web, es interesante para empezar y para almacenar poca cantidad de bitcoin o satoshi. Por norma general la opción app en el móvil es más segura que una aplicación en el ordenador. Una opción para los móviles Android sería Samourai Wallet y para iPhone Blue Wallet.
  1. Tener los bitcoin en una web on-line, estos sitios se llaman Exchanges. Tienen el gran inconveniente de que en esta opción tu no eres el propietario de las claves que dan acceso a tus bitcoin sino que la guarda el exchange ahí tu tienes un acceso con usuario y clave que te permite operar con ellos. La gran ventaja es que puedes conectar tu cuenta del banco o tu tarjeta de crédito y hacer compras y ventas de forma muy sencilla, una aclaración es que no todos los bancos permiten operar con estos sitios, por ejemplo a días de hoy Bankia no lo permite y el Banco de Santander si.

Mi recomendación es utilizarlo para comprar y cuando hayáis almacenado una cierta cantidad enviaros los bitcoin/satoshi a vuestra billetera móvil o al hardware wallet.

Exchanges más populares Coinbase, Binance y Kraken.

Cómo instalar en el móvil la app Samourai Wallet, la operativa es muy similar en la app Blue Wallet.

  • Crear billetera nueva
  • Crear contraseña y pin
  • Copiar en un papel las palabras de recuperación (mejor en dos papeles por si se pierde uno). No compartimos estas palabras con nadie, ni las subimos a ningún sitio de Internet, ni hacemos una foto con el móvil.
  • Ahora tenéis que enviaros una pequeña cantidad de bitcoin o satoshi ( 1 bitcoin son 100.000.000 satoshi) para comprobar que os llega y para chequear que habéis hecho bien la copia de las palabras de recuperación (semilla). 
  • Ir a la opción de recibir y ahí os aparecerá una dirección y un QR donde os tendréis (o trendrán) que enviar los satoshi. Una vez hecho el envío os tocará esperar a que se confirme la transacción.
  • Cuando os hayan llegado los satoshi y los veais en la billetera debéis eliminar totalmente la app del móvil para asegurarnos que podemos recuperarla.
  • Instalar de nuevo la app de Samourai Wallet y en vez de crear una billetera nueva la importáis tenéis que ir a la configuración (los tres puntitos que están en la parte superior derecha) y elegir la opción de importar billetera externa.
  • Introducir las las palabras de recuperación
  • Crear el pin
  • Comprobar que están los bitcoin/satoshi en la cartera, si no están no debéis utilizar esta billetera ya que correis el riesgo de perder los satoshi si perdieseis el móvil. En este caso lo mejor es eliminar la app y volver a instarlar la app Samourai Wallet y hacer de nuevo todo el proceso.

Como consejo aprendido de mi experiencia es que la mejor forma de compra es hacer una compra pequeña de forma regular para evitar la volatilidad que hay en el precio.

Posted on Leave a comment

Verificar que sigues teniendo tus BTC

El miedo es libre por lo que por mucho que hayas seguido todas las medidas de seguridad a la hora de crear tu semilla y de almacenar tus bitcoin cada cierto tiempo querrás revisar que estos siguen ahí. Esto se puede hacer de varias formas en este artículo lo haremos a partir de las palabras de la semilla y de la passphrase.

Primer paso. Importar tu clave pública maestra (XPUB/YPUB/ZPUB) en un wallet y comprobar que siguen ahí tus bitcoins. Para ello lo mejor es que tengamos guardada nuestra clave pública maestra y que la importemos en un wallet, esta clave te permite ver los fondos que tienes pero no gastarlos. Lo más recomendable si se quiere asegurar la privacidad es importarlo en un wallet que se conecte a tu nodo de Bitcoin como Electrum, Samourai wallet, Wasabi… 

Segundo paso. Comprobar las direcciones públicas o/y la clave pública maestra asociadas a tu semilla (y la passphrase si la utilizaste) son iguales para ello necesitaremos tener guardadas la semilla, la passphase, el tipo de script, la clave pública maestra y las primeras direcciones públicas. 

Tercer paso. Revisar los fondos de algunas de tus direcciones públicas en un explorador de la cadena de Bitcoin. Por un tema de asegurar tu privacidad es mejor si tienes tu propio Bitcoin full node y la comprobación la haces sobre tu nodo.

Pasos a seguir:

  1. Preparar un USB con el sistema operativo Tails con Electrum
  2. Arrancar el ordenador con el USB con Tails y sin conexión a Internet. Es necesario activar el volumen persistente e introducir la clave que se haya puesto.
  3. Arrancar Electrum en Tails (Applications –> Internet –> Electrum Bitcoin Wallet)
    1. Opciones:
      • Wallet: nombre_que_se_quiera
      • Standard wallet
      • I already have a seed
    2. Escribir las 12/24 palabras de la semilla
    3. Si se puso una passphrase marcar las opciones: 
      • Extend this seed with custom words
      • BIP39 seed
    4. Introducir la passphrase
    5. Introducir el Script type y Derivation path
    6. Introducir una password para poder acceder al  wallet en un futuro. Se puede poner lo que se quiera, lo borraremos al acabar la comprobación.
  1. Comprobaciones:
    1. Que las primeras direcciones públicas asociadas a esa semilla son las mismas que teníamos guardadas.
      • Tools -> Show -> Address
    2. También podemos comprobar que la clave pública maestra es igual a la guardada.
  1. Eliminar el Wallet creado. Aunque estemos offline y el acceso a la wallet es con clave mejor eliminarlo.
    • File -> Delete
  1. Comprobar que alguna de tus direcciones públicas tienen los fondos en un explorador de la blockchain de Bitcoin. Este paso lo haremos en un ordenador o un móvil con acceso a Internet. Si tienes un Bitcoin full node utiliza el explorador que viene con él así mantendrás tu privacidad y si no lo tienes puedes utilizar el explorador de la cadena otx.me, entre otros.  

Posted on 1 Comment

Consejos a la hora de guardar los bitcoins en un hardware wallet

Se tiende a dar por hecho que simplemente por tener una hardware wallet y almacenar ahí las claves de acceso a nuestros bitcoins ya están seguros y por desgracia eso no es así, si no seguimos una serie de pautas podemos dejar expuestas nuestras claves a terceros y comprometer así nuestros bitcoins.

  • Utilizar un Hardware Wallet para almacenar los bitcoins (las claves de acceso).
  • Comprarlo directamente en la web del fabricante y no en el website de un intermediario, hay que reducir riesgos. Una buena opción es comprarlos en alguna tienda física garantizando así el anonimato del comprador.
  • Asegurarse que la web es realmente la del fabricante y revisar la URL y asegurarse que la conexión está cifrada (protocolo HTTPS) es decir que en el navegador aparece un candado. Hay que estar seguro de que compramos el dispositivo en la web adecuada.
  • A la hora de dejar los datos en la web de compra no dejar los datos reales. Es posible que en un futuro la base de datos de la empresa sea comprometida y acabe la información en la darkweb, véase el caso de Ledger.
    • Utilizar una cuenta de correo temporal o por lo menos que no sea la del uso principal.
    • No poner la dirección del domicilio para la entrega, utilizar la oficina o un punto de recogida público como tiendas, gasolineras, boxs…
  • Al llegar el HWW (Hardware Wallet) revisar que no ha sido abierto previamente en caso de duda contactar con el fabricante y devolverlo. Evitando un posible ataque a la cadena de suministro.
  • Si es un HWW que hay que conectarlo a Internet y bajarse y actualizar el software asegurarse que este se descarga de la web del fabricante. Es recomendable verificar la firma del software, no queremos instalar en el dispositivo un software que no corresponde.
  • A la hora de escribir las palabras de la semilla de respaldo hay que estar sólo en la habitación y asegurarse que no tiene cámaras web activas ni apuntando donde se está escribiendo las palabras. Quien tiene las claves tiene los bitcoins.
  • Las palabras se deberán copiar por duplicado y a ser posible en un soporte a prueba de deterioro y de fuego por ejemplo una placa metálica también es recomendable apuntar las rutas de derivación (Derivation Path). Que el perder una copia de respaldo no suponga perder los bitcoins.
  • Es conveniente utilizar una passphrase adicional ya que esta no se guarda en el dispositivo y añade una capa más de seguridad por ejemplo si alguien hubiese accedido al dispositivo durante la cadena de suministro y lo hubiese modificado no tendría esa clave o si el HWW generase mal las palabras de la semilla y se pudiesen deducir sin la passphrase no podrían acceder a los fondos.
  • No guardar las claves en dispositivos que se conecten a Internet  como ordenadores, móviles, tablets… Nadie puede asegurar que un dispositivo no está comprometido, no arriesguemos los fondos de forma innecesaria.
  • Guardar las palabras de la semilla con toda la seguridad y privacidad que se pueda ya que el acceso a ellas por un tercero puede suponer la pérdida de los bitcoins. No nos confiemos con el guardado de las claves con el tiempo por nuestra casa pueden pasar muchas personas tanto conocidas como desconocidas.
  • Si se ha usado la opción de passphrase adicional guardarla en una ubicación distinta de las palabras de la semilla de manera que si alguien consiguiera hacerse con una de las dos, semilla o passphrase no podría hacerse con los fondos ya que necesitaría la otra.

Queda fuera de este artículo pero es bueno tener un plan de herencia porque no son pocos los bitcoins que se han perdido porque el propietario no contó a sus herederos como hacerse con ellos una vez muerto.

Posted on Leave a comment

10 formas de perder tu bitcoin

Traducción al español del artículo “10 ways to lose your bitcoin” de Bitcoin Q+A  

Con la reciente ola de ataques de phishing que ha sufrido la empresa Ledger y que por desgracia han demostrado ser efectivos me he lanzado a escribir un breve artículo para compartir con los recién llegados de Bitcoin para advertirles de las formas más comunes en las que pueden perder el control de sus preciados sats. Por favor, no dejes que estos incidentes te desanimen a la hora de entrar en Bitcoin, el mundo poco a poco está despertando al mejor dinero que hemos tenido. Desafortunadamente esa misma propiedad hace que Bitcoin sea muy atractivo tanto para la gente normal como para los estafadores.

Todos los riesgos que se describen a continuación se pueden mitigar al 100% si se informa, hace preguntas y se mueve con cuidado. Dicho esto, si no estás seguro de algo no dudes en comunicarte y preguntarme cualquier duda.

Antes de comenzar cubramos parte de la terminología básica utilizada en este artículo…

Semilla: Por lo general son 12 o 24 palabras y son una copia de seguridad legible por humanos de toda su billetera Bitcoin. Estas palabras se pueden importar a casi cualquier software de billetera para recuperar todas las direcciones, claves privadas y públicas que la billetera puede generar. Tus palabras clave (semilla) son tu bitcoin cualquiera que tenga acceso a ellas tiene acceso a todos tus bitcoins. Protégelos y haga una copia de seguridad que sea resistente al fuego, al agua y a la corrosión, etc.

Frase de contraseña: Una palabra o varias palabras adicionales a la semilla que se especifica al crear la billetera, con ella se consigue un nivel adicional de seguridad contra ataques. Si usa una billetera protegida con una contraseña para poder recuperar su billetera debe tener las palabras de su semilla y su frase de contraseña. Almacene sus palabras y su frase de contraseña por separado.

Clave privada: Necesaria para poder gastar los bitcoins. Un usuario debe demostrar la propiedad de sus bitcoins mediante el uso de una clave privada. Es una larga cadena de letras y números que no son muy amigables para el ojo humano. Gracias al moderno software de billetera con interfaces de usuario simplificadas, un usuario típico casi nunca interactuará directamente con ellos.

Copias de seguridad

Como se mencionó anteriormente, las palabras de su semilla (y frase de contraseña si se especifica) son su copia de seguridad de sus bitcoin. Si se lo roban, lo pierde o lo destruyen ya no va a poder acceder a su billetera activa (por ejemplo, si pierde su teléfono o dispositivo de hardware) está jodido. Cualquiera que tenga acceso a las palabras de tu semilla tiene acceso a tu billetera, así que tenlo en cuenta al seleccionar una ubicación de almacenamiento.

Del mismo modo, hay personas que han perdido sus propios sats al complicar demasiado su esquema de copia de seguridad, utilizando algún método de memoria ‘ultra seguro’, que acaban olvidando o hacen imposible que su familia pueda recuperarlos en caso de su muerte.

Copia de seguridad de la semilla de blockplate

Solución 1: Almacene las palabras de su semilla con un método que pueda soportar muchos abusos.

Solución 2: No complique demasiado su copia de seguridad, es posible que su familia necesite recuperar su billetera cuando no esté cerca. Considere utilizar un servicio como Mensaje final para la planificación de la herencia.

Solución 3: Si utiliza una frase de contraseña almacene una copia de seguridad en una ubicación distinta a su semilla.

Exchanges comprometidos

Los ataques con éxito a los sitios de intercambios son casi tan antiguos como el propio Bitcoin. Ha habido y sigue habiendo múltiples hacks cada año en los que miles de personas pierden su dinero con poca o ninguna esperanza de recuperarlo. Puede ser fácil comprar sats en un intercambio y dejarlo allí pero todos los días que su bitcoin se almacena con un tercero corre un riesgo. Estos ataques ocurren repentinamente y sin previo aviso y, a veces, ocurren dentro de la organización.

“Si no tienes tus claves, no tienes tus bitcoins”.

Solución 1: Retire su bitcoin inmediatamente después de la compra a una billetera donde controle las claves privadas.

Solución 2: Use intercambios sin custodia como Bisq o Hodl Hodl donde siempre tiene el control de sus claves privadas.

Ataques de phishing

Un ataque de phishing esencialmente engaña a una persona para que ceda voluntariamente el acceso a su bitcoin con falsos pretextos, generalmente engañando al usuario para que entregue sus palabras iniciales. Los dos métodos más comunes de estos ataques son: 

  • Enviar un mensaje de texto o correo electrónico a alguien que pretende ser de un fabricante de carteras de hardware, indicando que hay un problema con su cuenta e indicándole que vaya a un sitio web rápidamente para tomar medidas. Por supuesto, el sitio web es malicioso y parece idéntico al que un usuario esperaría ver, a menudo con un nombre de dominio muy similar para no levantar sospechas. Una vez en el sitio malicioso, se le pedirá al usuario que ingrese sus palabras iniciales para ‘asegurar’ su bitcoin, momento en el que se agotará toda su billetera.
  • Enviar mensajes a alguien en una aplicación de chat como Telegram. Por lo general, estos estafadores esperan a que las personas hagan una pregunta en un grupo de chat público y luego envían un mensaje privado a la persona que finge ser de ‘atención al cliente’. En ese momento, construyen una relación con el pretexto de ayudarlos a rectificar el problema, cuando en realidad están trabajando para que el usuario renuncie a sus palabras iniciales.

Texto de phishing de coindesk.com

Solución 1: NUNCA ingrese sus palabras iniciales en un sitio web, bajo ninguna circunstancia.

Solución 2: Los usuarios de billeteras de hardware solo deben ingresar sus palabras iniciales directamente en el dispositivo

Solución 3: Sospeche inmediatamente de cualquier persona que le envíe mensajes privados en una sala de chat relacionada con Bitcoin.

Solución 4: Cuándo compre hardware relacionado con Bitcoin, use correos electrónicos desechables para registrarse y, si es posible, intente que los artículos se entreguen en otro lugar que no sea su domicilio.

Configuraciones complejas

Al ingresar a Bitcoin puede ser fácil querer probar todas las últimas carteras súper seguras, configuraciones y nodos multi-sig, etc. Pero una mayor seguridad conlleva una mayor complejidad. Para la mayoría de las personas que comienzan una billetera móvil como Samourai o Blue que se haya respaldado adecuadamente es más que suficientemente segura. Primero, siéntete cómodo con los conceptos básicos de una billetera móvil, luego busca pasar a una billetera de hardware como Coldcard a medida que aumentan tus tenencias de bitcoins. Ni siquiera considere una configuración multi-sig hasta que esté 100% seguro del proceso. Lea este hilo de Twitter para tener una idea de lo que quiero decir.

Logotipo de Bitcoin de KISS

Solución 1: Al empezar, “hazlo simple, estúpido”.

Solución 2: Practica limpiar y restaurar tu billetera varias veces usando tus palabras clave antes de enviar grandes cantidades de sats.

Trading

Para el 95% de la población, el comercio de criptomonedas es simplemente un juego de azar. Estos intercambios están configurados para tomar sus bitcoins. Lo entiendo, existe la tentación de aumentar su pila de bitcoins mediante el comercio de monedas alternativas (altamente volátiles), pero créame, se arruinará. Puede haber un grupo muy pequeño de la población con las habilidades necesarias para comerciar en el mercado y obtener ganancias, ¡pero ese tipo al que sigues en YouTube no es uno de ellos!

Gráfico de vista comercial

Solución 1: No opere. ¡Fácil!

Obsequios ‘gratuitos’

En el año 2020 ocurrió uno de los mayores hacks que Twitter haya visto. Un individuo obtuvo acceso a algunas de las cuentas más grandes de la plataforma y, una vez dentro, el atacante publicó tweets de estas cuentas ofreciendo devolver el doble de bitcoins a cualquiera que haya depositado en la dirección mostrada. Por supuesto, una vez que el bitcoin se depositó en la dirección de los piratas, no se le rembolsó BTC alguno. Según los informes, el escaneo obtuvo alrededor de $ 110000 en BTC.

Solución 1: Si suena demasiado bueno para ser verdad, ¡es casi seguro que lo es! Cualquiera que prometa enviarte más bitcoins después de que les envíes es un estafador.

Software malicioso

El software malicioso es una de las formas más complejas de librarlo de su bitcoin. Estos tipos de ataques generalmente dependen de que un usuario descargue un software que se ve y actúa como el verdadero, de una fuente que también parece genuina. La diferencia es que el software malicioso tiene funciones integradas diseñadas para robar su bitcoin. Esto puede suceder de varias formas, pero las dos más comunes son: –

  • Cuando un usuario envía una transacción, el malware cambiará la dirección de recepción especificada por el usuario por una controlada por el estafador.
  • El software genera un conjunto de palabras semilla que ya está controlado por el estafador. Cuando el usuario desprevenido deposita bitcoins, el estafador puede gastarlo en la otra dirección que controle.

Página de descarga de Electrum falsa (observe la URL)

Solución 1: Descargue su software de Bitcoin de una fuente confiable. Preste mucha atención a la URL a la que accede, los estafadores se están volviendo inteligentes con trucos como usar ‘ ë’ en lugar de ‘e’. Si no está seguro, pregunte en la comunidad.

Solución 2: Todo el software de código abierto debe estar firmado por uno de los miembros del equipo de desarrolladores. Si tiene el conocimiento para hacerlo, verifique que esta firma coincida con la proporcionada por la fuente de descarga oficial. Esto demuestra que el software que está descargando fue producido por quien esperaba.

Intercambio de Sim

Un intercambio de SIM ocurre cuando un atacante obtiene el control de la cuenta de teléfono móvil de alguien. Para tener éxito el atacante se hace pasar por la víctima en persona en una tienda o, más comúnmente, por teléfono con el proveedor de servicios móviles y declara que la tarjeta SIM de la víctima ha sido comprometida y necesita ser desviada a otro número (que ellos controlan). Una vez que el atacante tiene el control del número de teléfono de la víctima, procede a usar la autenticación por SMS para obtener acceso a las cuentas de correo electrónico y cualquier cuenta de bitcoin en línea y buscar fondos para robar.

Explicador de intercambio de sim – technadu.com

Solución 1: No guarde bitcoins en una cuenta en línea como un intercambio.

Solución 2: No utilice la autenticación de 2 factores por SMS. Siga con una aplicación o un enfoque basado en claves .

Solución 3: Llame a su proveedor de servicios de telefonía móvil y coloque un candado de seguridad en su cuenta, asegurándose de que debe ir a la tienda y presentar una identificación para realizar cualquier cambio en la cuenta.

Solución 4: Este ataque depende de que el pirata informático conozca cierta información sobre usted. Mantenga la información personal que publica en línea al mínimo absoluto.

Enviar a la cadena incorrecta

Este tipo de percance se ha vuelto cada vez más difícil de hacer con la introducción de nuevos tipos de direcciones, pero aún es posible enviar bitcoin (BTC) a una dirección de bitcoin cash (BCH). Si lo hiciera, las monedas se perderían o, como mínimo, sería muy difícil de recuperar para el usuario medio.

Explorador de bloques que detalla las direcciones coincidentes

Solución 1: Verifique siempre que está enviando a una dirección de Bitcoin, generada por alguien que tenga una billetera de Bitcoin ‘adecuada’.

Usar carteras no convencionales

Una situación mucho menos común con el auge de los tipos de billetera moderna, pero que vale la pena mencionar. Un usuario puede perder bitcoin mediante el barrido de sólo una parte del saldo total de un p cartera aper a una nueva cartera y posteriormente destruir el pensamiento de papel cartera que el saldo restante de la cartera de papel ahora se mantiene como el cambio en la nueva cartera. Esto se explica en detalle aquí.

Ejemplo de billetera de papel

Solución 1: Si va a usar billeteras de papel, úsalas sólo una vez y gaste todo el saldo.

Conclusiones

– No hay reembolsos en Bitcoin.

– Sospecha de todos.

– Las palabras de tu semilla son tu bitcoin, guárdalas con tu vida.

Nunca ingrese sus palabras iniciales en un sitio web.

– Eduque a cualquier persona que tenga acceso a sus copias de seguridad para que no caiga en estas trampas.

Posted on 1 Comment

Exporting Bitcoin UTXO to Postgres database

utxo Bitcoin

UTXO (Unspent Transaction Output) are transactions in which the outputs have not been spent, that is, sent to another address. A Bitcoin transaction is made up of one or more incoming addresses with BTC/satoshis and one or more outgoing addresses where the funds end. If these BTC have not been sent in another subsequent transaction to another address, it is called UTXO. The sum of all the UTXO exit funds add up to the total of coins there are. In Bitcoin there is a database called chainstate that contains only those transactions and that is used to avoid having to perform certain searches on the entire Blockchain. 

To save these UTXOs,software is used, it LevelDB is a key-value storage of very fast reading and writing developed by Google that provides an ordered assignment of keys and values.

Greg Walker has implemented theutility bitcoin-utxo-dump to export the UTXO and for this he relied onbitcoin tools Sergi Delgado Segura’s, we used the in3rsha tool to create a script that dumps all the UTXO is a base of PostgreSQL data. Thanks to this, we can make any query about UTXO with the facilities provided by a relational database.

I take this opportunity to launch some queries on the utxo table generated to find out how many addresses there are with more than 0.00001, 0.1, 1 and 1000 BTC. If we were interested in having this data daily, for example, to know the evolution of the number of whales (> = 1000BTC), we would only have to create a job in linux to execute the script every day.

https://github.com/BGeometrics/bitcoin-utils/blob/master/scripts/utxo2ddbb.sh

#!/bin/bash

# Script to dump bitcoin utxo database to postgres database
 
# Install go and postgreSQL
#### apt install golang postgresql
# Stop bitcoin full node because two applications cannot access LevelDB at the same time
# Access user postgres
#### sudo su - postgres

DIR_CHAINSTATE=/mnt/hgfs/Proyect/bitcoin-utxo-dump/chainstate
DIR_DUMP=/mnt/hgfs/Proyect/bitcoin-utxo-dump/
PGPASSWORD=postgres
 
# Download and compile program bitcoin-utxo-dump of ins3rsha
go get github.com/in3rsha/bitcoin-utxo-dump

# Execure dump Bitcoin utxo to file
./go/bin/bitcoin-utxo-dump -db $DIR_CHAINSTATE

# Import dump in table in database
psql -d postgres -U postgres -c "DROP INDEX IF EXISTS index_address_amount;"
psql -d postgres -U postgres -c "DROP TABLE IF EXISTS utxo;"
psql -d postgres -U postgres -c "CREATE TABLE IF NOT EXISTS utxo (id INT NOT NULL, tx_id VARCHAR(100) NOT NULL, vout INT NOT NULL, amount BIGINT NOT NULL, type VARCHAR(50) NOT NULL, address VARCHAR(100));"
psql -d postgres -U postgres -c "copy utxo(id, tx_id, vout, amount, type, address) FROM '$DIR_DUMP/utxodump.csv'  DELIMITER ',' CSV HEADER;"
psql -d postgres -U postgres -c "CREATE INDEX IF NOT EXISTS index_address_amount ON utxo (address, amount);"
psql -d postgres -U postgres -c "CREATE TABLE IF NOT EXISTS address (THE_DATE DATE NOT NULL DEFAULT CURRENT_DATE, BTC000001 INT, BTC1 INT, BTC1000 INT);"

# Selects
# Address >= 0.00001 BTC
BTC000001=$(psql -d postgres -U postgres -t -c "select count(*) from (select address, sum(amount) / 100000000 as BTC from utxo group by address having sum(amount) / 100000000 >= 0.00001) B000001")

# Address >= 1 BTC
BTC1=$(psql -d postgres -U postgres -t -c "select count(*) from (select address, sum(amount) / 100000000 as BTC from utxo group by address having sum(amount) / 100000000 >= 1) B1")

# Whales Bitcoin, address >= 1000 BTC
BTC1000=$(psql -d postgres -U postgres -t -c "select count(*) from (select address, sum(amount) / 100000000 as BTC from utxo group by address having sum(amount) / 100000000 >= 1000) B1000")
psql -d postgres -U postgres -c "INSERT INTO address(BTC000001, BTC1, BTC1000) VALUES ($BTC000001, $BTC1, $BTC1000)"

psql -d postgres -U postgres -c "select * from address"
Posted on Leave a comment

Exportación de los UTXO de Bitcoin a una base de datos

utxo Bitcoin

Los UTXO (Unspent Transaction Output) son las transacciones en las cuales las salidas no han sido gastadas es decir enviadas a otra dirección. Una transacción en Bitcoin está compuesta por una o varias direcciones de entrada con BTC/satoshis y una o varias direcciones de salida donde acaban los fondos, si estos BTC no han sido enviados en otra transacción posterior a otra dirección se la denomina UTXO. La suma de todos los fondos que hay en las direcciones de salida de las UTXO suman el total de monedas que hay. En Bitcoin existe una base de datos denominada chainstate que contiene únicamente esas transacciones y que se utiliza para evitar tener que realizar ciertas búsquedas sobre toda la Blockchain. 

Para guardar estos UTXO se utiliza el software LevelDB que es un almacenamiento clave-valor de muy rápida lectura y escritura desarrollada por Google que proporciona una asignación ordenada de claves y valores.

Greg Walker ha implementado la utilidad bitcoin-utxo-dump para exportar las UTXO a un fichero de texto, para ello se basó en las bitcoin tools de Sergi Delgado Segura, aquí vamos a utilizar la herramienta de in3rsha para crear un script que haga el dump de todos los UTXO a una base de datos PostgreSQL. Gracias a ello podemos realizar cualquier consulta sobre los UTXO con las facilidades que nos provee una base de datos relacional.

Una vez exportadas transacciones aprovecharemos para lanzar unas consultas sobre la tabla utxo generada para saber cuántas direcciones hay con más de 0,00001, 0,1, 1 y 1000 BTC. Si nos interesase tener estos datos diariamente, por ejemplo para conocer la evolución del número de ballenas (>= 1000BTC), sólo tendríamos que crear un job en linux para ejecutar el script diariamente.

https://github.com/BGeometrics/bitcoin-utils/blob/master/scripts/utxo2ddbb.sh

#!/bin/bash

# Script to dump bitcoin utxo database to postgres database
 
# Install go and postgreSQL
#### apt install golang postgresql
# Stop bitcoin full node because two applications cannot access LevelDB at the same time
# Access user postgres
#### sudo su - postgres
# Create directory for GOPATH
#### mkdir $HOME/go
#### export GOPATH="$HOME/go/"

DIR_CHAINSTATE=/mnt/hgfs/Proyect/bitcoin-utxo-dump/chainstate
DIR_DUMP=/mnt/hgfs/Proyect/bitcoin-utxo-dump/
PGPASSWORD=postgres
 
# Download and compile program bitcoin-utxo-dump of ins3rsha
go get github.com/in3rsha/bitcoin-utxo-dump

# Execure dump Bitcoin utxo to file
./go/bin/bitcoin-utxo-dump -db $DIR_CHAINSTATE

# Import dump in table in database
psql -d postgres -U postgres -c "DROP INDEX IF EXISTS index_address_amount;"
psql -d postgres -U postgres -c "DROP TABLE IF EXISTS utxo;"
psql -d postgres -U postgres -c "CREATE TABLE IF NOT EXISTS utxo (id INT NOT NULL, tx_id VARCHAR(100) NOT NULL, vout INT NOT NULL, amount BIGINT NOT NULL, type VARCHAR(50) NOT NULL, address VARCHAR(100));"
psql -d postgres -U postgres -c "copy utxo(id, tx_id, vout, amount, type, address) FROM '$DIR_DUMP/utxodump.csv'  DELIMITER ',' CSV HEADER;"
psql -d postgres -U postgres -c "CREATE INDEX IF NOT EXISTS index_address_amount ON utxo (address, amount);"
psql -d postgres -U postgres -c "CREATE TABLE IF NOT EXISTS address (THE_DATE DATE NOT NULL DEFAULT CURRENT_DATE, BTC000001 INT, BTC1 INT, BTC1000 INT);"

# Selects
# Address >= 0.00001 BTC
BTC000001=$(psql -d postgres -U postgres -t -c "select count(*) from (select address, sum(amount) / 100000000 as BTC from utxo group by address having sum(amount) / 100000000 >= 0.00001) B000001")

# Address >= 1 BTC
BTC1=$(psql -d postgres -U postgres -t -c "select count(*) from (select address, sum(amount) / 100000000 as BTC from utxo group by address having sum(amount) / 100000000 >= 1) B1")

# Whales Bitcoin, address >= 1000 BTC
BTC1000=$(psql -d postgres -U postgres -t -c "select count(*) from (select address, sum(amount) / 100000000 as BTC from utxo group by address having sum(amount) / 100000000 >= 1000) B1000")
psql -d postgres -U postgres -c "INSERT INTO address(BTC000001, BTC1, BTC1000) VALUES ($BTC000001, $BTC1, $BTC1000)"

psql -d postgres -U postgres -c "select * from address"

La versión en Inglés Exporting bitcoin utxos to a database.

Posted on Leave a comment

De la semilla a los BTC

Muchos hodlers de BTC para acumular bitcoins no utilizan un hardware wallet, les basta y les sobra con una semilla, una clave (passphrase) y las direcciones públicas a las que envían los bitcoins. Siempre es interesante guardar también el derivation path que indica las claves que se están utilizando y facilita la importación, y la clave pública maestra por si se quiere saber de forma sencilla los fondos totales.

Esta opción es perfecta, lo único que en diversos momentos puede quedar la duda de si las direcciones donde estás enviando los BTC corresponden con la semilla que tienes, para disipar esa incertidumbre y hacerlo de forma segura lo mejor es realizar una importación de la semilla y comprobar algunas de las direcciones públicas y la clave pública maestra.

Cómo hacerlo:

  • Descargarse el sistema operativo Tails que es un Linux portable orientado a la privacidad.
  • Grabarlo en un dispositivo USB, tal y como se indica en su página web.
  • Arrancar un ordenador con el dispositivo USB con Tails conectado. Si no arrancase Tails puede ser posible que sea necesario entrar en la BIOS y haya que cambiar el orden de inicio del sistema para que cargue el S.O. que está en el USB antes que el que está en el disco duro.
  • Una vez iniciado Tails hay que crear un almacenamiento persistente cifrado donde estará el cliente de Bitcoin, Electrum, que está en la opción Útiles. 

En este almacenamiento creado se permite guardar todo tipo de ficheros.

  • Una vez creado nos solicitará reiniciar el sistema y cuando aparezca la pantalla de bienvenida de Tails hay que elegir la opción de Almacenamiento Persistente Cifrado e introducir la clave que hemos puesto antes. No configurar la wifi ya que no se va a necesitar ni se quiere tener conexión a Internet.
  • Arrancar la aplicación de Electrum que está en el menú Aplicaciones -> Internet.

En Electrum crear una cartera estándar y elegir la opción de ya tengo una semilla.

En la caja de texto introducir las palabras de la semilla, luego la clave (passphrase) y el deirvation path.

  • Una vez introducido todo se inicia la wallet de Electrum y en la opción direcciones (Address) se muestran las primeras direcciones públicas que son las que tienen que coincidir con las que estamos utilizando para enviarnos los BTC. También se puede obtener la master public key (XPUB o YPUB o ZPUB). Esta master key se puede importar en un wallet como Electrum, BlueWallet… y así saber la cantidad total de BTC que tenemos, eso sí el compartir la XPUB con terceros no compromete nuestros fondos ya que es pública pero pueden saber los fondos de que disponemos, si no queremos dar esta información lo mejor sería importar esta clave en un Electrum conectado a un full node de Bitcoin nuestro, pero eso es otra historia.
Posted on Leave a comment

BCubium out stock

BCubium out stock

We have not sent for a long time BCubium Because the motherboard on which it is mounted, the NanoPi NEO Plus2 Friendly Elect has stopped manufacturing it which has caused us to run out of supply.

There are several websites that sell the ones they have in warehouses at high prices but that does not guarantee supply in the medium term.

It is true that there are many other boards in the market but our bet was to have a minimalist Bitcoin full node, that is, of very small dimensions (FAQs) to have a node with larger measures, there are already very interesting solutions on the market.

The BCubium web project has been released on Github from the beginning in the BGeometrics BCubium-web repository. The rest of the project, which are installation, configuration and management scripts, will be released later.

BCubium is a complete Bitcoin node in a wenge wood cube of only 62 mm on a side to achieve these minimum dimensions. It is used:

  • Motherboard NanoPi NEO Plus2
  • CPU: Allwinner H5 , Quad-core 64-bit high-performance
  • DDR3 RAM: 1GB
  • WiFi: 802.11b / g / n
  • 500GB microSD Samsung or Lexar

On that hardware runs: 

  • Bitcoin Core 0.20
  • Lightning Network Daemon 0.10.0-beta
  • Tor 0.2.9.14
  • BTC RPC Explorer 1.1.8
  • Ride The Lightning 0.7-beta
  • WireGuard
  • BCubium 0.0 .1 It

It may seem that it is just about resources but it is enough for what a full node is required to do: update the Blockchain, request information through BTC-RPC Explorer or directly with RCP commands and basic operations with LND and Ride The Lightning. It falls short to synchronize the history of the Blockchain, that’s why it was sent preloaded and when starting the LND process it demands a lot of RAM so we adjust the parameters of Bitcoin Core reducing it. The use of Docker containers was not chosen due to the excess consumption of both CPU and RAM (Why don’t we use Docker in BCubium full node).

So with this notification we end our journey with BCubium, our minimalist full node. 

Posted on Leave a comment

Sin stocks de BCubium

BCubium out stock

Desde hace tiempo ya no enviamos BCubium porque la placa base sobre la que está montado, la NanoPi NEO Plus2 de Friendly Elect ha dejado fabricarlo lo que ha provocado que nos hayamos quedado sin suministro.

Hay varias websites que venden las que tienen en los almacenes a precios elevados pero eso no garantiza el suministro a medio plazo.

Es cierto que existen en el mercado otras muchas placas pero nuestra apuesta era tener un Bitcoin full node minimalista es decir de dimensiones muy reducidas (FAQs) para tener un nodo con medidas más grandes ya existen en el mercado soluciones muy interesantes.

El proyecto web de BCubium ha estado liberado en Github desde el principio en el repositorio BCubium-web de BGeometrics. El resto del proyecto que son scripts de instalación, configuración y gestión lo liberaremos más adelante.

BCubium es un nodo completo de Bitcoin en un cubo de madera de wengué de sólo 62 mm de lado para conseguir tener esas dimensiones mínimas se utiliza:

  • Motherboard NanoPi NEO Plus2
  • CPU: Allwinner H5,Quad-core 64-bit high-performance
  • DDR3 RAM: 1GB
  • WiFi: 802.11b/g/n
  • 500GB microSD Samsung or Lexar

En ese hardware se ejecuta: 

  • Bitcoin Core 0.20
  • Lightning Network Daemon 0.10.0-beta
  • Tor 0.2.9.14
  • BTC RPC Explorer 1.1.8
  • Ride The Lightning 0.7-beta
  • WireGuard
  • BCubium 0.0.1

Puede parecer que va justo de recursos pero es suficiente para lo que se le pide a un full node: actualizar la Blockchain, solicitud de información a través de BTC-RPC Explorer o directamente con comandos RCP y operativa básica con LND y Ride The Lightning. Se queda corto para sincronizar el histórico de la Blockchain, por eso se enviaba precargado y a la hora de arrancar el proceso de LND demanda mucha RAM por lo que ajustamos los parámetros de Bitcoin Core reduciéndola. No se optó por la utilización de contenedores Docker por el exceso de consumo tanto de CPU como de RAM (Why don’t we use Docker in BCubium full node).

Así que con esta notificación finalizamos nuestra andadura con BCubium nuestro full node minimalista.

Posted on Leave a comment

Recomendaciones a la hora de comprar hardware wallet

Hardware Wallet Security

El 25 de junio de este año uno o unos ciberdelincuentes accedían a la base de datos de más de un millón de clientes de Ledger, empresa que vende dispositivos hardware wallet para almacenar bitcoins y otras criptomonedas.

El 28 de octubre muchos de los usuarios del hardware wallet recibieron correos electrónicos y SMS fraudulentos donde se hacían pasar por la empresa y les invitaban a instalarse una versión del software para hacerse con las claves privadas de los usuarios y robarles las criptomonedas.

Este hecho vuelve a poner de manifiesto que cuando se trata de almacenar bitcoins todas las precauciones son pocas. Todos los datos personales que dejamos en Internet son susceptibles de acabar en manos de cibercriminales o en la Darknet a disposición del mejor postor, si a esto le añadimos el hecho de que estos datos son los compradores de un dispositivo para almacenar BTCs el riesgo es muy alto.

Estas son unas recomendaciones a la hora de comprar un hardware wallet, sea el que sea:

  • No utilizar el email personal, puedes utilizar uno secundario o incluso puedes usar una cuenta temporal.
  • Siempre que tengas la posibilidad lo mejor es no dejar la dirección personal de tu casa una buena opción es dar la dirección de tu empresa, eso sí al abrirlo asegurate que el embalaje y la bolsa de seguridad del hardware wallet no ha sido abierta.
  • No pongas tu teléfono personal.

Cierto que estas medidas dificultan una posible comunicación futura con la empresa pero teniendo en cuenta que estás comprando un dispositivo para alojar bitcoins es mejor eso que todos tus datos acaben en la Darknet a disposición de cualquiera.