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