Crear una transacción desde las direcciones A y B enviando a la dirección C

Relacionado: Usar bitcore para crear una transacción con dos direcciones y cambiar la dirección

Me gustaría crear una transacción desde las direcciones A y B enviando a la dirección C

En la pregunta anterior me confundo un poco (parece que está haciendo una transacción que envía desde las direcciones A y B a las direcciones C y D recibiendo cambio en la dirección E ) porque parece que lo está firmando con las dos direcciones de recepción.

Por lo general, cuando creo y firmo un tx con Bitcore , lo firmo con la clave privada de la dirección de envío, no con la dirección de recepción (en mi caso, la dirección de recepción sería un usuario que no conozco personalmente)

Los documentos de bitcore dicen:

Para enviar una transacción a una dirección multisig, la API es la misma que en el ejemplo anterior . Para gastar salidas que requieren varias firmas, el proceso necesita información adicional: las claves públicas de los firmantes que pueden desbloquear esa salida.

var multiSigTx = new Transaction()
.from(utxo, publicKeys, threshold)
.change(address)
.sign(myKeys);

var serialized = multiSigTx.toObject();

Las dos partes de esto que me confunden son:

  • Cotización Bitcore - Para enviar una transacción a una dirección multisig...

¿Es esto diferente de una dirección regular? Veo que falta el ejemplo.to(address, amount)

  • ¿Por qué Richard de la pregunta relacionada firma con las claves privadas de la dirección receptora?

Lógicamente, ¿mi acción deseada no debería verse así?:

var transaction=new Bitcore.Transaction()
.fee(fee)
.from([output_A,output_B])
.to(pubkey_C,satoshis-fee)
.change(address_A)                    //don't loose the change
.sign([privatekey_A,privatekey_B]);

output_A es de la dirección A y output_B es de la dirección B (ambas son mis direcciones)

Respuestas (1)

Tienes razón en cómo debería verse tu transacción. Sin embargo, te estás confundiendo ya que estás buscando el concepto equivocado.

No está enviando fondos a una dirección multigrado, es decir, una dirección compartida por varios usuarios en la que algunos de ellos deben firmar una transacción u orden para gastar fondos desde la dirección. Está (si lo he entendido bien) dispuesto a gastar fondos de dos direcciones diferentes ( Ay B) para enviar fondos a una tercera dirección: C.

Por lo tanto, lo que debe construir es una transacción con entradas de ambas direcciones Ay B, en la que cada entrada puede estar firmada por la dirección correspondiente de los dos últimos.

En mi ejemplo, la .fromfunción toma dos entradas. Escribí output_A,output_B como entradas porque pensaba que eran las salidas de la transacción anterior... ambos tenemos razón; ¡gracias!