Recuperación de Wallets Cripto

Compilación offline de Blockstream Green Recovery: guía práctica y errores que debes evitar

Introducción

Recuperar una cartera de Bitcoin no es solo ejecutar un programa y esperar. Cuando se trata de Blockstream Green, la semilla BIP39 es la llave maestra de tus fondos. Por eso, compilar y ejecutar la herramienta de recuperación en una máquina conectada a Internet es una mala idea: cualquier malware, telemetría o dependencia comprometida podría filtrar tus claves. La compilación offline, también llamada compilación air-gapped, reduce ese riesgo, pero introduce sus propias trampas. Esta guía explica cómo preparar el entorno, compilar el código sin conexión y evitar los errores más frecuentes.

¿Qué es Blockstream Green Recovery?

Blockstream Green es una cartera de Bitcoin que ofrece modos de firma single-sig y multisig con 2FA. Su herramienta oficial de recuperación, disponible en el repositorio Blockstream/green-recovery, permite reconstruir direcciones y firmar transacciones a partir de una semilla compatible. Al compilarla tú mismo, evitas depender de binarios precompilados y puedes auditar el código en el commit que elijas. Sin embargo, la herramienta no sustituye a una buena higiene operativa: si expones la semilla en un entorno inseguro, la compilación offline no te salvará.

Antes de empezar: principios de seguridad

  • Nunca introduzcas la semilla en una máquina con conexión a Internet.
  • Verifica siempre el código fuente, el commit y las firmas GPG.
  • Prepara las dependencias en otra máquina y transfiérelas por un medio controlado.
  • Prueba primero con una semilla señuelo y saldo mínimo en testnet o mainnet.
  • Asume que el portapapeles, el historial de shell y los archivos temporales pueden filtrar datos.

Preparación del entorno aislado

1. Máquina air-gapped y sistema limpio

Usa un equipo dedicado, un live USB de Linux o una máquina virtual sin red. Lo ideal es un sistema recién instalado y sin servicios innecesarios. Desconecta Wi-Fi, Ethernet, Bluetooth y cualquier módem. Si usas una VM, desactiva la red y comparte archivos solo mediante carpetas montadas de forma manual y controlada.

2. Obtención del código y dependencias

En una máquina conectada, clona el repositorio oficial:

git clone https://github.com/Blockstream/green-recovery.git
cd green-recovery
git checkout <tag_o_commit_verificado>

No uses la rama main sin fijar un commit. Revisa el README y el archivo Cargo.lock. Después, descarga el toolchain de Rust que necesites y vendoriza las dependencias de Cargo:

cargo vendor > vendor_config.toml

Cargo vendor

Esto crea una carpeta vendor con todos los crates. Copia el repositorio, la carpeta vendor, el toolchain y los paquetes del sistema que falten en un USB o disco cifrado.

3. Verificación de firmas y hashes

Antes de transferir, comprueba los hashes SHA256 y las firmas GPG de las release oficiales. Si el proyecto no publica binarios, verifica al menos el commit firmado y el contenido de Cargo.lock. No confíes en enlaces de foros, acortadores ni repositorios espejo no oficiales.

Compilación offline paso a paso

1. Prepara el toolchain de Rust

En la máquina air-gapped, instala Rust sin conexión. Puedes copiar los directorios ~/.rustup y ~/.cargo desde la máquina preparada o usar un instalador offline. Define las variables para que rustup no intente actualizar:

export RUSTUP_HOME=/ruta/offline/rustup
export CARGO_HOME=/ruta/offline/cargo
export PATH=$CARGO_HOME/bin:$PATH

Evita ejecutar rustup update o cualquier comando que requiera red. Comprueba la versión con rustc --version y cargo --version.

2. Configura Cargo para modo offline

Dentro del repositorio, crea o edita .cargo/config.toml para que Cargo use los crates vendorizados:

[source.crates-io]
replace-with = 'vendored-sources'

[source.vendored-sources]
directory = 'vendor'

Si el proyecto tiene dependencias Git, deberás vendorizarlas también o reemplazarlas por rutas locales. Este es uno de los puntos que más falla: cargo build --offline no puede descargar nada, así que todo debe estar presente.

3. Compila con --locked y --offline

recuperación de cartera

Usa siempre las banderas que evitan cambios inesperados:

cargo build --release --locked --offline

--locked respeta el Cargo.lock; --offline prohíbe accesos a la red. Si aparece un error de dependencia faltante, revisa que la carpeta vendor esté completa y que la configuración de fuentes sea correcta. No desactives --offline para «probar si funciona»: eso rompe el modelo de seguridad.

4. Verifica el binario

Al terminar, el ejecutable estará en target/release/. Calcula su hash SHA256 y compáralo con el que obtengas en una compilación reproducible si el proyecto lo permite. Ejecuta --help y --version sin conectar la máquina a la red. Revisa que los permisos sean correctos y que no haya bibliotecas dinámicas inesperadas con ldd.

Uso seguro de la herramienta de recuperación

Una vez compilada, la herramienta puede pedir la semilla, una passphrase BIP39 o un descriptor. Introduce estos datos solo en la máquina air-gapped. Si necesitas transmitir una transacción firmada, hazlo por QR o por un archivo PSBT, nunca copiando la semilla. Verifica las direcciones de recepción y de cambio en un dispositivo hardware compatible o en una pantalla de confianza. Para carteras Green con 2FA o multisig, revisa la documentación específica del commit que compilaste: algunos flujos pueden requerir coordinación con servidores de Blockstream, y hacerlo mal puede bloquear fondos.

Errores comunes y cómo evitarlos

Error 1: compilar en una máquina online y ejecutar en la misma

Aunque compiles con --offline, si el sistema tiene red, el binario podría ser manipulado o espiado. Usa una máquina air-gapped real para introducir la semilla.

Error 2: no fijar el commit ni el Cargo.lock

Sin --locked, Cargo puede resolver versiones distintas. Fija un tag o commit verificado y conserva el Cargo.lock original.

Error 3: olvidar vendorizar dependencias Git

cargo vendor no siempre cubre dependencias Git. Revisa Cargo.toml y Cargo.lock; si hay fuentes Git, sustitúyelas por rutas locales o inclúyelas manualmente.

Error 4: no verificar firmas ni hashes

Un binario o un tarball sin verificar puede contener código malicioso. Verifica firmas GPG y hashes SHA256 antes de transferir.

Error 5: mezclar mainnet y testnet

Blockstream Green distingue redes. Si pruebas con una semilla de testnet, no esperes recuperar fondos de mainnet. Revisa la bandera de red antes de firmar.

multisig 2FA

Error 6: ignorar la passphrase BIP39

Si tu cartera usa una passphrase, la semilla por sí sola no recupera los mismos fondos. Introdúcela exactamente, respetando mayúsculas y espacios.

Error 7: no limpiar historial y temporales

Borra ~/.bash_history, ~/.zsh_history, archivos de swap, portapapeles y capturas de pantalla. Mejor aún, usa un sistema amnésico que no persista datos.

Error 8: ejecutar como root sin necesidad

Ejecutar la herramienta con privilegios de root amplía el daño potencial. Usa un usuario sin privilegios y limita los permisos de la carpeta de trabajo.

Error 9: no probar con una semilla señuelo

Antes de usar la semilla real, prueba todo el flujo con una semilla de prueba y una cantidad pequeña. Así detects errores de sintaxis, derivación o red sin arriesgar fondos.

Error 10: confiar en la primera dirección mostrada

Verifica varias direcciones y la ruta de derivación. Un error en el cambio de dirección puede hacer que una transacción firmada envíe fondos a una dirección no deseada.

Checklist final antes de recuperar fondos reales

  • [ ] Máquina air-gapped sin Wi-Fi, Ethernet ni Bluetooth.
  • [ ] Código fuente descargado de un repositorio oficial.
  • [ ] Commit o tag verificado y Cargo.lock intacto.
  • [ ] Toolchain de Rust copiado y funcionando sin red.
  • [ ] Dependencias vendorizadas y Cargo configurado en modo offline.
  • [ ] Compilación con --release --locked --offline.
  • [ ] Binario verificado por hash y, si es posible, reproducible.
  • [ ] Prueba con semilla señuelo y saldo mínimo.
  • [ ] Direcciones de recepción y cambio verificadas.
  • [ ] Plan de transmisión de PSBT sin exponer la semilla.

Conclusión

Compilar offline la herramienta de recuperación de Blockstream Green es una práctica excelente para quienes quieren máxima soberanía sobre sus bitcoins. Pero la seguridad no viene solo de desconectar el cable de red: viene de verificar, fijar versiones, vendorizar dependencias, probar con señuelos y limpiar todo rastro. Si sigues esta guía y evitas los errores descritos, reducirás drásticamente el riesgo de perder fondos o filtrar tu semilla. La comodidad de un binario precompilado nunca debería superar el valor de tus claves.