¿Sería posible proporcionar una cadena de bloques descargable que sea actualizada y verificada por una gran cantidad de personas?

A partir de noviembre de 2012, la cadena de bloques tiene un tamaño de casi 3 GB con un crecimiento casi lineal de aproximadamente 500 MB/mes (supongo que se redujo del crecimiento exponencial por el límite de tamaño de bloque codificado).

Quiero instalar Bitcoin en mi computadora portátil promedio: descargar y verificar el último bootstrap.dat de Bitcoincharts tomó algunas horas (5-9, supongo), ¡pero eso fue solo 2.3 GB! Ahora, he estado esperando que Bitcoin se ponga al día con los últimos 2 o 3 meses, en los que los bloques han sido considerablemente más grandes y cada bloque tarda unos 5 segundos en procesarse, con mi CPU en ~25 % y mi disco duro en carga de trabajo máxima.

Esto es, para decirlo a la ligera, insostenible.

Necesitamos un sistema en el que una cadena de bloques ya verificada se pueda descargar y copiar directamente a la carpeta de bitcoin, tal vez de forma incremental. Se debe confiar en la fuente, para esto, se necesita un sistema de verificación en el que todos puedan controlar la corrección de la cadena de bloques y luego firmarla, propondría usar claves gpg para esto.

Luego, la fuente se puede distribuir a través de un torrent respaldado por un servidor, por ejemplo.

¿Es esto técnicamente posible y cómo?

Editar: dado que abordé esto con una mentalidad equivocada, publiqué una especie de pregunta de seguimiento sobre los riesgos de seguridad de los clientes ligeros. ¿Debería un usuario final descargar toda la cadena de bloques? ¿O es suficiente un cliente “ligero”?

Respuestas (3)

Ya existen versiones descargables de la cadena de bloques. No hay problema en principio en que sean firmadas por GPG por varias personas de confianza. Sin embargo:

  1. Debilita un poco la seguridad. Con el software en sí, puede confiar en las firmas y puede inspeccionar el código. Con la inspección de datos de blockchain es inviable.

  2. Las versiones futuras utilizarán un formato de base de datos diferente que permitirá una verificación mucho más rápida, por lo que no habrá muchas ventajas para un sistema en el que se obvia la verificación pero aún es necesario descargar los datos.

  3. A largo plazo, los usuarios finales no utilizarán un cliente completo, sino (en el mejor de los casos) un cliente SPV que no necesita descargar ni verificar toda la cadena de bloques.

Entonces, bitcoind es una completa basura, ¿no dijo? ¿No es aún más inseguro un cliente SPV que descargar una cadena de bloques verificada por varias personas con sus claves gpg y, por lo tanto, sus direcciones de correo electrónico?
@Profpatsch: Yo no dije eso. Los nodos completos son vitales y su rendimiento mejorará pronto. Pero no están destinados a ser utilizados por usuarios finales.
@profpatsch SPV no es menos seguro. Tiene menos funciones, pero la mayoría de los usuarios finales no necesitan esas funciones.
Por supuesto que es menos seguro... no verifica transacciones, solo prueba de trabajo. Para transacciones de confirmación cero, la diferencia de seguridad es muy significativa. Más profundo en la cadena... menos.
Acabo de hacer una pregunta muy similar. ¿Dónde están esas versiones descargadas?

Esto es ciertamente técnicamente posible (ejecutar -detachdby luego copiar el directorio de la base de datos), pero la pregunta es si desearía esto.

Primero, da un paso atrás. Bitcoin está diseñado para funcionar con una seguridad razonable en nodos livianos (ver "Verificación de pago simplificada" en el artículo de Satoshi ). Lo único que requieren los nodos ligeros de confianza es que la cadena con más trabajo también contenga transacciones válidas. Estos nodos livianos requieren unos pocos megabytes de descargas para sincronizarse y casi no causan carga de CPU o disco. Ejemplos de tales implementaciones de nodos incluyen Multibit o Bitcoin Wallet para Android .

La razón por la que esto es posible es porque los nodos livianos asumen que hay nodos completos que verifican todo, y que ningún minero se arriesgará a crear bloques que contengan transacciones no válidas (una suposición muy razonable, ya que en una red sana, tales bloques serán ignorados por todos los demás). Estos nodos completos forman la columna vertebral de seguridad de la red y, dado que verifican todo, esencialmente requieren confianza cero. Esta es una propiedad central de Bitcoin, que casi no existe en ningún otro sistema de pago: el privilegio de no tener que confiar en nadie.

Si va a descargar una cadena de bloques preindexada, está renunciando a ese privilegio. Básicamente, confiará en una persona (tal vez en algunas, si realmente se molesta en verificar las firmas) para que le diga qué transacciones en el historial de Bitcoin fueron válidas. Esta es una suposición mucho más fuerte que la que hace cuando ejecuta un cliente ligero. Si alguien pudiera corromper (¡incluso sin querer!) una descarga de este tipo y fuera utilizada por muchas personas, el riesgo podría ser una red bifurcada. Esto podría ser un desastre.

Entonces, si cree que su sistema no puede manejar la carga actual de ejecutar un nodo completo, simplemente ejecute uno liviano. Si el software liviano no ofrece las funciones que desea, anímelos a implementarlas; serán necesarias a medida que pase el tiempo.

Como nota al margen, la próxima versión (0.8) de Bitcoind/Bitcoin-Qt debería ser mucho más rápida, especialmente en hardware con entrada/salida lenta.

Así que básicamente no hay riesgo de seguridad en la ejecución de un cliente ligero, parece que soy un idiota.
@Profpatsch: No significativo, no. Pero esto se basa en la suposición de que también hay muchos nodos completos.
Hay una diferencia significativa entre no confiar en nada y confiar en que la cadena más larga solo contenga transacciones válidas. Si quiere arriesgarse, esto es una cuestión económica. Pero ciertamente es una suposición menor que aceptar una base de datos preindexada.
Como esa pregunta no existía y creo que más personas quieren saber, la hice aquí: bitcoin.stackexchange.com/questions/5478/…
Tengo un pequeño problema con esta respuesta. Suponga lo siguiente que descargo una cadena de bloques defectuosa (manipulada). ¿Las monedas que genero (suponiendo que tenga éxito) no serán rechazadas por los pares de bitcoin? Disculpe mi ignorancia, solo estoy tratando de entender esto.
Si descarga una cadena de bloques defectuosa, su propio cliente ni siquiera la importará. Si descarga una base de datos preindexada defectuosa (que no contiene la cadena en sí, sino el conjunto resultante de monedas no gastadas), existen múltiples peligros. Pueden hacerle creer que ciertas transacciones entrantes no válidas son válidas (lo que no desea como comerciante), y otros nodos las rechazarán, pero ¿quizás ya les envió productos a cambio? El problema más grande es cuando muchos nodos obtienen la misma base de datos defectuosa... entonces pueden terminar en una bifurcación propia y pensar que el mundo real está mal.

¡Puedes elegir desde dónde descargar!

Consulte ¿Cuál es la forma más rápida posible de descargar la cadena de bloques?

Describí cómo decirle al cliente bitcoin que se conecte a nodos personalizados. De esta manera, puede decirle a bitcoin que se conecte a los principales nodos centrales, por ejemplo.

Esto tiene 2 ventajas:

A) control total en quién confiar

B) Descarga ultrarrápida de blockchain de bitcoin.