Confirmación de transacciones en la raíz de Merkle y SegWit

Estoy tratando de averiguar cómo se confirman exactamente las transacciones en un bloque. Entiendo que para confirmar una transacción, la hash con su transacción asociada y luego los hash asociados hasta obtener la raíz de Merkle, y si la raíz de Merkle es la misma que está en el bloque, la transacción es legítima.

Pero, ¿cómo sabría alguien qué transacción asociada se requiere hacer hash con su transacción para confirmar su validez? ¿Y de dónde lo sacarías?

Además, estoy un poco confundido acerca de Segregated Witness. Según tengo entendido, las firmas se separan de las transacciones y las firmas se codifican de la misma manera que las transacciones. Este hash de firma final se combina con el hash de transacción final para formar una raíz de Merkle, o está contenido como otra raíz de Merkle en un campo separado en el bloque. Pero si la raíz de Merkle siempre tiene el mismo tamaño (supongo), ¿cómo ahorra espacio esto? Si la raíz de Merkle siempre es de 256 bits, ¿por qué importa si las firmas se codifican con las transacciones o se codifican por separado?

No puedo encontrar respuestas claras a mis preguntas por lo que cualquier ayuda será apreciada.

Respuestas (1)

Pero, ¿cómo sabría alguien qué transacción asociada se requiere hacer hash con su transacción para confirmar su validez? ¿Y de dónde lo sacarías?

Su pregunta es un poco vaga, parece que está preguntando cómo un cliente lite confirma que una transacción que le interesa está realmente en un bloque. La parte que intenta convencerlos de que la transacción está incluida puede brindarles la información requerida.

Los nodos completos ya tienen todos los datos y no es necesario que se los proporcionen.

Además, estoy un poco confundido acerca de Segregated Witness. Según tengo entendido, las firmas se separan de las transacciones y las firmas se codifican de la misma manera que las transacciones. Este hash de firma final se combina con el hash de transacción final para formar una raíz de Merkle, o está contenido como otra raíz de Merkle en un campo separado en el bloque. Pero si la raíz de Merkle siempre tiene el mismo tamaño (supongo), ¿cómo ahorra espacio esto? Si la raíz de Merkle es siempre de 256 bits,

El compromiso de segwit está más abajo en el árbol, no en la parte superior. Esto no hace ninguna diferencia funcional real, pero responde a su pregunta acerca de que la raíz siempre tiene el mismo tamaño.

¿Por qué importa si las firmas se cifran con las transacciones o se cifran por separado?

Porque cuando las transacciones especifican qué monedas están gastando, se refieren a ellas por el txid. Si los datos de la firma son parte del txid, los cambios en la firma (como la manipulación de terceros o la renuncia) invalidan las transacciones posteriores. Si las firmas se excluyen de esos txids, este problema no ocurre.