Para "devolverle el dinero a alguien", ¿debo pedirles una dirección de devolución?

Quiero escribir un código que acepte una transacción y luego "devuelva" una cierta cantidad al origen de la transacción.

Suponga que los usuarios utilizarán el cliente estándar. ¿Las transacciones tendrán una sola entrada o debo manejar la situación en la que una transacción tiene múltiples entradas?

¿Puedo simplemente elegir una de estas entradas y pagar esa entrada? Quiero evitar tener que solicitar a los usuarios que ingresen una dirección de pago de Bitcoin: es mucho más ordenado simplemente pagar a la misma dirección que usaron.

Respuestas (2)

Asumir que el usuario usa el cliente estándar, o de hecho cualquier cliente, es una suposición muy fuerte. Si el usuario está utilizando un servicio de billetera electrónica como Instawallet, con toda probabilidad el usuario no recuperará los fondos, serán retenidos por el operador y posiblemente acreditados a uno de sus otros clientes.

Incluso si las direcciones de entrada están controladas de alguna manera por el usuario, el pago a una de ellas puede causar confusión con respecto a la fuente del pago: parecerá que el pago fue por la dirección con la que se asoció originalmente. Si hay un cambio de dirección controlado por el usuario, se asocia únicamente con el pago que se le hizo a usted, por lo que existe la información para identificarlo, aunque es posible que el cliente no lo muestre correctamente.

Mmm. Entonces, ¿tengo que pedirle al usuario que proporcione una dirección de retorno? Esto apesta :(
Bueno eso depende. Puede crear un campo de dirección de retorno opcional y aclarar que si el usuario no está usando el cliente predeterminado (o sabe exactamente lo que está haciendo), debe completarlo. Sería una buena idea que los proveedores de billeteras electrónicas asocien las direcciones de cambio con el cliente de origen y, en un futuro ideal en el que sea razonable esperar que las billeteras electrónicas hagan esto, es seguro enviarlas a la dirección de cambio. Además, eWallets podría ofrecer la opción de enviar un pago enrutándolo primero a través de una dirección asociada con el cliente.

Como cualquier usuario puede recibir fácilmente Bitcoins con múltiples direcciones, las transacciones que envían pueden tener múltiples entradas. Hay un par de casos que deberías considerar:

  • Entrada única, salida única: caso fácil, envíe monedas de vuelta a la entrada (a menos que algún bromista extraiga monedas en su dirección, entonces es mejor quedárselas en lugar de enviarlas a una dirección no válida)
  • Cualquier cantidad de entradas, dos salidas: la segunda salida es probablemente donde el usuario ha enviado sus monedas restantes, también podría enviarlas allí (aunque primero debe explicárselo a los usuarios)
  • Entradas múltiples, salida única: probablemente debería proporcionar a los usuarios dos funcionalidades: enviar monedas a la primera entrada o enviar la misma cantidad de monedas obtenidas de cada entrada a cada una de ellas.
  • Múltiples entradas, múltiples salidas: probablemente debería funcionar como el caso anterior

En general, debe proporcionar a los usuarios diferentes funcionalidades, probablemente cada uno usando una dirección diferente para sus transacciones y ver cuáles se usan con más frecuencia.

La mayoría de los usuarios no sabrán nada sobre el tipo de transacción que están generando. No quiero complicarles la vida. ¿Las salidas siempre serán 1 o 2? ¿Cuándo recibiré un tx con más de 2 salidas de un usuario legítimo?
@ ripper234 Puede hacer que las opciones más complicadas sean menos accesibles, por ejemplo, colocándolas en "opciones avanzadas". Por lo que entiendo, las salidas generalmente serán 1 o 2 para el cliente estándar, pero alguien podría estar usando un cliente no estándar que le permite enviar monedas a varias direcciones a la vez. Por ahora, creo que solo aparecen en intercambios y grupos de minería, que probablemente no se usarán para enviarte monedas.
Bien, supondré que el tx tiene 1 o 2 salidas y elegiré una de las entradas arbitrariamente como mi dirección de pago.