EL LIBRO DE SATOSHI Hal Finney escribió: Creo que es necesario que los nodos mantengan una lista separada de transacciones pendientes asociada a cada cadena candidata. . . . Uno podría preguntar también. . . ¿Cuántas cadenas candidatas debe mantener un nodo al mismo tiempo, en promedio? ___________________________________________________________ Afortunadamente, solo es necesario mantener un pool de transacciones pendientes para la mejor rama de ese momento. Cuando llega un nuevo bloque a la mejor rama, ConnectBlock elimina las transacciones pendientes en el pool. Si una rama diferente se vuelve más larga, llama a DisconnectBlock en la rama principal hasta la bifurcación, devolviendo al bloque las transacciones como pendientes en el pool, y llama a ConnectBlock en la nueva rama, realizando copias de seguridad de todas las transacciones que se encontraban en ambas ramas. Se espera que reorganizaciones como esta sean raras y poco profundas. Con esta optimización, las ramas candidatas no son realmente ninguna carga. Simplemente aguardan en el disco y no requieren atención a menos que alguna vez se conviertan en la cadena principal. _______________________________________________________________ O como James planteó anteriormente, si la transmisión de la red es confiable, pero depende de un algoritmo de evolución potencialmente lenta, ¿cómo afecta eso al rendimiento? ___________________________________________________________ Las transmisiones probablemente serán casi completamente confiables. Las transmisiones TCP actualmente casi nunca se descartan, y el protocolo de transmisión tiene un mecanismo de reintento para obtener los datos de otros nodos después de un tiempo. Si las emisiones resultan ser más lentas en la práctica que lo esperado, el tiempo objetivo entre bloques deberá aumentarse para evitar el desperdicio de recursos. Queremos bloques que normalmente se propaguen en mucho menos tiempo de lo que lleva generarlos, de lo contrario los nodos pasarían demasiado tiempo trabajando en bloques obsoletos. Estoy planeando realizar una prueba automatizada con ordenadores que se envíen pagos aleatoriamente entre ellos y que lancen paquetes aleatoriamente. 74