He leído que la cadena de bloques es una serie de transacciones que registran que una persona entrega bitcoins a otra. Corríjame si esta suposición es incorrecta, ya que es la base de mi pregunta. Entonces, con el tiempo, ¿no lleva cada vez más tiempo averiguar si puede aceptar Bitcoin de alguien porque tendrá que pasar por cada transacción en el historial de la cadena de bloques para validar que la persona que le da Bitcoin realmente tiene? ese Bitcoin en primer lugar?
Con una implementación ingenua sí, pero en la práctica no, no es un problema.
Esto se debe a que cualquier desarrollador que sepa lo que está haciendo es lo suficientemente inteligente como para crear una base de datos que, como mínimo, registre cada transacción (o su posición en el disco) y su estado de verificación. Entonces, cuando recibe una nueva transacción, en lugar de tener que retroceder a través del historial, solo necesita mirar hacia atrás a la transacción anterior a la que se hace referencia. Como parte de la validación de una transacción, verifica si la transacción anterior fue válida. Entonces, si una transacción está marcada como válida en su base de datos, puede estar seguro de que las transacciones que la precedieron también son válidas. Por lo tanto, no hay necesidad de revisar el historial y volver a validar esas transacciones.
Dado que en última instancia se reduce a una simple búsqueda en la base de datos, no se vuelve más difícil validar nuevas transacciones.
El tiempo de cálculo degenerará muy lentamente a medida que transcurra el tiempo, ya que los mecanismos utilizados son muy eficientes. Considere un nodo de verificación de pago simplificado (SPV) que está interesado en los pagos entrantes a una dirección en su billetera. El nodo SPV establecerá un filtro de floración en sus conexiones con los pares para limitar las transacciones recibidas solo a aquellas que contengan direcciones de interés. Cuando un compañero ve una transacción que coincide con el filtro de floración, enviará el bloque mediante un mensaje merkleblock. El mensaje de merkleblock contiene el encabezado del bloque, así como una ruta de merkle que vincula la transacción de interés con la raíz de merkle en el bloque. El nodo SPV puede usar esta ruta merkle para conectar la transacción en el bloque y verificar que la transacción esté incluida en el bloque. El nodo SPV también usa el encabezado del bloque para vincular el bloque con el resto de la cadena de bloques. La combinación de estos dos vínculos, entre la transacción y el bloque y entre el bloque y la cadena de bloques, demuestra que la transacción se registra en la cadena de bloques. En general, el nodo SPV habrá recibido menos de un kilobyte de datos para el encabezado del bloque y la ruta Merkle, lo cual es muy eficiente y el tiempo de cálculo degenerará muy lentamente a medida que se agreguen más bloques.
fredsbend
dave