diff --git a/README.md b/README.md index a483ccb..29e38c8 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,30 @@ Tres cosas que conviene tener claras antes de montar una: --- +## Cómo se reparte esto en el tiempo + +Esto no se hace en una tarde, y saberlo de antemano evita el chasco de sentarte un sábado con las piezas sin pedir. Son cuatro momentos, y **la espera del paquete es tu aliada**: hay trabajo útil que hacer mientras tanto. + +| Cuándo | Qué haces | Rato | +|---|---|---| +| **Día 1** | Decidir el modelo, pedir las piezas (Sección 1) | 30 min | +| **Mientras esperas** | Descargar y **verificar** el software (Sección 4), grabar la MicroSD (5), y trastear el [simulador](#12-pruébalo-antes-de-comprar-el-simulador) para llegar con el menú aprendido | 1 h, sin prisa | +| **El día que llega** | Montar (3), arrancar y hacer el test de I/O (6), pasar el vector de prueba (9.1) | 1 h | +| **Cuando tengas la tarde** | Generar la seed real (9.2), passphrase (Sección 5 de la guía del método), wallet en Sparrow (11), backup y su verificación | 2-3 h **sin prisa** | +| **Unos días después** | Volver a verificar el backup en frío, y ensayar el ciclo de firma en red de pruebas | 1 h | + +Dos cosas de ese reparto no son negociables: + +**No generes la seed real el mismo día que montas el aparato.** El día del montaje estás resolviendo problemas —un cable, un arranque, una tarjeta— y ese no es el estado mental para un proceso donde un error de copia es irreversible. Monta, verifica que funciona, y deja la seed para un día que empieces tranquilo. + +**Verifica el software mientras esperas el paquete, no después.** Es el paso que más gente se salta por prisa, y hacerlo cuando no tienes el aparato delante quita justamente esa prisa. + +--- + ## Índice +- [**Cómo se reparte esto en el tiempo**](#cómo-se-reparte-esto-en-el-tiempo) ← *léelo antes de pedir nada* + 1. [Materiales](#1-materiales) 2. [La decisión que hay que tomar antes de comprar: soldar o no](#2-la-decisión-que-hay-que-tomar-antes-de-comprar-soldar-o-no) 3. [Montaje](#3-montaje) @@ -61,6 +83,8 @@ Tres cosas que conviene tener claras antes de montar una: ### ⚠️ Las tres trampas de la compra + + **1. La pantalla.** Waveshare fabrica varias placas de 1,3 pulgadas que **se parecen muchísimo y no son compatibles**. La que necesitas es la de **240×240 píxeles**. Si compras la de otra resolución, no funciona y no hay forma de arreglarlo por software. Comprueba la resolución en la descripción antes de pagar, no el aspecto de la foto. **2. El modelo de Pi.** La recomendada es la **Pi Zero 1.3**, precisamente porque **no lleva WiFi ni Bluetooth**: la propiedad air-gapped es física, no una opción que puedas desactivar por descuido. @@ -96,7 +120,7 @@ La Pi Zero viene, por defecto, **sin los pines GPIO soldados**. La pantalla se c - **Suelda antes de montar nada más.** Placa desnuda, buena luz, sin prisa. - **Una soldadura fría no se ve, se nota.** Si la pantalla no enciende, los botones no responden o el aparato se reinicia, revisa las soldaduras antes que ninguna otra cosa. Es la causa más frecuente. Una soldadura correcta es brillante y con forma de volcán; una fría es mate y abultada. -> **Para un taller:** decidir esto de antemano cambia por completo la logística. Soldar 40 pines por persona come 45-60 minutos y exige un soldador por cada 2-3 asistentes, además de ventilación. Ver el guion del facilitador. +> **Si nunca has soldado, no empieces aquí.** Soldar 40 pines son 45-60 minutos y hay que hacerlo bien: un puente entre dos pines contiguos puede arruinar la placa. Comprar la versión con los pines puestos cuesta 3-5 € más y te quita de encima el único paso irreversible de todo el montaje. Aprende a soldar con otra cosa, no con el aparato que va a custodiar tu dinero. --- @@ -111,15 +135,26 @@ Es la pieza más delicada del montaje y donde más gente se equivoca. 1. En la Pi Zero, localiza el conector de cámara (el conector plano estrecho, en el borde). 2. **Tira suavemente de las pestañas hacia fuera.** Cuando están hundidas, sujetan el cable; hay que levantarlas para poder insertarlo. 3. Inserta el cable plano **con los contactos dorados mirando hacia la cara inferior de la placa** (la cara sin componentes). Esto es lo que más gente pone al revés. + + +*[Falta foto: el cable bien puesto, contactos dorados a la vista. Si has montado uno, [mándanosla](CONTRIBUTING.md).]* 4. Vuelve a presionar las pestañas para fijar el cable. 5. Comprueba que el cable entra recto y hasta el fondo, sin quedar torcido. -> El cable de la Pi Zero es **más estrecho** que el de las Raspberry Pi grandes. Si compraste una cámara "para Raspberry Pi" genérica, puede venir con el cable ancho y necesitarás el adaptador correcto. Comprueba esto al desembalar, no el día del taller. +> El cable de la Pi Zero es **más estrecho** que el de las Raspberry Pi grandes. Si compraste una cámara "para Raspberry Pi" genérica, puede venir con el cable ancho y necesitarás un adaptador. **Compruébalo el día que llegue el paquete**, no cuando te sientes a montarlo: si falta el adaptador, es otra semana de espera. ### 3.2 La pantalla + + Encaja el HAT de Waveshare sobre los 40 pines GPIO. Va en una única orientación posible: la pantalla queda sobre la Pi, y los pines entran todos a la vez. **No fuerces.** Si no entra, algo está desalineado — retíralo y mira los pines. +> ### ✅ Punto de control 1 — montado +> +> Antes de seguir, mira: el cable de la cámara entra recto y hasta el fondo, con los **contactos dorados hacia la cara de abajo** de la placa; la pantalla está encajada sobre los 40 pines sin ninguno doblado ni al aire; y **no has metido nada en la carcasa todavía**. +> +> Si algo de eso no cuadra, arréglalo ahora. Después de este punto, cada problema cuesta el triple de encontrar. + ### 3.3 La carcasa (después de probar) Una vez que hayas confirmado que arranca, la pantalla pinta, los botones responden y la cámara ve, ya puedes encajarlo en la Open Pill o atornillar la Orange Pill. @@ -223,6 +258,14 @@ Es también una forma útil de contribuir al proyecto: compilar y publicar el ha --- +> ### ✅ Punto de control 2 — software verificado +> +> Tienes tres archivos de la **misma release**, `gpg --verify` dijo **"Good signature"**, la huella de la clave coincide con la publicada **en más de una fuente**, y `shasum` te devolvió **OK**. +> +> Si cualquiera de esos cuatro falla, **para aquí**. No es un paso opcional que puedas dejar para luego: es la diferencia entre instalar el software del proyecto e instalar el de quien te haya interceptado la descarga. Y no hay ningún mensaje de error más adelante que te avise de haberlo saltado. + +--- + ## 5. Grabar la MicroSD Tres opciones: **Raspberry Pi Imager**, **balenaEtcher** o `dd`. Las dos primeras son las recomendadas; ambas verifican la escritura por defecto, y **conviene esperar a que esa verificación termine** — te ahorra horas de depuración si luego el aparato no arranca. @@ -260,6 +303,14 @@ Este test tarda dos minutos y es el que decide si puedes montar la carcasa o tie --- +> ### ✅ Punto de control 3 — el aparato funciona +> +> Arrancó y salió el logo. Cada botón y cada dirección del joystick responden en el test de I/O. La cámara muestra imagen en vivo. +> +> **Este es el momento de meterlo en la carcasa**, y no antes. Si has llegado aquí, el hardware está bien y todo lo que venga después es software y procedimiento — lo cual, dicho de otra forma, significa que **ya no vas a tener que volver a desmontar nada**. + +--- + ## 7. Recorrido por la interfaz **Los controles:** un joystick de 5 posiciones (arriba, abajo, izquierda, derecha, pulsar) y tres botones (KEY1, KEY2, KEY3) cuya función cambia según la pantalla y se indica en el margen. @@ -281,7 +332,7 @@ Este test tarda dos minutos y es el que decide si puedes montar la carcasa o tie `Settings`: -- **Idioma:** desde la 0.8.7, el **español es idioma totalmente soportado** (y el catalán también). Cámbialo nada más arrancar: quita la barrera del inglés de golpe, y en un taller ahorra media hora de traducir menús en voz alta. +- **Idioma:** desde la 0.8.7, el **español es idioma totalmente soportado** (y el catalán también). Cámbialo nada más arrancar: los menús de esta guía los verás igual, y te quita la barrera del inglés de golpe. - **Red:** Mainnet para uso real; Testnet o Regtest para practicar (ver la nota de abajo). - **Densidad de QR:** si tu ordenador no lee bien los QR animados que muestra la SeedSigner, baja la densidad aquí. - **Tipos de script:** por defecto Native Segwit. También soporta Taproot, Nested Segwit y Legacy. @@ -291,15 +342,16 @@ Este test tarda dos minutos y es el que decide si puedes montar la carcasa o tie El proyecto mantiene un [generador de ajustes](https://github.com/SeedSigner/seedsigner-settings-generator) que produce un **código QR con toda una configuración**. Escaneas el QR con la SeedSigner y queda configurada de golpe: idioma, red, tipos de script, nivel de usuario. -Es la diferencia entre configurar quince aparatos a mano y proyectar un QR en la pared. **Para un taller es imprescindible.** +Con un solo aparato no te ahorra apenas tiempo, pero sí te ahorra errores: dejas la configuración decidida con calma delante del ordenador en vez de a ciegas con un joystick, y si algún día tienes que reinstalar, la recuperas escaneando el mismo QR. ### ⚠️ Nota sobre la red de pruebas La guía de autocustodia recomienda **signet** para practicar, porque testnet3 lleva años deteriorada. Pero el README de SeedSigner 0.8.7 lista **mainnet, testnet y regtest** — no menciona signet. -`[VERIFICAR]` antes de planificar una práctica: comprueba en los ajustes de tu dispositivo qué redes ofrece realmente tu versión. Si no hay signet, las opciones son **testnet** (con sus problemas conocidos) o **regtest** (que requiere un nodo propio, pero funciona perfectamente para un taller: controlas la red entera y puedes generar bloques a voluntad). +`[VERIFICAR]` antes de ponerte: mira en los ajustes de tu aparato qué redes ofrece tu versión concreta. Si no hay signet, te quedan dos: -Para un taller, **regtest contra tu nodo es la opción más limpia**: sin depender de faucets externos ni de la salud de una red pública. +- **Testnet** — la práctica para casi todo el mundo. Arrastra problemas conocidos (faucets que van y vienen), pero para ensayar el ciclo de firma sirve. +- **Regtest** — tu propia red privada. Es la opción limpia, sin depender de faucets ni de la salud de una red pública, pero **necesitas un nodo Bitcoin corriendo**. Si ya lo tienes, ve por aquí. --- @@ -338,6 +390,14 @@ Son seeds públicas, publicadas en la documentación del proyecto. **Riesgo cero Si coincide: tu aparato convierte la entropía correctamente. Si no coincide: para y revisa qué versión tienes instalada. +> ### ✅ Punto de control 4 — el aparato calcula bien +> +> El vector de prueba te devolvió **exactamente** las palabras esperadas. +> +> Eso te dice algo concreto y valioso: el código que va a convertir tus tiradas en tu seed funciona correctamente **en tu unidad y con tu versión de firmware**. No es una promesa del fabricante, es una comprobación tuya. Muy poca gente que tiene una hardware wallet ha hecho esto nunca. +> +> Si las palabras **no** coinciden: no sigas. Revisa que la imagen que grabaste corresponde a tu modelo de Pi, y que el vector que estás usando es el de tu versión. + ### 9.2 Generar la tuya 1. `Tools` → `New Seed` → dados → **24 palabras (99 tiradas)**. @@ -381,9 +441,9 @@ En `Tools` vas a ver, junto a los dados, la opción de generar la seed **con una **Y la cámara aporta de sobra.** Una escena iluminada mide del orden de **millones de bits** frente a los 256 que hacen falta. El dato que más sorprende: **una pared blanca vale prácticamente igual que una estantería llena de libros** —menos del 10% de diferencia—. La entropía no está en lo que fotografías, está en el **ruido del sensor**, que cambia en cada lectura. Dos fotos seguidas del mismo sitio, con el aparato quieto en la mesa, difieren en el 80% de sus valores de color. Y en 320 capturas medidas no se repitió ninguna. -O sea: **el método no es débil.** Si alguien en el taller lo usa con luz, tiene una seed sólida. +O sea: **el método no es débil.** Con luz, produce una seed sólida. -#### Por qué el taller usa dados igualmente +#### Por qué esta guía usa dados igualmente Por una sola razón, y no es la cantidad de entropía. Lo dice el desarrollador principal de SeedSigner en su propio análisis: @@ -391,7 +451,7 @@ Por una sola razón, y no es la cantidad de entropía. Lo dice el desarrollador Son unos 12 MB de fotogramas. No caben en un QR, y escribirlos a la tarjeta sería guardar tu seed en disco —justo lo que un aparato *stateless* no hace nunca—. Con tus 99 tiradas puedes ir a tres herramientas distintas y comprobar que dan lo mismo. Con una foto, **nadie podrá comprobar nunca nada sobre esa seed concreta**, ni tú. -En un taller eso pesa el doble: lo que enseñamos es a verificar, y los dados son el único método donde el asistente puede hacerlo con sus propias manos. +Y eso pesa doble en una guía sobre verificar: los dados son el único método donde puedes comprobar tu resultado con tus propias manos, hoy y dentro de diez años. #### Si la usas, cuatro reglas que nadie te va a decir @@ -469,7 +529,7 @@ Existe un **simulador que corre el firmware real de SeedSigner en una pestaña d No es un vídeo ni una imitación rehecha para parecerse: es el mismo Python que corre en el aparato, con la pantalla dibujada en un canvas, los botones en tu teclado y la cámara en tu webcam. Puedes recorrer el menú entero, cargar una seed, meter tiradas de dado, poner passphrase, exportar el xpub y firmar una PSBT. -**Para qué sirve:** ver si el flujo te convence antes de gastar 50 €, practicar el procedimiento sin hardware, y enseñárselo a alguien — una pantalla de 1,3 pulgadas no se comparte, una pestaña del navegador sí. Para un taller, es la diferencia entre pasar el aparato de mano en mano y proyectarlo. +**Para qué sirve, y aquí está lo bueno:** puedes recorrer el menú entero, meter tiradas de dado y poner una passphrase **mientras esperas a que lleguen las piezas**. Cuando montes el aparato ya no será la primera vez que ves esas pantallas. También sirve para decidir si el flujo te convence antes de gastar nada, y para enseñárselo a alguien: una pantalla de 1,3 pulgadas no se comparte, una pestaña del navegador sí. ### Por qué este sí y no cualquier simulador @@ -485,7 +545,7 @@ Vale la pena mirarlo aunque no lo uses, como ejemplo de qué aspecto tiene un pr > ⚠️ **No metas ahí ninguna seed tuya. Ninguna. Nunca.** Ni "solo para ver". Una pestaña del navegador no es un air gap y el sistema de ficheros de Pyodide no es un elemento seguro — lo dicen ellos mismos. Usa una seed de prueba pública, como la del vector de la Sección 9.1, que existe justo para esto. -**3. Si lo quieres alojar tú** —por ejemplo para tenerlo offline en la sala de un taller— necesita dos cabeceras (`Cross-Origin-Opener-Policy` y `Cross-Origin-Embedder-Policy`) o no arranca, y la cámara exige `https` o `localhost`: por `http` en una IP de la red local no hay API de cámara que valer. Lo tienen documentado en `docs/SELF-HOSTING.md`. Una vez cargada, la página funciona sin conexión. +**3. Si lo quieres alojar tú** —para tenerlo offline, o por no depender de una web ajena— necesita dos cabeceras (`Cross-Origin-Opener-Policy` y `Cross-Origin-Embedder-Policy`) o no arranca, y la cámara exige `https` o `localhost`: por `http` en una IP de la red local no hay API de cámara que valer. Lo tienen documentado en `docs/SELF-HOSTING.md`. Una vez cargada, la página funciona sin conexión. ### Qué no simula diff --git a/img/QUE-FOTOGRAFIAR.md b/img/QUE-FOTOGRAFIAR.md new file mode 100644 index 0000000..e0b06ea --- /dev/null +++ b/img/QUE-FOTOGRAFIAR.md @@ -0,0 +1,40 @@ +# Fotos que le faltan a esta guía + +Notas para quien monte un kit con la guía delante. Están por orden de valor: +la primera vale más que las otras tres juntas. + +## 1. El cable de la cámara bien puesto ⭐ + +**Es LA foto.** Es el error que más gente comete y el único que no se ve +después: si va del revés, el aparato arranca, la pantalla pinta, y la cámara +sencillamente no ve nada. + +- Primer plano del conector de la Pi Zero con el cable ya insertado. +- Que se distingan los **contactos dorados** y hacia qué cara miran. +- Mejor con la placa apoyada de forma que se entienda cuál es la cara de abajo. +- Si puedes, **una segunda foto del cable al revés** para comparar. Un "así no" + enseña más que tres "así sí". + +## 2. Las dos pantallas Waveshare juntas + +La de 240×240 y una de otra resolución, lado a lado. El texto de la guía dice +que se parecen muchísimo; una foto lo demuestra en un segundo y evita la +compra equivocada, que es el error más caro del documento. + +## 3. La pantalla encajada, de perfil + +Para que se vea que no queda ningún pin al aire ni la placa torcida. + +## 4. El kit completo antes de montar + +Todas las piezas sobre la mesa. Ayuda a quien acaba de abrir los paquetes a +comprobar que no le falta nada, sobre todo el adaptador de cable si compró una +cámara genérica. + +--- + +**Cómo hacerlas:** luz difusa, fondo liso, y que se vea el detalle antes que el +conjunto. No hace falta cámara buena; hace falta que se entienda qué mirar. + +**Al añadirlas:** guárdalas aquí en `img/` y sustituye en el `README.md` el +comentario `` y la línea en cursiva que hay debajo.