SOBRE UN TIPO ALTERNATIVO DE CADENA DE BLOQUES CON SÓLO REGISTRO HASH en la lista de bloque. En efecto, todas las transacciones recuperadas de la lista de bloque tienen un valor no utilizado, simplemente porque aún existen. Ya no pueden demostrar su validez por ascendencia ya que esa parte del gráfico fue eliminada. Lo que me hizo pensar, ¿hay alguna forma de probar la validez si nunca se ponen todas las transacciones en el gráfico para empezar? _____________________________________________________________ Cita de: satoshi, 11 de agosto de 2010, 12:14:22 AM El desafío es, ¿cómo se demuestra que no existen otros gastos? Parece que un nodo debe conocer todas las transacciones para poder verificarlo. Si solo conoce el hash de los puntos de entrada/salida, no puede verificar las firmas para ver si un punto de salida había sido gastado antes. ¿Tienes alguna idea sobre esto? _______________________________________________________________ La clave es codificar la información de transacción como parte del hash de punto de salida. Por lo tanto, en lugar de crear un hash de transacción único, representa la transacción como dos hashes de salida. (Originalmente consideré una estructura como un punto de entrada/transacción/punto de salida , usando hashes, pero resultó ser innecesario). Solo los validadores de transacciones necesitan conocer la dirección de bitcoin asociada con un hash de punto de salida grabado. Eso proviene de la transacción antecedente presentada para un punto de ingreso de la transacción actual. La transacción antecedente y el punto de salida son hasheados y se presumen AMBOS válidos y no gastados si ese hash aparece una, y sólo una vez en la lista de bloque. La transacción actual debe estar firmada por la clave de la dirección en las transacciones antecedentes, por supuesto. Si esto resulta válido, se generarán dos nuevos hashes de salida y se insertarán en el bloque actual. Los hashes del punto de ingreso se marcan gastados para incluirlos también en el bloque actual. (Si existe un hash dos veces, se gasta.) Si desea representar la transacción como una unidad (y el gráfico de transacción actualmente visible), los hashes del punto de ingreso y los del punto de salida podrían agruparse. Sin embargo, esto no es estrictamente necesario para probar la validez. 228
EL LIBRO DE SATOSHI _____________________________________________________________ Cita de: satoshi, 11 de agosto 2010, 12:14:22 AM Estamos tratando de demostrar la ausencia de algo, lo que parece requerir conocerlo todo y verificar que algo no esté incluido. _______________________________________________________________ En este caso, estamos tratando de probar la existencia de UN hash coincidente y la ausencia de DOS hashes coincidentes. Requiere conocerlos a todos para probarlo. Creo que las prohibiciones contra el doble gasto son tan fuertes como en la versión actual. ==== ¡PRECAUCIÓN! ==== Sin embargo, debe considerar el caso en el que un nodo causa daños al agregar deliberadamente "hashes de cancelación" aleatorios. En este caso, el nodo no podría obtener acceso a las monedas, ya que no tiene hashing de transacción firmada a un hash de punto de salida no gastado como válido. Sin embargo, el propietario actual tampoco podría gastar las monedas. El punto de ingreso se daría ya por gastado. Eso significa que las condiciones de validación son EXACTAMENTE LAS MISMAS que con la implementación actual. Todos los nodos de validación deben examinar y validar todas las transacciones representadas en un bloque antes de aceptarlo y desarrollarlo. Si existen hashes en el bloque propuesto que no están representados por transacciones válidas, el bloque debe ser rechazado. Eso es exactamente lo mismo que el sistema actual, si alguna transacción no es válida, el bloque debe ser rechazado. Tenía la esperanza de que la condición para pasar todas las transacciones a todos los validadores podría debilitarse, pero no consigo ver cómo (todavía) sin depender de la delegación de confianza. ---------- Una característica interesante es que esto simplifica el proceso de validación. Todo lo que se necesita hacer es analizar la lista de bloqueo (de hashes) una vez. Como cada hash es analizado simplemente lo 229