Explicaciones sobre el encadenamiento de transacciones

Estoy leyendo el artículo de Satoshi, y en la Sección 2. Transacciones , comienza diciendo:

Definimos una moneda electrónica como una cadena de firmas digitales. Cada propietario transfiere la moneda al siguiente firmando digitalmente un hash de la transacción anterior y la clave pública del próximo propietario y agregándolos al final de la moneda. Un beneficiario puede verificar las firmas para verificar la cadena de propiedad.

Luego hay un buen diagrama que muestra esto en el papel.Satoshi bitcoin paper Oct 2008, Sección 2

Entonces, efectivamente, si BTC0 es la transacción anterior, la nueva transacción es:

Kp(Propietario1)

hash := H(BTC0,Kp(Propietario1))

S( hash ,Ks(Propietario0))

dónde

  • Kp(Owner1) es la clave pública del destinatario (Owner1)

  • hash := H(BTC0,Kp(Owner1)) es el Hash de la transacción anterior junto con la clave de publicación del destinatario

y

  • S( hash ,Ks(Owner0)) es el hash calculado previamente, firmado con el remitente de la clave privada (Owner0)

Tengo un par de preguntas:

Aquí he indicado que la 'transacción anterior' es BTC0. ¿Es esta la transacción anterior para esa moneda o la transacción anterior en la cadena? Danielle Drainville sugiere que es "la transacción anterior en la que se usó esta moneda se codifica junto con la clave pública del destinatario" en su artículo ( An Analysis of the Bitcoin Electronic Cash System )

Si es así, ¿debe haber algún tipo de búsqueda de la transacción anterior primero?

Y, si entiendo correctamente, no hay 'Monedas' en su billetera... la billetera almacena la cadena de bloques, es decir, el registro de transacciones y su(s) clave(s) pub/pri. Cuando su billetera le muestra la cantidad de bitcoins que contiene, ¿es realmente el resultado de una búsqueda en la cadena de bloques?

¿Para qué no es suficiente tu reputación? Alguien puede incluir imágenes en línea por usted, siempre que proporcione la URL en alguna parte.
¡Finalmente logré fusionar mis cuentas!

Respuestas (1)

No entiendo completamente su pregunta, primero una reacción a su suposición.

De hecho, es para que su billetera no contenga monedas reales. Sin embargo, considere la distinción entre los términos billetera y cliente. Esta no es una distinción oficial, pero es útil para comprender los dos principios diferentes.

Un cliente de Bitcoin almacena la cadena de bloques completa. Cuando solicita información sobre una dirección o una transacción, puede inspeccionar la cadena de bloques y recuperar la información solicitada. Entonces, de hecho, los saldos se recuperan mediante una consulta a la cadena de bloques. La mayoría de los clientes mantienen un índice de todas las transacciones de sus direcciones para que estas consultas se puedan lograr de manera muy eficiente.

Una billetera a menudo se refiere al conjunto de claves privadas de sus propias direcciones. Para el cliente Bitcoin predeterminado, este es el archivo wallet.dat. Contiene una lista de las direcciones que posee y las claves privadas correspondientes que necesita para realizar transacciones con sus direcciones.

Sin embargo, el término billetera también se usa a menudo para un cliente de Bitcoin, por ejemplo, en la página de inicio de Bitcoin . Una advertencia aquí es que algunas de esas billeteras no almacenan la cadena de bloques completa, pero tienen otras técnicas para consultar implícitamente la cadena de bloques de otra manera. Este tipo de clientes se denominan clientes ligeros.


Ahora, lo que es una transacción, en principio, es solo entregar el control sobre un cierto valor en la cadena de bloques a otra dirección.

Para cada dirección hay cero o más transacciones que tienen la dirección como salida. Cuando no los envió a otra persona, se denominan bitcoins no gastados o salidas de transacciones no gastadas. La suma de esos componen el saldo de la dirección.

Cuando desee enviar estas monedas, o una parte de ellas (tenga en cuenta que no existe la noción de una moneda, sino solo un valor de la moneda que envía, que puede ser cualquier número decimal hasta la precisión de satoshi ), realiza una transacción en en el que reclama algunas de las salidas no gastadas para su dirección (como entradas para su transacción) y distribuye el valor que tienen entre otras direcciones (que son las salidas para su transacción). Por lo tanto, las salidas no gastadas de una dirección se pueden usar como entradas para una transacción.

Cuando firma la transacción y se verifica en un bloque, las salidas no gastadas ahora se gastan y las nuevas salidas no gastadas se han asignado a las direcciones que especificó en las salidas de transacción para la transacción.

Steven- Gracias. Su observación sobre la distinción entre una billetera y un cliente es interesante. Cuando hablé de una billetera, en realidad me estaba refiriendo al cliente. Según su definición, el cliente TIENE UNA billetera; la recogida de llaves. En mi opinión, el término billetera es un nombre más fácil de usar para el cliente, ya que lo relaciona con el equivalente del mundo real. Mi pregunta que no entendiste, tiene que ver con la 'transacción anterior' que tiene hash: ¿es la transacción anterior en la cadena o la transacción anterior de esa moneda? Comprender las entradas/salidas ayudará, sospecho.
La mayoría de las personas llaman monederos a los clientes, es por eso que la distinción no es oficialmente cierta, pero es útil comprender los diferentes principios. Intentaré explicar tu pregunta en la respuesta.
Como he leído la fuente en algunos clientes ahora (bitcoin, bitcoinj y libbitcoin), he aprendido que la billetera (wallet.dat, xxx.wallet o como la llame el cliente) es más que una colección de claves. y direcciones. Cada cliente implementa la billetera de manera diferente, pero este comentario de bitcoinj resume su propósito: "Una billetera almacena claves y un registro de transacciones que envían y reciben valor de esas claves. Al usarlas, puede crear nuevas transacciones que gastan lo registrado". transacciones, y esta es la operación fundamental del protocolo Bitcoin".