Saltar al contenido
buybitcoinsmart

Glosario / Nodos y software

Servidor Electrum

También se conoce como Electrum Personal Server.

¿Qué es un servidor Electrum?
Un servidor Electrum indexa la blockchain por script y responde a las consultas de direcciones de las billeteras ligeras, de modo que esas billeteras obtienen saldos al instante sin descargar ellas mismas la cadena.

Alguien tiene que hacer la búsqueda. Un nodo completo sabe qué monedas siguen sin gastar, pero no guarda ningún mapa de una dirección a su historial, así que las billeteras que quieren ese historial en un segundo y no en una hora preguntan a un servidor que ha construido uno. La práctica habitual es ejecutar uno propio junto a su propio nodo, porque la alternativa entrega a un desconocido la lista completa de las direcciones que usted posee.

Cómo funciona

Un servidor Electrum se sitúa entre Bitcoin Core y una billetera, y hace de intérprete entre ambos.

Lee cada bloque del nodo a medida que llega, extrae cada script de bloqueo y guarda una correspondencia entre ese script y las transacciones que lo involucran. Después, las billeteras se conectan mediante un protocolo JSON sencillo basado en líneas, en texto plano por el puerto 50001 o con TLS por el puerto 50002, y hacen una pregunta o se suscriben para recibir un aviso cuando cambie la respuesta. La suscripción es lo que hace que una billetera Electrum parezca inmediata: el servidor envía una notificación en el momento en que llega un pago, en lugar de que la billetera pregunte una y otra vez.

Las billeteras no envían direcciones por esa conexión. Envían un hash de script, el hash SHA-256 del script de bloqueo con sus bytes invertidos, que es una convención del protocolo y no una medida de privacidad. El servidor sigue sabiendo exactamente qué monedas observa usted, porque devuelve el historial de ese hash y puede buscar en un momento la dirección correspondiente en su propio índice. Tomar los hash de script por anonimato es el malentendido más común sobre este software.

Lo que la billetera sí se reserva es la verificación. Descarga la cadena de encabezados de bloque y comprueba la prueba de Merkle que el servidor le proporciona para cada transacción, de modo que un servidor no puede inventar un pago que nunca ocurrió sin fabricar también una cadena de encabezados falsa respaldada por prueba de trabajo real. Aun así puede mentir por omisión, ocultándole una transacción o un gasto, lo que es un riesgo menor pero real.

Tres implementaciones cubren casi todos los despliegues: electrs en Rust, preferida por su índice pequeño; Fulcrum en C++, preferida por la velocidad de sus consultas; y ElectrumX en Python, la original. Electrum Personal Server sigue otro enfoque: observa solo las billeteras que usted enumera en un archivo de configuración en lugar de indexar toda la cadena, lo que casi no ocupa disco pero no responde nada sobre las direcciones de nadie más.

Dónde aparece

Los servidores Electrum son la mitad invisible de la mayoría de las billeteras de bitcoin de escritorio.

El propio Electrum, publicado por primera vez por Thomas Voegtlin en noviembre de 2011, se conecta a servidores públicos operados por voluntarios salvo que usted le indique otra cosa. Sparrow, Specter y BlueWallet hablan todos el mismo protocolo. Todos los paquetes de nodo populares, incluidos Umbrel, Start9, RaspiBlitz y myNode, incluyen electrs o Fulcrum precisamente para que la billetera de su computadora portátil pueda consultar a su propia máquina y nadie más conozca sus direcciones.

La razón de que esto importe no es hipotética. Desde finales de diciembre de 2018, unos atacantes operaron servidores maliciosos en la red pública de Electrum y aprovecharon una debilidad de las versiones anteriores a la 3.3.3, en las que un servidor podía devolver texto enriquecido arbitrario como mensaje de error. A los usuarios que intentaban enviar un pago se les mostraba lo que parecía un aviso oficial para instalar una actualización, y la descarga era malware. Las pérdidas de las que se informó ascendieron a cientos de bitcoin. El cliente se modificó para eliminar el formato de los mensajes del servidor, pero la lección sigue en pie: un servidor público es una parte que no es de confianza y con la que su billetera habla constantemente.

Servidor Electrum frente a Neutrino

Un servidor Electrum hace la búsqueda por usted y se entera de lo que usted buscaba; Neutrino le envía la materia prima, así que no se entera de casi nada. El modelo de Electrum es barato, unos pocos kilobytes por consulta y una respuesta instantánea, y por eso domina en las billeteras de escritorio que se combinan con un dispositivo de hardware. El modelo de Neutrino descarga un filtro compacto por cada bloque y lo inspecciona localmente, y gasta mucho más ancho de banda para no revelar qué scripts coincidieron. Elija el modelo de servidor cuando el servidor sea suyo, y el modelo de filtros cuando no pueda serlo.

No confundir con

Preguntas frecuentes

¿Un servidor Electrum público ve mis direcciones?

Sí, todas. Su billetera se suscribe a cada script que posee y, aunque envía hash en lugar de direcciones, el servidor tiene el índice que los vuelve a convertir en direcciones. Ejecutar su propio servidor, algo que todos los paquetes de nodo populares convierten en una instalación de un solo clic, es la única forma de cerrar esa fuga.

¿Puede un servidor Electrum mostrarme un saldo falso?

No con facilidad. Su billetera comprueba cada transacción con los encabezados de bloque que ella misma descargó, así que un pago inventado necesitaría una cadena falsa con prueba de trabajo real detrás. Un servidor hostil sí puede, en cambio, ocultarle transacciones o negarse a retransmitir las que usted envía.

Para seguir leyendo

Términos relacionados

Más en la sección Nodos y software

Leer esta página en inglés